Buenos días,
Estoy motorizando una montura ecuatorial con un motor paso a paso Nema 17 con una arduino nano y un driver drv8825.
La velocidad de giro es mi máximo quebradero de cabeza, pues tiene que dar una vuelta cada 14 minutos y 24 segundos exactamente.
Utilizo la librería stepper.h
En primer lugar siempre he tenido un problema al configurar el motor (he probado con dos distintos). Son motores de 200 pasos estándares y para que den una vuelta completa necesito decir que son de 800 pasos. De esa manera consigo que dé una vuelta cada minuto. Además he conseguido "engañar" al sketch diciéndole que es de 80 pasos y así da 1 vuelta cada 10 minutos. No tengo puenteado ningún M por lo tanto debería estar a full step (de hecho tiene mucha fuerza, he probado a puentear y hace pasos más cortos según debería esperarse)
Lo que hice es poner en bucle la siguiente instrucción (enciendo un led teóricamente cada pulso):
stepper.setSpeed(1);
stepper.step(1);
digitalWrite(6,HIGH);
delayMicroseconds(50);
digitalWrite(6,LOW);
De esta manera, misteriosamente da un paso potente cada 4 pulsos del led.
Como necesito aún menor velocidad calculé que si provoco un retardo de 330 ms conseguía el tiempo exacto de 14 min y 24 seg. y añadí
delay(330);
mido tiempos y no consigo atrasar nada, exactamente como si no estuviera el delay. Tan solo poniendo más de 1000 consigo que de golpe se atrase lo esperado.
He probado a encender el pin 13 durante esos 330 y lo enciende, pero da la impresión de que lo hace a la vez que el siguiente bucle, es como si lanzase el encendido del led a la vez que comienza el siguiente ciclo... He probado también a hacer delay(1) con un contador while de 330 pasos (para ver si así se "entretenía" a hacer la tarea...)
En fin, que por más vueltas que le doy no llego a una explicación, y tampoco a un método para logar la velocidad que busco...
¿Alguna ayuda? ¿qué estoy haciendo mal?
Muchas gracias por anticipado.