Probando test_steppers_one con el motor en el banco, el motor giraba siempre hacia el mismo lado con + y con -. No es el sketch: la lógica de DIR es correcta.
Causa
Los pines PUL+, DIR+ y ENA+ del DM542 estaban conectados a 5 V, y el ESP32 es de 3,3 V.
Las entradas del DM542 son optoacopladores. Con los + a 5 V y el ESP32 poniendo la señal en alto, quedan 5 − 3,3 = 1,7 V sobre el opto. El LED cae ~1,2 V, así que siguen circulando ~2 mA: no llega a apagarse. El driver ve DIR permanentemente activado y no cambia nunca de sentido.
El STEP se libra porque son pulsos y el salto de corriente sí conmuta. DIR es un nivel estático, y ahí ese margen no da.
Arreglo
Pasar PUL+, DIR+ y ENA+ de 5 V a 3,3 V. Con eso el nivel alto del ESP32 deja 0 V sobre el opto y lo apaga de verdad; el bajo sigue dando corriente de sobra.
Cómo comprobarlo sin mover el motor
test_steppers_one tiene el comando d: alterna DIR con el driver deshabilitado y te dice qué medida corresponde a cada caso. Midiendo entre DIR+ y DIR-:
| Lectura en ALTO |
Diagnóstico |
| ~0 V |
Correcto, los + están a 3,3 V |
| ~1,7 V |
Este fallo |
Por qué importa más de lo que parece
Esto no es solo del banco. El firmware del robot usa los mismos pines y la misma lógica de DIR. Si el robot está cableado igual, los brazos solo subirán y nunca bajarán — y con el firmware completo corriendo eso se manifiesta como «la elevación no funciona», mucho más difícil de diagnosticar que con el sketch aislado.
Hay que comprobar cómo está cableado en el robot antes de flashear nada.
Aviso
A 3,3 V la corriente por el opto ronda los 8 mA, en el límite bajo de lo que pide el DM542. Es la solución estándar para controladores de 3,3 V y funciona, pero si tras el cambio el driver dejara de responder del todo, es que se ha quedado corto y haría falta un adaptador de nivel.
Criterio de aceptación
Con el comando d, lectura de ~0 V en estado alto. Y con + y - el motor gira en sentidos opuestos, en el banco y en el robot.
Documentado en docs/cadena_de_elevacion.md.
Probando
test_steppers_onecon el motor en el banco, el motor giraba siempre hacia el mismo lado con+y con-. No es el sketch: la lógica de DIR es correcta.Causa
Los pines
PUL+,DIR+yENA+del DM542 estaban conectados a 5 V, y el ESP32 es de 3,3 V.Las entradas del DM542 son optoacopladores. Con los
+a 5 V y el ESP32 poniendo la señal en alto, quedan 5 − 3,3 = 1,7 V sobre el opto. El LED cae ~1,2 V, así que siguen circulando ~2 mA: no llega a apagarse. El driver ve DIR permanentemente activado y no cambia nunca de sentido.El STEP se libra porque son pulsos y el salto de corriente sí conmuta. DIR es un nivel estático, y ahí ese margen no da.
Arreglo
Pasar
PUL+,DIR+yENA+de 5 V a 3,3 V. Con eso el nivel alto del ESP32 deja 0 V sobre el opto y lo apaga de verdad; el bajo sigue dando corriente de sobra.Cómo comprobarlo sin mover el motor
test_steppers_onetiene el comandod: alterna DIR con el driver deshabilitado y te dice qué medida corresponde a cada caso. Midiendo entreDIR+yDIR-:+están a 3,3 VPor qué importa más de lo que parece
Esto no es solo del banco. El firmware del robot usa los mismos pines y la misma lógica de DIR. Si el robot está cableado igual, los brazos solo subirán y nunca bajarán — y con el firmware completo corriendo eso se manifiesta como «la elevación no funciona», mucho más difícil de diagnosticar que con el sketch aislado.
Hay que comprobar cómo está cableado en el robot antes de flashear nada.
Aviso
A 3,3 V la corriente por el opto ronda los 8 mA, en el límite bajo de lo que pide el DM542. Es la solución estándar para controladores de 3,3 V y funciona, pero si tras el cambio el driver dejara de responder del todo, es que se ha quedado corto y haría falta un adaptador de nivel.
Criterio de aceptación
Con el comando
d, lectura de ~0 V en estado alto. Y con+y-el motor gira en sentidos opuestos, en el banco y en el robot.Documentado en
docs/cadena_de_elevacion.md.