Le sugiero que comience por comprender el tipo de señales que necesita para conducir un motor paso a paso unipolar. Un buen lugar para comenzar es 'Jones on Stepping Motors' , y específicamente la sección sobre motores paso a paso unipolares .
De eso se puede ver que hay varias secuencias de señales diferentes. Le sugiero que comience con la secuencia de pasos individuales más simple, es decir,
Winding 1a 1000100010001000100010001
Winding 1b 0010001000100010001000100
Winding 2a 0100010001000100010001000
Winding 2b 0001000100010001000100010
Si dibuja gráficos de esas señales, verá que hay cuatro señales, y cada señal está encendida durante un cuarto de tiempo. Los temporizadores comunes en, por ejemplo, ATmega328 no son capaces de generar esta secuencia en hardware.
He generado las señales de cuatro fases de los temporizadores ATmega utilizando rutinas de servicio de interrupción (ISR). Es un ejercicio interesante.
La hoja de datos describe los temporizadores y el hardware del prescaler, que establece la tasa de conteo base, en cuatro capítulos (19 a 22). Son razonablemente comprensibles si has leído este tipo de cosas anteriormente; pero si todo esto es nuevo para usted, puede ser mejor encontrar una biblioteca de Arduino que los configure de una manera útil.
(Busqué una hace unos 8 años y no encontré nada que me gustara, así que desarrollé mi propia biblioteca bastante peculiar, pero puede encontrar algo que se adapte a sus necesidades utilizando un motor de búsqueda web. )
Así que tienes algunas opciones sencillas:
- use una MCU con temporizadores diseñados para controlar cuatro señales de fase
- diseñe cuidadosamente su software para que su bucle principal sea lo suficientemente rápido
para generar con precisión las cuatro señales
- utilice rutinas de servicio de interrupción, controladas por temporizadores, para generar el
señales
- use un módulo o chip de controlador de motor paso a paso
Existen varias bibliotecas paso a paso de Arduino que funcionan sobre la base de que su bucle principal está escrito de modo que llame a la biblioteca con la frecuencia suficiente para controlar las señales, opción 3, por ejemplo Arduino AccelStepper .