PONTIFICIA UNIVERSIDAD JAVERIANA
Facultad de Ingeniería
Proyecto de Ingeniería Mecatrónica
Pre-informe 2
Parte Mecánica — Actuador Lineal Tipo Pistón
Estudiante: Juan Sebastian Zabala Miranda
Asignatura: Proyecto de Ingeniería Mecatrónica
Docente: Camilo Alberto Otálora Sánchez
Fecha: 22 de marzo de 2026
Bogotá, Colombia
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Índice
1. Descripción del sistema mecánico 3
2. Supuestos de diseño 3
3. Cálculo de la transmisión 3
3.1. Cargas estáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Cargas dinámicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. Par total y relación de reducción . . . . . . . . . . . . . . . . . . . . . 4
4. Geometría del mecanismo manivela-biela 5
5. Cálculo de ejes 5
5.1. Diámetro mínimo por torsión . . . . . . . . . . . . . . . . . . . . . . . 5
5.2. Verificación del pin de manivela . . . . . . . . . . . . . . . . . . . . . . 6
6. Selección de rodamientos 6
7. Cálculo y selección de guías lineales 6
7.1. Fuerza lateral sobre las guías . . . . . . . . . . . . . . . . . . . . . . . . 6
7.2. Opciones de guías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
8. Selección de acoples 7
8.1. Acople motor — eje rueda motriz . . . . . . . . . . . . . . . . . . . . . 7
8.2. Fijación de las ruedas al eje . . . . . . . . . . . . . . . . . . . . . . . . 7
8.3. Conexión de las bielas a los pines . . . . . . . . . . . . . . . . . . . . . 7
9. Resumen de componentes y materiales 8
[Link] de fabricación 8
10.1. Ruedas de manivela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
10.2. Ejes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
10.3. Bielas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
10.4. Carro deslizador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
10.5. Chasis / base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
[Link] 9
[Link] constructivos e imágenes del prototipo 10
12.1. Ensamble general del actuador . . . . . . . . . . . . . . . . . . . . . . . 10
12.2. Ruedas de manivela y biela de acoplamiento . . . . . . . . . . . . . . . 11
12.3. Biela del pistón y carro deslizador . . . . . . . . . . . . . . . . . . . . . 11
12.4. Sistema de guías lineales . . . . . . . . . . . . . . . . . . . . . . . . . . 12
12.5. Detalle del pin compartido (Pin B) . . . . . . . . . . . . . . . . . . . . 12
12.6. Fotografías del prototipo físico . . . . . . . . . . . . . . . . . . . . . . . 13
[Link] electrónica 15
1
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
13.1. Descripción general del sistema electrónico . . . . . . . . . . . . . . . . 15
13.2. Driver A4988 — características relevantes . . . . . . . . . . . . . . . . 15
13.3. Cálculo de la corriente máxima (VREF) . . . . . . . . . . . . . . . . . 16
13.4. Generador de señal seno y control de velocidad . . . . . . . . . . . . . . 16
13.5. Conexión A4988 — motor y microcontrolador . . . . . . . . . . . . . . 17
13.6. Conexión a sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
13.7. Condensadores de desacoplamiento . . . . . . . . . . . . . . . . . . . . 19
13.8. Diseño del PCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
13.9. Resumen del sistema electrónico . . . . . . . . . . . . . . . . . . . . . . 23
[Link] software 24
14.1. Entorno de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
14.2. Protocolo G-code implementado . . . . . . . . . . . . . . . . . . . . . . 24
14.3. Diagrama general del control . . . . . . . . . . . . . . . . . . . . . . . . 25
14.4. Esquema del programa en MPLAB X . . . . . . . . . . . . . . . . . . . 26
14.5. Descripción de rutinas básicas . . . . . . . . . . . . . . . . . . . . . . . 27
14.6. Perfil de velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
14.7. Diagrama de estados del firmware . . . . . . . . . . . . . . . . . . . . . 30
14.8. Resumen de rutinas implementadas . . . . . . . . . . . . . . . . . . . . 32
2
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
1. Descripción del sistema mecánico
El sistema diseñado es un actuador lineal tipo pistón basado en un mecanismo manivela-
biela inspirado en la transmisión de ruedas acopladas de locomotoras de vapor. El
objetivo es transformar el movimiento rotacional de un motor paso a paso en un des-
plazamiento lineal de 200 mm con una carga útil de 500 g y una repetitividad mejor a
0,1 mm.
El mecanismo consta de dos ruedas acopladas por una biela de sincronización, donde
el pin excéntrico de la segunda rueda comparte la conexión con la biela del pistón que
acciona el carro deslizador. Esto replica el principio de las ruedas motrices de locomo-
toras, donde el movimiento circular se convierte en movimiento alternativo lineal.
2. Supuestos de diseño
Cuadro 1: Parámetros y supuestos de diseño del sistema.
rowhdr Parámetro Símbolo Valor Justificación
Carga útil m 0,50 kg Peso de la pinza terminal
Gravedad estándar g 9,81 m/s2 Valor estándar
Recorrido Stroke 200 mm Requerimiento de la práctica
Radio de manivela r 100 mm r = Stroke/2
Tiempo de ciclo T 2,0 s Ciclo completo ida y vuelta
Velocidad del eje n 30 RPM 1 rev cada 2 s
Factor de seguridad SF 2,5 Incluye pérdidas y dinámica
Material ejes — AISI 1045 Acero de maquinaria
Material bielas — Al 6061-T6 Ligereza y rigidez
3. Cálculo de la transmisión
3.1 Cargas estáticas
La fuerza debida al peso de la carga útil es:
F = m · g = 0,50 × 9,81 = 4,905 N (3.1)
3
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
El par estático necesario en el eje de la manivela, cuando la fuerza actúa perpendicu-
larmente al radio (escenario más crítico):
τest = F · r = 4,905 × 0,10 = 0,4905 N·m (3.2)
3.2 Cargas dinámicas
La velocidad angular para completar un ciclo en T = 2,0 s:
2π 2π
ω= = = π ≈ 3,1416 rad/s (3.3)
T 2,0
La aceleración máxima del carro (modelo simplificado con λ = r/L ≈ 0,33):
amáx ≈ r ω 2 = 0,10 × (3,1416)2 = 0,987 m/s2 (3.4)
Fuerza de inercia y par dinámico:
Fin = m amáx = 0,50 × 0,987 = 0,4935 N (3.5)
τin = Fin · r = 0,4935 × 0,10 = 0,04935 N·m (3.6)
3.3 Par total y relación de reducción
Par total sin pérdidas mecánicas:
τtot = τest + τin = 0,4905 + 0,04935 = 0,5399 N·m (3.7)
Aplicando el factor de seguridad SF = 2,5:
τreq = τtot × SF = 0,5399 × 2,5 = 1,3497 N·m (3.8)
Con el motor seleccionado (42HB60F2-05B, τm = 0,60 N·m) y eficiencia η = 0,90, la
relación mínima de reducción requerida es:
τreq 1,3497
ief = = = 2,50 : 1 (3.9)
τm · η 0,60 × 0,90
Se recomienda seleccionar una reductora comercial de relación 3:1 o 4:1 para mayor
margen operativo.
4. Geometría del mecanismo manivela-biela
4
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Cuadro 2: Parámetros geométricos del mecanismo.
rowhdr Elemento Dimensión Criterio de diseño
Radio de manivela (r) 100 mm Stroke = 2r = 200 mm
Distancia entre ejes (D) 200 mm Diseño del chasis
Largo biela de acoplamiento (Lac ) 200 mm Lac = D (condición geométrica)
Largo biela del pistón (Lp ) 300 mm λ = r/L = 0,33
Diámetro pin A — rueda 1 ∅5 mm σ = 3,3 MPa ≪ 310 MPa
Diámetro pin B compartido — ∅8 mm Doble biela: acopl. + pistón
rueda 2
Condición geométrica de la biela de acoplamiento
Para que las dos ruedas giren sincronizadas sin trabar el mecanismo, la distancia entre
los pines excéntricos debe ser igual a la distancia entre los centros de los ejes:
Lacoplamiento = Dentre ejes = 200 mm (4.1)
Relación λ y calidad del movimiento
La relación λ = r/Lp = 100/300 = 0,3 determina la proximidad al movimiento armó-
nico puro. Con λ = 0,33:
Error de linealidad < 3 %
Ángulo máximo de la biela del pistón: αmáx = arcsin(0,33) ≈ 19,5◦
Fuerza lateral sobre las guías: moderada (calculada en §7)
5. Cálculo de ejes
5.1 Diámetro mínimo por torsión
Para un eje sólido bajo torsión pura, despejando el diámetro de la ecuación de esfuerzo
cortante:
16 T 16 × 1,3497
d3 = = = 1,719 × 10−7 m3 (5.1)
π τallow π × 40 × 106
1/3
dmı́n = 1,719 × 10−7 = 5,56 mm (5.2)
Considerando rigidez, fatiga y compatibilidad con rodamientos estándar, se selecciona:
deje = 10 mm (5.3)
5
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
5.2 Verificación del pin de manivela
Pin A (∅5 mm) — cortante:
Fpin 13,5
τpin = = = 0,69 MPa ≪ 40 MPa ✓ (5.4)
A π/4 × 0,0052
Pin A — flexión en voladizo (L = 3 mm):
32 M 32 × (13,5 × 0,003)
σflex = = = 3,3 MPa ≪ 310 MPa ✓ (5.5)
πd3 π × 0,0053
El pin B (∅8 mm) recibe carga combinada de dos bielas; su mayor sección implica
esfuerzos aún menores.
6. Selección de rodamientos
Para los ejes de ∅10 mm se selecciona el rodamiento estándar 6000-2RS:
Cuadro 3: Características del rodamiento seleccionado.
rowhdr Característica Valor
Modelo 6000-2RS
Diámetro interior 10 mm
Diámetro exterior 26 mm
Ancho 8 mm
Sellado Doble (2RS) — bajo mantenimiento
Cantidad por eje 2 unidades (uno a cada lado de la rueda)
7. Cálculo y selección de guías lineales
7.1 Fuerza lateral sobre las guías
Con αmáx = 19,5◦ la fuerza lateral sobre las guías es:
Flat = Ftotal tan αmáx = (4,905 + 0,4935) tan(19,5◦ ) = 5,40 × 0,354 = 1,91 N (7.1)
6
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
7.2 Opciones de guías
Cuadro 4: Comparativa de opciones de guías lineales.
rowhdr Opción Componente Precisión Aplicación
Económica (prototipo) Varilla ∅12 mm + LM12UU ∼0,1 mm Prototipo fun-
cional
Media precisión Riel MGN12 + bloque ∼0,05 mm Producción pe-
queña
Alta precisión HIWIN HGR15 + carro <0,02 mm Industria
Selección para el prototipo: varillas ∅12 mm con rodamientos LM12UU. La fuerza
lateral de 1,91 N es muy inferior a la capacidad dinámica de las LM12UU (≈130 N),
con un factor de seguridad de carga de 68. Se recomienda montar dos varillas paralelas
separadas al menos 30 mm.
8. Selección de acoples
8.1 Acople motor — eje rueda motriz
El eje del motor (42HB60F2-05B) tiene diámetro estándar de 5 mm. La conexión con el
eje principal de ∅10 mm se realiza mediante acople flexible tipo araña (jaw coupling):
Tolera leve desalineación radial y angular — recomendado para prototipos.
Par transmisible estándar para ∅5/∅10 mm: 1,5–3,0 N·m ≫ τreq = 1,35 N·m ✓
8.2 Fijación de las ruedas al eje
Tornillo prisionero M3: económico, adecuado para prototipo.
Llave y chavetero: mayor torque transmisible.
Ajuste por interferencia H7/p6: óptimo para posicionamiento repetible.
8.3 Conexión de las bielas a los pines
Las bielas se conectan a los pines excéntricos mediante ajuste deslizante H7/h6 con ani-
llo seeger de retención, permitiendo rotación libre en los extremos (junta de revolución
en cada extremo).
7
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
9. Resumen de componentes y materiales
Cuadro 5: Lista de componentes del actuador lineal.
rowhdr Componente Cant. Material / Modelo Observación
Rueda de manivela 2 Al 6061-T6 o PLA Fabricación propia
∅200 mm
Eje principal 2 AISI 1045, ∅10 mm Long. según chasis
Rodamiento 6000-2RS 4 Estándar 2 por eje
Biela de acoplamiento 1 Al 6061-T6, 200 mm Pin-a-pin
Biela del pistón 1 Al 6061-T6, 300 mm λ = 0,33
Pin A (∅5 mm) 1 AISI 1045 Rueda 1
Pin B compartido 1 AISI 1045 Rueda 2, doble biela
(∅8 mm)
Varilla lineal ∅12 mm 2 Acero templado Long. ≥ 300 mm
Rodamiento lineal 4 Estándar 2 por varilla
LM12UU
Carro deslizador 1 Al 6061-T6 o PLA Porta-pinza
Acople flexible ∅5/∅10 1 Tipo araña Motor → eje
Motor 42HB60F2-05B 1 NEMA 17 paso a paso 0,60 N·m retención
10. Proceso de fabricación
10.1 Ruedas de manivela
Material: aluminio 6061-T6 o impresión 3D PLA para el prototipo.
Operaciones: torneado del cubo central (∅10 mm H7), taladrado periférico para
pin excéntrico a r = 100 mm del centro.
Tolerancia de posición del pin: ±0,05 mm.
10.2 Ejes
Material: acero AISI 1045 trefilado, ∅10 mm.
Operaciones: corte a longitud, rectificado de zonas de rodamiento (h6).
8
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
10.3 Bielas
Material: perfil plano Al 6061-T6, sección 20 mm × 5 mm.
Operaciones: corte a longitud (200 mm y 300 mm), taladrado de agujeros extremos
∅5 mm y ∅8 mm con tolerancia H7.
10.4 Carro deslizador
Material: aluminio 6061-T6 o impresión 3D.
Operaciones: fresado de ranuras para LM12UU, taladrado de agujeros de fijación
de la pinza.
Distancia mínima entre varillas: 30 mm (resistencia al momento lateral).
10.5 Chasis / base
Material: perfil de aluminio tipo MakerBeam o madera sólida para prototipo.
Soportes de rodamiento impresos en 3D o mecanizados.
Distancia entre centros de ejes: 200 ± 0,3 mm.
11. Conclusiones
El motor 42HB60F2-05B (0,60 N·m) requiere una reducción mínima de 2,5:1. Se
recomienda reductora 3:1 o configurar micropasos en el driver.
El diámetro mínimo de eje calculado es 5,56 mm; se selecciona ∅10 mm por com-
patibilidad con el rodamiento 6000-2RS.
Los pines de manivela (∅5 y ∅8 mm) presentan márgenes de seguridad superiores
a 40× respecto al límite de fluencia del AISI 1045.
La biela de acoplamiento debe medir L = D = 200 mm para garantizar la sincro-
nización geométrica de las dos ruedas.
La biela del pistón de L = 300 mm (λ = 0,33) ofrece un buen equilibrio entre
tamaño compacto y calidad de movimiento, con αmáx = 19,5◦ y fuerza lateral de
1,91 N.
Las guías LM12UU sobre varillas ∅12 mm son suficientes para el prototipo, con
factor de seguridad de carga de 68.
9
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
12. Planos constructivos e imágenes del prototipo
Esta sección reúne los diagramas generados en SolidWorks y las fotografías del prototipo
físico. Para insertar una imagen basta con reemplazar el bloque \includegraphics
correspondiente con la ruta real del archivo.
12.1 Ensamble general del actuador
[Insertar aquí el diagrama de ensamble general desde SolidWorks]
Figura 1: Ensamble general del actuador lineal tipo pistón — vista isométrica.
10
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
12.2 Ruedas de manivela y biela de acoplamiento
[Insertar aquí el plano de las ruedas y la biela de acoplamiento
(L = 200 mm)]
Figura 2: Ruedas de manivela (∅200 mm, r = 100 mm) con biela de acoplamiento. Se
indican la posición del pin excéntrico y la distancia entre ejes D = 200 mm.
12.3 Biela del pistón y carro deslizador
[Insertar aquí el plano de la biela del pistón (L = 300 mm) y el carro
deslizador]
Figura 3: Biela del pistón (L = 300 mm, λ = 0,33) y carro deslizador con alojamientos
LM12UU.
11
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
12.4 Sistema de guías lineales
[Insertar aquí el plano de las varillas ∅12 mm y rodamientos LM12UU]
Figura 4: Detalle del sistema de guías: varillas ∅12 mm con rodamientos lineales LM12UU
montados en el carro. Separación mínima entre varillas: 30 mm.
12.5 Detalle del pin compartido (Pin B)
[Insertar aquí el detalle del pin B (∅8 mm) en la rueda 2]
Figura 5: Pin compartido B (∅8 mm) en la rueda 2: punto de convergencia de la biela de
acoplamiento y la biela del pistón.
12
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
12.6 Fotografías del prototipo físico
[Insertar foto del prototipo — vista frontal]
Figura 6: Prototipo físico del actuador lineal — vista frontal.
[Insertar foto del prototipo — detalle del mecanismo manivela-biela]
Figura 7: Detalle del mecanismo manivela-biela ensamblado.
13
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
[Insertar foto del prototipo — carro deslizador y guías]
Figura 8: Carro deslizador montado sobre las guías lineales ∅12 mm con rodamientos
LM12UU.
14
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
13. Parte electrónica
13.1 Descripción general del sistema electrónico
El sistema electrónico tiene como función recibir una señal de referencia de velocidad,
convertirla en pulsos de paso para el driver A4988, y que éste entregue la corriente
necesaria a las bobinas del motor paso a paso 42HB60F2-05B. La señal de referencia
utilizada es una onda seno, cuya frecuencia determina la velocidad de rotación del
motor: a mayor frecuencia de la señal seno, mayor cadencia de pulsos STEP y mayor
velocidad angular.
El flujo de señal es:
Generador de señal (seno) −→ Comparador/Schmitt −→ A4988 (STEP) −→
Motor 42HB60F2-05B
13.2 Driver A4988 — características relevantes
Cuadro 6: Parámetros eléctricos clave del A4988 (hoja de datos Allegro).
rowhdr Parámetro Símbolo Valor Observación
Tensión de carga (motor) VBB 8–35 V Se usa 12 V para el
motor
Tensión lógica VDD 3,0–5,5 V Compatible con 3,3
y 5V
Corriente de salida máx. IOU T ±2 A Motor requiere
2,0 A
Modos de micropaso MSx 1, 1/2, 1/4, 1/8, 1/16 Ver Tabla 7
Ancho mínimo pulso STEP tA 1 µs Mínimo tiempo en
alto
Tiempo de blanqueo tBLAN K ≈1 µs Protección anti-
rebote
Tiempo de apagado fijo tOF F ≈30 µs Con ROSC a VDD
Resistencia sense RS 0,1 Ω Ajustable con
VREF
Temperatura de shutdown TT SD 165 °C Con histéresis de
15 °C
15
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Cuadro 7: Tabla de verdad de micropasos — entradas MS1, MS2, MS3.
rowhdr MS1 MS2 MS3 Resolución Pasos por revolución
L L L Paso completo 200
H L L 1/2 paso 400
L H L 1/4 paso 800
H H L 1/8 paso 1 600
H H H 1/16 paso 3 200
13.3 Cálculo de la corriente máxima (VREF)
El A4988 limita la corriente de pico mediante la tensión de referencia VREF y la resis-
tencia de sense RS :
VREF
IT ripM AX = (13.1)
8 · RS
El motor 42HB60F2-05B tiene una corriente nominal de 2,0 A. Para no superar este
valor, usando RS = 0,1 Ω (resistencias estándar en módulos A4988 comerciales):
VREF = IT ripM AX × 8 × RS = 2,0 × 8 × 0,1 = 1,6 V (13.2)
En la práctica se ajusta VREF con un potenciómetro entre 0 y 1,6 V para regular la
corriente entre 0 y 2 A. Se recomienda comenzar con un valor conservador de VREF ≈
1,0 V (1,25 A) y aumentar hasta el torque requerido.
13.4 Generador de señal seno y control de velocidad
Principio de operación
La velocidad angular del motor está determinada por la frecuencia de los pulsos en
la entrada STEP del A4988. Un pulso de subida (LOW → HIGH) avanza el motor
exactamente un micropaso. Por lo tanto:
fST EP × 60
n [RPM] = (13.3)
Npasos
donde fST EP es la frecuencia de los pulsos STEP en Hz y Npasos es el número de pasos
por revolución según el modo de micropaso seleccionado.
Señal seno como referencia de velocidad
Se utiliza un generador de señal que produce una onda seno. Esta señal se convierte
en una secuencia de pulsos digitales mediante un disparador Schmitt (p. ej. 74HC14 o
16
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
el comparador interno de un microcontrolador). Cada cruce por cero ascendente de la
señal seno genera un pulso STEP. De este modo:
fST EP = fseno (13.4)
Para el requisito del sistema (n = 30 RPM, paso completo N = 200):
n × Npasos 30 × 200
fST EP = = = 100 Hz (13.5)
60 60
Con 1/16 de micropaso (N = 3 200):
30 × 3200
fST EP = = 1 600 Hz (13.6)
60
Cuadro 8: Frecuencia STEP requerida según modo de micropaso para n = 30 RPM.
rowhdr Modo Pasos/rev fST EP requerida Periodo STEP
Paso completo 200 100 Hz 10 ms
1/2 paso 400 200 Hz 5 ms
1/4 paso 800 400 Hz 2,5 ms
1/8 paso 1 600 800 Hz 1,25 ms
1/16 paso 3 200 1 600 Hz 625 µs
Modo seleccionado: 1/16 de micropaso (MS1=H, MS2=H, MS3=H) para maximi-
zar la suavidad del movimiento y cumplir la precisión ≤ 0,1 mm. La señal seno del
generador debe tener f = 1 600 Hz para n = 30 RPM.
13.5 Conexión A4988 — motor y microcontrolador
Pines de potencia
Cuadro 9: Conexiones de potencia del A4988.
rowhdr Pin A4988 Señal Valor Descripción
VBB1, VBB2 Vmotor 12 V Alimentación bobinas del motor
VDD Vlogic 5V Alimentación lógica del driver
GND / PAD GND 0V Tierra común
SENSE1, SENSE2 RS 0,1 Ω Resistencia de sense de corriente
OUT1A, OUT1B Bobina A — Conexión a bobina A del motor
OUT2A, OUT2B Bobina B — Conexión a bobina B del motor
17
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Pines de control (microcontrolador / generador)
Cuadro 10: Conexiones lógicas del A4988 al microcontrolador.
rowhdr Pin A4988 Señal Estado Función
STEP Pulso seno → Schmitt Oscilante Un flanco ↑ = un micropaso
DIR GPIO microcontrolador H/L Sentido de giro
MS1 VDD (H) HIGH 35.5cm1/16 micropaso:
MS1=H, MS2=H, MS3=H
MS2 VDD (H) HIGH
MS3 VDD (H) HIGH
ENABLE GND (L) LOW Habilitado permanente
RESET VDD (H) HIGH Sin reset (operación normal)
SLEEP VDD (H) HIGH Sin modo sleep
VREF Potenciómetro 1,0–1,6 V Ajuste de corriente máxima
ROSC VDD HIGH tOF F = 30 µs, decay automáti-
co
Conexión del motor paso a paso
El motor 42HB60F2-05B es bipolar de 4 hilos. La asignación de bobinas al A4988 es:
Cuadro 11: Conexión de bobinas del motor 42HB60F2-05B al A4988.
rowhdr Hilo motor Color Pin A4988 Bobina
A+ Negro (BLK) OUT1A Bobina A
A− Verde (GRN) OUT1B Bobina A
B+ Rojo (RED) OUT2A Bobina B
B− Azul (BLU) OUT2B Bobina B
13.6 Conexión a sensores
Para garantizar la repetitividad ≤ 0,1 mm se incorporan los siguientes sensores al sis-
tema:
18
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Cuadro 12: Sensores del sistema y su conexión al microcontrolador.
rowhdr Sensor Modelo Interfaz Función
Final de carrera inicio Microswitch NC GPIO (pull-up) Detecta
posición
de inicio
(homing)
Final de carrera fin Microswitch NC GPIO (pull-up) Límite de
recorrido
máximo
(200 mm)
Encoder óptico (opcional) LM393 + disco ranuras GPIO interrupts Verificación
de posi-
ción real
del carro
Los finales de carrera se conectan entre el pin GPIO del microcontrolador y GND, con
resistencia pull-up interna habilitada. Un contacto abierto (fallo o límite alcanzado)
genera un flanco descendente que el firmware interpreta como señal de parada o homing.
13.7 Condensadores de desacoplamiento
Los condensadores son críticos para el correcto funcionamiento del A4988 y para pro-
teger el driver de los picos de tensión de la conmutación de las bobinas:
Cuadro 13: Condensadores requeridos por el A4988 (según datasheet Allegro).
rowhdr Referencia Valor Ubicación Función
CV DD 0,22 µF cerámica VDD a GND, cerca del IC Desacoplamiento lógico
CV REG 0,22 µF cerámica VREG a GND Regulador interno
CCP 0,1 µF cerámica CP1 a CP2 Bomba de carga
CV CP 0,1 µF cerámica VCP a VBB Reservorio alta tensión
Cbulk 100 µF electrolítico VBB a GND, cerca pines Filtro picos inductivos
Nota importante: el condensador bulk de 100 µF en VBB es indispensable para
absorber los picos de tensión generados por la inductancia de las bobinas durante la
conmutación. Sin él, los picos pueden superar los 35 V y destruir el driver.
13.8 Diseño del PCB
19
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Consideraciones generales de layout
Siguiendo las directrices del datasheet del A4988 (sección Application Layout):
Plano de tierra continuo: usar cobre de 2 oz en la capa de tierra bajo el IC.
El pad expuesto del QFN debe soldarse directamente al plano de tierra con vías
térmicas de al menos 0,3 mm de diámetro.
Star ground: el punto de tierra única debe ubicarse directamente bajo el A4988,
conectando el pad térmico, GND lógico y GND de las resistencias de sense.
Condensadores de desacoplamiento: colocar CV DD y CV REG lo más cerca
posible de sus pines respectivos (< 3 mm). El condensador cerámico Cbulk_ceramic
debe estar más cerca del IC que el electrolítico.
Trazas de sense: las trazas entre SENSE1/SENSE2 y las resistencias RS de-
ben ser cortas (< 5 mm), anchas (mínimo 1 mm) y dirigirse directamente al star
ground sin pasar por otras componentes.
Trazas de potencia (OUT1x, OUT2x, VBB): cobre de 2 oz, ancho mínimo
2 mm para 2 A de corriente con ∆T < 10 °C.
Separación señal/potencia: rutar las trazas lógicas (STEP, DIR, MSx) en capa
distinta o por el lado opuesto de las trazas de potencia para evitar acoplamientos
inductivos.
Capas del PCB
Cuadro 14: Asignación de capas del PCB.
rowhdr Capa Uso Descripción
Top (2 oz) Potencia + señal A4988, componentes SMD, trazas VBB
y OUTx
Inner 1 (1 oz) Tierra Plano de tierra continuo, vías térmicas
Inner 2 (1 oz) Alimentación Plano VDD y VBB separados
Bottom (1 oz) Señal Trazas lógicas: STEP, DIR, MSx,
GPIO sensores
20
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Esquema de conexión simplificado
[Insertar aquí el esquemático del PCB: generador seno → Schmitt trigger →
A4988 → motor, con condensadores, resistencias de sense, finales de carrera y
microcontrolador]
Figura 9: Esquemático del sistema electrónico completo. Generador de señal seno,
acondicionamiento con disparador Schmitt, driver A4988, motor 42HB60F2-05B y sensores
de posición.
21
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
[Insertar aquí el layout del PCB: vista top y bottom con plano de tierra,
ubicación del A4988, condensadores de desacoplamiento, resistencias de sense
y conectores del motor]
Figura 10: Layout del PCB (vista superior). Se indican el pad térmico del A4988 con vías
térmicas, el star ground, los condensadores de desacoplamiento y las trazas de potencia de
2 oz.
22
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
13.9 Resumen del sistema electrónico
Cuadro 15: Lista de componentes electrónicos del sistema.
rowhdr Componente Cant. Valor / Modelo Función
Driver A4988 1 Allegro A4988 Control micropasos
motor
Generador de señal 1 Función seno, 0–2 kHz Referencia de veloci-
dad
Disparador Schmitt 1 74HC14 o equiv. Seno → pulsos digita-
les
Microcontrolador 1 Arduino / STM32 DIR, homing, lógica
Resistencia sense RS 2 0,1 Ω / 1 W Límite de corriente
Potenciómetro VREF 1 10 kΩ Ajuste corriente máx.
Condensador CV DD 1 0,22 µF cerám. Desacoplamiento lógi-
co
Condensador CV REG 1 0,22 µF cerám. Regulador interno
Condensador CCP 1 0,1 µF cerám. Bomba de carga
Condensador CV CP 1 0,1 µF cerám. Reservorio alta tensión
Condensador bulk 1 100 µF / 35 V electrolítico Filtro picos bobinas
CV BB
Final de carrera inicio 1 Microswitch NC Homing
Final de carrera fin 1 Microswitch NC Límite recorrido
Fuente 12 V 1 ≥3 A Alimentación motor
Fuente 5 V 1 ≥0,5 A Lógica A4988 + micro
23
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
14. Parte software
14.1 Entorno de desarrollo
El firmware del microcontrolador se desarrolla en MPLAB X IDE v6.3 (Microchip
Technology), utilizando el compilador XC8/XC16 según el microcontrolador selecciona-
do. La comunicación con el sistema de control externo se realiza mediante el protocolo
G-code enviado por puerto serial (UART), el mismo estándar utilizado en máquinas
CNC y sistemas de manufactura aditiva.
Cuadro 16: Herramientas de software utilizadas.
rowhdr Herramienta Versión Función
MPLAB X IDE 6.3 Entorno de desarrollo integrado
Compilador XC8/16 Última Compilación de firmware en C
UART / USB-Serial 115 200 baud Comunicación con PC / G-code
Terminal serie CoolTerm / PuTTY Envío de comandos G-code
14.2 Protocolo G-code implementado
El G-code es un lenguaje de control numérico estándar (ISO 6983). Cada línea enviada
por UART representa un comando que el microcontrolador parsea e interpreta para
controlar el actuador. Los comandos implementados son:
24
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Cuadro 17: Comandos G-code implementados para el actuador lineal.
rowhdr Comando Sintaxis Descripción
G0 G0 X<mm> Movimiento rápido a posición absoluta en
mm. Sin control de velocidad.
G1 G1 X<mm>F<mm/min> Movimiento lineal a posición absoluta con
velocidad F en mm/min.
G28 G28 Homing: mueve el carro hasta el final de
carrera de inicio y pone X = 0.
G90 G90 Selecciona modo de coordenadas absolu-
tas (referencia al origen).
G91 G91 Selecciona modo de coordenadas relati-
vas (incrementales).
M0 M0 Parada incondicional. Deshabilita el dri-
ver (ENABLE = HIGH).
M3 M3 S<Hz> Activa el generador de pasos con frecuen-
cia S (Hz) en sentido positivo.
M4 M4 S<Hz> Activa el generador de pasos con frecuen-
cia S en sentido negativo.
M17 M17 Habilita el driver (ENABLE = LOW),
mantiene el motor energizado.
M18 M18 Deshabilita el driver (ENABLE =
HIGH), motor sin par de retención.
M114 M114 Reporta la posición actual X en mm por
UART (10 veces/segundo si activo).
M503 M503 Reporta la configuración actual: veloci-
dad, micropasos, posición.
Ejemplos de secuencia de comandos:
G28 ; Homing — va al inicio, X = 0
G90 ; Modo absoluto
G1 X100 F300 ; Mueve a 100 mm a 300 mm/min
G1 X200 F300 ; Mueve a 200 mm (fin del recorrido)
G1 X0 F600 ; Regresa al inicio a 600 mm/min
M114 ; Reporta posicion actual
M18 ; Deshabilita motor
14.3 Diagrama general del control
El esquema de control del sistema sigue el siguiente flujo principal:
25
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
[Insertar aquí el diagrama de flujo general del programa: Inicio →
Inicialización → Homing → Espera de comando UART → Parser G-code →
Ejecución de movimiento / reporte de posición → retorno a espera]
Figura 11: Diagrama general del programa en el microcontrolador (MPLAB X IDE v6.3).
El bucle principal espera comandos G-code por UART, los parsea y despacha a las rutinas
correspondientes.
Los tres bloques funcionales principales del programa son:
1. Inicialización y homing: configura periféricos, realiza homing automático y
establece el origen X = 0.
2. Bucle principal (parser G-code): lee la UART, acumula caracteres hasta
recibir \n, parsea el comando y lo despacha.
3. Reporte de posición en tiempo real: interrupcción periódica cada 100 ms
que envía la posición actual por UART (10 Hz).
14.4 Esquema del programa en MPLAB X
Estructura de archivos del proyecto
actuador_lineal.X/
main.c ; Bucle principal, inicializacion, parser G-code
stepper.c / .h ; Control de pasos: step, dir, enable, posicion
uart.c / .h ; Recepcion/transmision UART, buffer circular
26
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
gcode.c / .h ; Parser de comandos G-code y tabla de dispatch
homing.c / .h ; Rutina de homing con final de carrera
timer.c / .h ; Timer para generacion de pulsos STEP y reporte
config.h ; Constantes: pasos/mm, limites, baudrate
Constantes de configuración (config.h)
#define STEPS_PER_MM 16.0f // 1/16 micropaso: 3200 pasos/rev / 200 mm
#define MAX_TRAVEL_MM 200.0f // Recorrido maximo
#define MAX_SPEED_MM_S 100.0f // Velocidad maxima (100 mm/s = 6000 mm/min)
#define HOMING_SPEED_MM_S 10.0f // Velocidad de homing
#define UART_BAUDRATE 115200 // Baudrate UART
#define REPORT_HZ 10 // Frecuencia de reporte de posicion
El valor STEPS_PER_MM se calcula como:
Npasos/rev 3200 pasos
steps/mm = = = 16 pasos/mm (14.1)
Stroke 200 mm
14.5 Descripción de rutinas básicas
Rutina 1 — Inicialización (init_system)
Configura todos los periféricos del microcontrolador al arranque:
Configura pines GPIO: STEP (salida), DIR (salida), ENABLE (salida, inicial-
mente HIGH — driver deshabilitado), ENDSTOP_MIN e ENDSTOP_MAX
(entradas con pull-up).
Inicializa UART a 115 200 baud, 8N1, con interrupción de recepción.
Configura Timer1 (generación de pulsos STEP) con preescaler apropiado.
Configura Timer2 (reporte de posición a 10 Hz).
Inicializa buffer circular de recepción UART y variables de estado.
Rutina 2 — Homing (do_homing)
void do_homing(void) {
set_direction(DIR_NEGATIVE); // Hacia el endstop de inicio
enable_driver(); // ENABLE = LOW
set_speed(HOMING_SPEED_MM_S); // Velocidad lenta
while (!endstop_min_triggered()) { // Avanza hasta tocar el endstop
step_pulse();
}
current_position_mm = 0.0f; // Origen = 0
move_to_mm(2.0f, HOMING_SPEED_MM_S); // Retrocede 2 mm (backoff)
current_position_mm = 0.0f; // Re-define origen
}
27
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
Rutina 3 — Generación de pulsos STEP (Timer1 ISR)
El Timer1 genera interrupciones a la frecuencia fST EP calculada a partir de la velocidad
solicitada:
fST EP = v [mm/s] × STEPS_PER_MM (14.2)
void __interrupt() Timer1_ISR(void) {
if (steps_remaining > 0) {
STEP_PIN = 1;
__delay_us(2); // Pulso minimo >= 1 us (datasheet A4988)
STEP_PIN = 0;
steps_remaining--;
current_position_steps += direction;
} else {
T1CONbits.TMR1ON = 0; // Detiene el timer
motion_complete = 1; // Bandera para el bucle principal
}
TMR1IF = 0; // Limpia bandera de interrupcion
}
Rutina 4 — Parser G-code (parse_gcode)
void parse_gcode(char *line) {
float x_val = NAN, f_val = NAN, s_val = NAN;
int cmd_num = -1;
char cmd_letter = 0;
// Extrae letra de comando y numero
sscanf(line, " %c%d", &cmd_letter, &cmd_num);
// Extrae parametros X, F, S si existen
extract_param(line, ’X’, &x_val);
extract_param(line, ’F’, &f_val);
extract_param(line, ’S’, &s_val);
if (cmd_letter == ’G’) {
switch (cmd_num) {
case 0: move_rapid(x_val); break;
case 1: move_linear(x_val, f_val / 60.0f); break; // F en mm/min
case 28: do_homing(); break;
case 90: coord_mode = ABSOLUTE; break;
case 91: coord_mode = RELATIVE; break;
}
} else if (cmd_letter == ’M’) {
switch (cmd_num) {
case 0: emergency_stop(); break;
28
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
case 17: enable_driver(); break;
case 18: disable_driver(); break;
case 114: report_position(); break;
case 503: report_config(); break;
}
}
uart_send("ok\n"); // Confirma recepcion de comando
}
Rutina 5 — Reporte de posición (Timer2 ISR)
Cada 100 ms (10 Hz según el requerimiento de la práctica) se envía automáticamente
la posición por UART:
void Timer2_ISR(void) {
float pos_mm = (float)current_position_steps / STEPS_PER_MM;
uart_printf("X:%.3f\n", pos_mm); // Ej: "X:127.500"
TMR2IF = 0;
}
Rutina 6 — Movimiento lineal (move_linear)
Calcula el número de pasos necesarios y configura el Timer1:
void move_linear(float target_mm, float speed_mm_s) {
// Clampea al rango valido [0, MAX_TRAVEL_MM]
target_mm = clamp(target_mm, 0.0f, MAX_TRAVEL_MM);
float delta_mm = (coord_mode == ABSOLUTE)
? target_mm - current_position_mm
: target_mm;
// Configura direccion
set_direction(delta_mm >= 0 ? DIR_POSITIVE : DIR_NEGATIVE);
// Calcula pasos y frecuencia
steps_remaining = (uint32_t)(fabsf(delta_mm) * STEPS_PER_MM);
uint32_t timer_period = (uint32_t)(F_CPU / (speed_mm_s * STEPS_PER_MM));
set_timer1_period(timer_period);
// Arranca el timer y espera completion
T1CONbits.TMR1ON = 1;
while (!motion_complete);
motion_complete = 0;
current_position_mm = target_mm;
}
29
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
14.6 Perfil de velocidad
El sistema implementa un perfil de velocidad trapezoidal para evitar la pérdida de
pasos por aceleración brusca. Los parámetros del perfil son configurables por G-code
mediante el comando M503:
Cuadro 18: Parámetros del perfil de velocidad trapezoidal.
rowhdr Parámetro Símbolo Valor por defecto Descripción
Velocidad máxima vmax 100 mm/s Velocidad de crucero
Aceleración a 500 mm/s2 Rampa de aceleración
Velocidad mínima vmin 1 mm/s Velocidad de arranque
Velocidad de homing vhome 10 mm/s Velocidad durante homing
La frecuencia de STEP durante la aceleración varía linealmente entre fmin = vmin ×
STEPS_PER_MM y fmax = vmax × STEPS_PER_MM:
(fmax − fmin )
fST EP (t) = fmin + ·t 0 ≤ t ≤ tacel (14.3)
tacel
donde el tiempo de aceleración es:
vmax − vmin 100 − 1
tacel = = = 0,198 s (14.4)
a 500
14.7 Diagrama de estados del firmware
El firmware opera como una máquina de estados finitos con los siguientes estados:
Cuadro 19: Estados de la máquina de estados del firmware.
rowhdr Estado Nombre Descripción
INIT Inicialización Configuración de periféricos al arranque.
Transición automática a HOMING.
HOMING Búsqueda de origen Mueve hacia endstop mínimo. Al dispararse:
X = 0, transición a IDLE.
IDLE En espera Espera comando UART. Motor habilitado,
sin movimiento. Reporta posición.
MOVING En movimiento Ejecuta el perfil de velocidad. Al completar
pasos: transición a IDLE.
ERROR Error Endstop activado fuera de homing, sobretem-
peratura o fallo del driver. Motor deshabili-
tado. Requiere G28 o reset para salir.
30
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
[Insertar aquí el diagrama de estados: INIT → HOMING → IDLE ↔
MOVING, con transición a ERROR desde cualquier estado por fallo de
endstop o sobretemperatura]
Figura 12: Diagrama de estados finitos del firmware implementado en MPLAB X IDE
v6.3.
31
Pre-informe 2 — Parte Mecánica J. S. Zabala Miranda
14.8 Resumen de rutinas implementadas
Cuadro 20: Resumen de rutinas del firmware y su función.
rowhdr Rutina Archivo Descripción
init_system() main.c Configura GPIO, UART, Timer1/2, interrupcio-
nes y variables.
do_homing() homing.c Mueve hasta endstop mínimo, define X = 0,
retrocede 2 mm.
Timer1_ISR() timer.c ISR de generación de pulsos STEP con conteo
de pasos.
Timer2_ISR() timer.c ISR de reporte de posición por UART a 10 Hz.
UART_RX_ISR() uart.c ISR de recepción UART; acumula caracteres en
buffer circular.
parse_gcode() gcode.c Parsea la línea G-code recibida y despacha al
comando correcto.
move_linear() stepper.c Calcula pasos, configura dirección y arranca Ti-
mer1.
move_rapid() stepper.c Igual que move_linear a velocidad máxima.
set_speed() stepper.c Calcula el periodo del Timer1 a partir de la ve-
locidad en mm/s.
report_position() gcode.c Envía X:<valor> por UART en respuesta a
M114.
emergency_stop() stepper.c Detiene Timer1, deshabilita driver, pone estado
ERROR.
enable_driver() stepper.c Pone ENABLE = LOW (driver activo, motor
energizado).
disable_driver() stepper.c Pone ENABLE = HIGH (driver inactivo, sin par
de retención).
32