sistema que tienes: rodamiento 608ZZ + NEMA17 con caja planetaria 5:1 + hub hecho a medida + TMC2209 (UART) + 2 finales de carrera. Incluye los cálculos exactos (grados / pasos / torque), el cableado esencial, comportamiento de software y checklist de puesta en marcha.
1 — Datos físicos básicos (tu caso)
-
Masa de la pantalla: 0,53 kg.
-
Dimensiones aproximadas: 280 × 210 × 55 mm.
-
Asunción (peor caso): eje en el borde → distancia centro de masa al eje ≈ 0,14 m (media del lado largo).
-
Rodamiento elegido: 608ZZ (8 × 22 × 7 mm).
-
Motor comprado: NEMA17 + caja planetaria 5:1 (ver nota de ratio más abajo).
-
Driver: TMC2209 v1.3 en UART.
-
Microcontrolador: Arduino Pro Micro (USB-Serial para RetroBat).
-
Finales de carrera: 2 (HOME = 0°; VERT = 90°).
2 — Cálculo del par gravitatorio (número exacto)
Queremos saber el par que debe sostener el eje si la pantalla está anclada por el borde.
-
Fuerza debida a la gravedad:
-
m = 0,53 kg
-
g = 9,81 m/s²
-
F = m × g = 0,53 × 9,81 =
0,53 × 9,81 → hago el producto paso a paso:
9,81 × 0,5 = 4,905
9,81 × 0,03 = 0,2943
suma = 4,905 + 0,2943 = 5,1993 N -
F = 5,1993 N
-
-
Par = F × r = 5,1993 × 0,14 =
-
5,1993 × 0,1 = 0,51993
-
5,1993 × 0,04 = 0,207972
-
suma = 0,51993 + 0,207972 = 0,727902 N·m
-
→ Par gravitatorio ≈ 0,7279 N·m (≈ 0,73 N·m).
Regla de diseño: usa factor de seguridad ×2 → objetivo de diseño ≈ ≥ 1,5 N·m en salida del reductor.
3 — Par disponible con NEMA17 + planetaria 5:1
-
Supongamos torque nominal sin reductor del NEMA17 ≈ 0,52 N·m (modelo típico 17HS19).
-
Si la ratio nominal real es 5.18:1 (algunos PG5 son 5.18):
-
Par salida ≈ 0,52 × 5,18 =
0,52 × 5 = 2,60
0,52 × 0,18 = 0,0936
suma = 2,60 + 0,0936 = 2,6936 N·m
-
-
Si la ratio fuera exactamente 5:1:
-
Par salida ≈ 0,52 × 5 = 2,6 N·m
-
→ Resultado: con la planetaria tienes ≈ 2,6–2,69 N·m en salida, claramente por encima del objetivo 1,5 N·m. Holgura amplia.
Conclusión: la caja planetaria es sobredimensionada para seguridad y para compensar pérdidas/perfil dinámico — perfecto.
4 — Pasos por 90° (microstepping y ratio)
Necesitas saber cuántos pulsos STEP para mover 0°→90°.
Variables base:
-
Motor: 200 pasos / rev (1,8°/paso).
-
Microstepping elegido: 1/16 (configurado por UART en TMC2209).
-
Gearbox ratio: puede ser 5:1 o 5.18:1 — usa el número que indique tu caja (marca).
Cálculo A — si ratio = 5.18:
-
Pasos motor por rev = 200
-
Microsteps por rev motor = 200 × 16 = 3200
-
Pasos por 1 rev salida = 3200 × 5,18 =
3200 × 5 = 16000
3200 × 0,18 = 576
suma = 16000 + 576 = 16576 pasos por 360° salida -
Pasos por 90° = 16576 / 4 = 4144 pasos
Cálculo B — si ratio = 5.00:
-
200 × 16 = 3200
-
3200 × 5 = 16000 pasos por 360° salida
-
Pasos por 90° = 16000 / 4 = 4000 pasos
Conclusión práctica:
-
Si tu caja es 5.18:1 → usa STEPS_90 = 4144.
-
Si es 5:1 → usa STEPS_90 = 4000.
(Confirma la relación exacta serigrafiada en la caja para elegir el número correcto en firmware.)
5 — Velocidad y temporización (ejemplos)
Si quieres que el giro dure 1,5 s:
-
Para 4144 pasos → pasos/s = 4144 / 1,5 = ≈ 2762,67 pasos/s.
-
Para 4000 pasos → pasos/s = 4000 / 1,5 = ≈ 2666,67 pasos/s.
Con microstepping 1/16 y TMC2209 en StealthChop esto es razonable; empieza por 1.5–2 s y ajusta.
Recomendación: hacer rampa de aceleración (accel) en firmware para evitar pérdidas de pasos; usa AccelStepper (Arduino) o implementa rampas en tu loop.
6 — Hardware y cableado esencial (resumen)
Piezas principales
-
NEMA17 + caja planetaria 5:1 (ya comprado).
-
Rodamiento 608ZZ (ya comprado).
-
Hub/disco con asiento para 608 (impreso o comprado).
-
TMC2209 v1.3 (UART).
-
Arduino Pro Micro (USB-Serial).
-
Fuente 12 V (2 A recomendada).
-
2 finales de carrera (micro-switch) para 0° y 90°.
-
Cables, tornillería, acoplamiento eje → hub.
Wiring básico (propuesto):
-
VMOT (TMC) → +12V
-
GND (TMC) ↔ GND (Fuente) ↔ GND (Pro Micro)
-
VIO (TMC) → VCC (Pro Micro 5 V) ó 3.3V si usas lógica 3.3V (ajustar)
-
STEP (TMC) → pin STEP (Pro Micro)
-
DIR (TMC) → pin DIR (Pro Micro)
-
EN (TMC) → pin EN (Pro Micro) opcional
-
PDN_UART (TMC TX/RX pins) ↔ Pro Micro TX/RX (con resistor 1 kΩ en la línea TX→PDN_UART si recomienda el módulo)
-
ENDSTOP_HOME → pin input pullup (ej. D7)
-
ENDSTOP_90 → pin input pullup (ej. D6)
(Ajusta pines concretos según sketch que cargues.)
7 — Software: comportamiento y lógica clave
Comandos USB (por puerto serie):
-
ROTATE_VoVERTICAL→ mover a 90° -
ROTATE_HoHORIZONTAL→ mover a 0° -
HOME→ hacer homing
Algoritmo recomendado en MCU:
-
Al encender → ejecutar homing: moverse lentamente hacia HOME hasta pulsar switch; hacer back-off y volver despacio para homing desde la misma dirección (compensar backlash). Fijar
pos_actual = 0. -
Al recibir
ROTATE_V:-
Si
pos_actual == 1→ no hacer nada. -
Si
pos_actual == 0→ realizar movimiento aSTEPS_90con rampa y reduce velocidad al final; parar si se activa final 90. Actualizarpos_actual = 1.
-
-
Al recibir
ROTATE_H: análogo hacia 0. -
Si se detecta final de carrera inesperado durante movimiento → detener de inmediato y re-homing si hace falta.
-
Opcional: guardar posición en EEPROM al cambiar (por si reinicio).
Ajustes TMC2209 (por UART):
-
microsteps(16) + interpolate(true) (interpolación a 256)
-
en_spreadCycle(false) para StealthChop quieto si quieres silencio
-
corriente RMS inicial: empieza por ~70–80% del nominal del motor (ver nota Vref/calibración si no usas UART para corriente).
8 — Homing & backlash (práctica)
-
Homing desde misma dirección reduce efecto backlash de la planetaria.
-
Procedimiento: moverse a velocidad baja hasta detectar HOME; retroceder 20–40 micropasos; acercarse de nuevo a baja velocidad hasta contacto. Marcar 0.
-
Para la posición 90°, usar final de carrera para confirmar. No confiar sólo en conteo de pasos (la final añade robustez).
9 — Seguridad y recomendaciones prácticas
-
Rodamiento 608 debe quedar fijo en el soporte (su pista exterior atornillada a la estructura). El eje gira dentro de la pista interior.
-
Usa hub metálico o impreso en PETG/ASA reforzado; si imprimes en PLA refuerza con tornillos y epoxy.
-
Añade amortiguador de goma en toques a finales para evitar impacto.
-
Comprueba temperatura del driver y motor tras 1–2 minutos de uso; si están calientes reduce corriente.
-
Poner un interruptor maestro que corte 12 V para mantenimiento.
-
Si quieres que la pantalla no pueda caer con pérdida de energía, añade freno mecánico o usa worm gear (no imprescindible con planetaria, pero si quieres seguridad absoluta).
10 — Ejemplo rápido de parámetros concretos a poner en firmware
-
MICROSTEP = 16(por UART) -
GEAR_RATIO = 5.18(confirma en tu caja) -
STEPS_90 = int(200 * MICROSTEP * GEAR_RATIO / 4)→ si GEAR=5.18 →STEPS_90 = 4144 -
STEP_DELAYajustable para velocidad: empieza condelayMicroseconds(900)(≈1100 pasos/s por pulsos; ajustar) — mejor usar librería AccelStepper y fijarsetMaxSpeed(3000)ysetAcceleration(2500). -
Curriente TMC2209:
rms_current≈ 0.8 A (ajusta según motor). Con TMCStepper en Arduino:driver.rms_current(800);
11 — Checklist de puesta en marcha (orden práctico)
-
Monta hub + rodamiento 608 en el soporte y fija la pantalla provisionalmente (prueba con cinta).
-
Monta NEMA17+PG5 al chasis; acopla eje con hub; aprieta grub screw.
-
Conecta TMC2209 y Pro Micro (GND común). No pongas la pantalla aún.
-
Ajusta corriente inicial baja en el driver por UART o Vref seguro.
-
Prueba homing sin carga (solo placa trasera). Ajusta dirección de endstop si es necesario.
-
Prueba movimiento 90° a baja velocidad (2–3 s). Observa vibraciones/pérdida de pasos.
-
Monta la pantalla definitivamente con epoxi estructural (Araldite) o con tornillos si la carcasa lo permite. Deja curar.
-
Prueba con la pantalla montada: 10 ciclos 0°↔90°. Verifica temperatura motor/driver.
-
Integra con RetroBat: script llama
rotate.bat ROTATE_Vantes de lanzar, yrotate.bat ROTATE_Hal salir. -
Opcional: registrar eventos y fallback (si final no detectado en X segundos → stop + rehome).
SrRubio
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.