Repository navigation
Probar la rampa de aceleracion de los steppers (perdida de pasos) #19
Description
Activity
Revisión del diagnóstico: el par disponible está muy por debajo del nominal
Observación nueva en banco: aplicando carga manual moderada el motor pierde
sincronismo, acompañado de vibración acústica durante el movimiento.Ese comportamiento no es compatible con un problema de perfil de aceleración.
Par teórico disponible en el eje de salida:3.1 N·m (57HS112 a 4.2 A) × 80 (NMRV030) × ~0.45 (rendimiento del husillo)
≈ 110 N·mEquivalente a ~37 kg de fuerza a 30 cm del eje.
Si una carga manual provoca pérdida de sincronismo, el par efectivo es un orden
de magnitud inferior al nominal. La rampa de aceleración sigue siendo necesaria
—el arranque escalón era un defecto real— pero no explica esta observación.Nuevo procedimiento:
test/target/test_par_stepper(commit 0eca362)Adaptado a la configuración disponible en banco: un único motor, sin encoder.
El procedimiento A/B descrito en la issue no es aplicable, ya que se apoyaba en
la medida angular del AS5600.Ensayo 1 —
r, par de retención (ejecutar primero)Excita el motor en reposo, sin tren de pulsos, durante 15 s. Se aplica par
resistente manual sobre el brazo.Es el ensayo discriminante: separa las dos familias de causa en una sola medida.
Resultado Interpretación No se consigue desplazar el eje Hay par disponible → la causa es dinámica → ensayo 2 El eje cede con carga manual No se está entregando corriente al motor → causa eléctrica → ver dEnsayo 2 —
v, barrido de velocidadSecuencia de 25, 50, 100, 200, 417, 800 y 1602 pasos/s, 4 s por escalón,
aplicando carga manual en cada uno.- Par adecuado en unos escalones e insuficiente en otros, con incremento de
vibración en los escalones deficientes → resonancia de banda media,
habitual en medio paso. Corrección: aumentar la resolución de micropaso
(SW5–SW8) de 400 a 1600 pasos/vuelta y reajustarSEMIPERIODO_STEP_USen
config.hpara conservar la velocidad angular del brazo. - Par insuficiente en todos los escalones → causa eléctrica (corriente de
fase o conexionado).
Registrar en qué escalones el motor mantiene el sincronismo y en cuáles no.
Ensayo 3 —
i, ida y vueltaN pasos en un sentido y N en sentido contrario, 5 ciclos, contra una referencia
física (marca en brazo y chasis). Sin pérdida de pasos el eje retorna siempre a
la referencia; la desviación acumulada cuantifica los pasos perdidos. Permite
medir sin encoder.Verificación previa: configuración del DM542
El comando
dimprime la tabla. Se reproduce aquí por ser la comprobación de
mayor rendimiento inmediato:SW1 SW2 SW3 Corriente de pico / reposo ON ON ON 1.00 A / 0.71 OFF ON ON 1.46 A / 1.04 ON OFF ON 1.91 A / 1.36 OFF OFF ON 2.37 A / 1.69 ON ON OFF 2.84 A / 2.03 OFF ON OFF 3.31 A / 2.36 ON OFF OFF 3.76 A / 2.69 OFF OFF OFF 4.20 A / 3.00 (máximo) El 57HS112 tiene una corriente nominal de 4.2 A, por lo que la configuración
correcta es SW1–SW3 en OFF. Cualquier otra posición limita el par disponible
y podría explicar por sí sola el comportamiento observado.SW4fija la corriente en reposo: OFF = 50 % de la dinámica (valor por defecto),
ON = 100 %. Si el brazo cede al detener el movimiento, conviene ponerlo en ON,
asumiendo mayor disipación térmica.Verificaciones adicionales si el par de retención resulta insuficiente
- Emparejamiento de fases. Los cuatro conductores del motor corresponden a
dos bobinados (A+/A− y B+/B−). Un emparejamiento incorrecto produce vibración
y una reducción drástica del par, compatible con lo observado. Con el motor
desconectado, verificar con polímetro: los conductores de un mismo bobinado
presentan unos pocos ohmios entre sí y circuito abierto frente a los del otro. - Tensión de alimentación. Rango admisible del DM542: 20–50 V. A mayor
tensión, mayor par disponible en movimiento. Medir en bornes del driver. - Capacidad de la fuente. 4.2 A por motor. Una fuente limitada en corriente
impide alcanzar el par nominal aunque la configuración de DIP sea correcta.
Datos a registrar
- Ensayo 1: ¿cede el eje con carga manual? SÍ / NO (dato prioritario)
- Ensayo 2: escalones de velocidad en los que mantiene y pierde sincronismo
- Posición de SW1–SW4 y de la resolución de micropaso (SW5–SW8)
- Tensión medida en bornes del driver
- Ensayo 3: desviación acumulada tras 5 ciclos
Con esos datos se podrá determinar si procede reconfigurar los DIP, revisar el
conexionado de fases, aumentar la resolución de micropaso, o evaluar una
solución de lazo cerrado.- Par adecuado en unos escalones e insuficiente en otros, con incremento de
- added a commit that references this issue
on Sep 27, 2026
Contexto
Los motores paso a paso de elevación pierden pasos al subir las orugas. La
sospecha inicial era falta de par, pero los números dicen que no:
El DM542 ya cubre la corriente nominal completa del motor, así que un driver
más grande (DM556, DM860) no aportaría par: solo permitiría inyectar más
corriente de la que el motor aguanta. Y con la reductora NMRV030 1:80 hay
~110 N·m en el eje de salida contando el ~45 % de rendimiento del husillo, que
es de sobra para levantar un brazo.
O sea: no es falta de fuerza, es dinámica de arranque.
Qué se ha encontrado en el firmware
Dos causas, las dos en el arranque del movimiento:
steppers_comando()activaba el motor yla ISR empezaba inmediatamente a 417 pasos/s. Con la inercia del brazo
reflejada a través del 1:80, pedir velocidad plena desde parado es la causa
de manual de que un paso a paso se cale.
asíncrona a los pulsos. Si esa escritura cae justo en un flanco de STEP, el
DM542 puede dar un paso hacia el lado contrario. El DM542 pide DIR estable
antes del pulso.
Qué se ha cambiado (commit 52bf987)
TICK_ISR_US= 50 µs) y cada motorcuenta ticks hasta su propio semiperiodo, así que los cuatro pueden ir a
velocidades distintas con un solo timer.
SEMIPERIODO_ARRANQUE_US(4800 µs) y acelera hastaSEMIPERIODO_STEP_US(1200 µs) restandoRAMPA_DECREMENTO_TICKSpor pulso:unos 0.2 s de rampa.
primer pulso. La rampa se rearma en cada cambio de sentido.
test_steppersgana el comandorpara activar y desactivar la rampa,para poder comparar A/B con el mismo motor.
Estado: sin verificar en hardware. Compila y pasa los tests de lógica
(66/66), pero el efecto sobre la pérdida de pasos está por medir.
Qué hay que probar
1. Comparación A/B de la rampa
Monitor serie a 115200. Para cada motor (1..4):
apara armar, y elegir el motor con1/2/3/4n→ poner 2000 pasos (un movimiento largo, que es donde se nota)rhasta que diga DESACTIVADA →+→ anotar el ángulo que recorrerhasta que diga ACTIVADA →-para volver al punto de partida, yluego
+otra vez → anotar el ánguloEl sketch ya imprime el ángulo del encoder antes y después, así que la
pérdida de pasos se ve en la diferencia: si con el mismo número de pasos
recorre más grados con la rampa, es que sin ella los estaba perdiendo.
2. Comprobaciones de hardware (gratis, y pueden ser la mitad del problema)
abajo, se está regalando par. Son los 3 primeros interruptores.
Si está a 24 V, subir a 48 V da bastante más par en movimiento.
hace resonar el motor. Subir a 1600 suavizaría mucho, pero requiere
ajustar
SEMIPERIODO_STEP_USpara mantener la velocidad.3. Firmware completo
Cuando el A/B salga bien, probar con el firmware real (
starcrawler_esp32_basico)en los modos 3 y 4, que es donde el usuario mueve las orugas de verdad.
Qué reportar aquí
RAMPA_DECREMENTO_TICKSenconfig.h: más grande = rampa más corta)Si aun así pierde pasos
Entonces sí está justificado el hardware, pero de lazo cerrado, no más
potencia: lleva encoder en el motor y corrige los pasos perdidos.
Ojo: necesitan motor con encoder, así que se compran en kit. Los de lazo
cerrado suelen ser más largos que el 57HS112 (112 mm): medir el hueco antes
de comprar.
Notas
config.hestá duplicado en las cuatro variantes de firmware (can_bus y steppers estan duplicados byte a byte en las 4 variantes #10). Estecambio se ha aplicado a
starcrawler_esp32ystarcrawler_esp32_basico,que son las que viven en esta rama. Las variantes
standaloneyros2,en sus ramas, siguen sin la rampa.