Solución de problemas del motor paso a paso con el controlador Pololu DRV8825

7

Recuperé un motor paso a paso bipolar (QH4-4242) y una fuente de alimentación de una impresora antigua que me gustaría probar antes de ampliar a motores más grandes. Con el conocimiento limitado sobre el paso a paso (como la clasificación actual), pero sabiendo que el adaptador de alimentación tiene una fuente de 24 V / .55A y 5V / .2A, asumo que el paso a paso debe tener una calificación igual o inferior a .55A . He encontrado pares de cables de bobina al medir la resistencia (que se encuentra en ~ 8,5 ohmios).

Usando una placa Pololu construida alrededor del DRV8825, he seguido las instrucciones en su sitio web conectando los pines correctos A1, A2, B1, B2 a los pares de bobinas correspondientes. He suministrado el motor con la salida de 24V / .55A y afiné el potenciómetro de ajuste limitador de corriente mientras medía los amperios en una sola fase, mientras que el pasador del Paso era alto, de modo que la corriente era de 0.29 A (ya que las fases solo obtienen el 70% de la corriente en plena etapa). Y he establecido el modo de reposo y reinicio a alto como se indica.

Usando un FEZ Panda II como microcontrolador, escribí un código simple que da vuelta al pasador de paso y al pasador de reposo durante 1 s, luego al nivel bajo durante 1 s. El motor paso a paso hace un ruido de tono alto (como he leído es bastante normal para un conductor de helicóptero) y el eje se vuelve difícil de girar, sin embargo, no gira. Mientras que los pasadores están bajos, si muevo ligeramente el eje de la ubicación "dentada", cuando los pasadores vuelven a estar altos, el eje gira ligeramente como para volver a colocarlo en su lugar. Sin embargo, no girará ni se moverá solo.

Apreciaría mucho cualquier entrada o sugerencia para depurar este problema.

Actualización:

Perdón por los que respondieron a la confusión, pensé una cosa y escribí otra anoche. Mi nivel alto y bajo para la versión escalonada es de 1000 ms o 1 segundo.

El pseudo código se vería así:

while(true)
{
   step(true)
   sleep(1000)
   step(false)
   sleep(1000)
}

Actualización 2:

Según la sugerencia de Richman, agregué LEDs para monitorear la conmutación de la polaridad cuando se envía un pulso de Paso, esto parece [pun] arrojar algo de luz [/ pun] sobre el problema. Y de hecho encontró el problema. La polaridad no estaba cambiando cuando se estaba enviando la señal de Paso. Esto se debió a que, además de enviar un pulso al pin Paso, también estaba alternando el pin de reposo que habilita / deshabilita la alimentación del motor. Leí que esto se hizo para minimizar cualquier ruido agudo, pero creo que lo entendí mal y que la activación / desactivación se realiza después de que se llevan a cabo TODOS los pasos. Eso está resuelto ahora. Disculpe a los que respondieron por la confusión con el momento, le daría toda la respuesta correcta ya que lo expliqué mal si pudiera.

Una consecuencia desconocida es que el paso a paso se mueve solo cuando el pin Paso se deja en el nivel bajo. Tengo curiosidad si esto se debe a un ruido en la señal que quizás esté causando que el pin Paso cambie a alto / bajo aunque mi lógica no lo indique. O quizás hay un problema de conexión a tierra / blindaje porque si toco la carcasa del motor, el cableado, o si simplemente pongo mi mano cerca de ella, esta comienza a dar pasos más rápido y más rápido y eventualmente se vuelve errático.

¿Alguna idea sobre este nuevo enigma?

    
pregunta Doug

3 respuestas

3

Creo que estás conduciendo el motor paso a paso demasiado rápido.

Con 1000uSec de alta y 1000uSec de baja, estás produciendo una onda cuadrada de 500 Hz. Como tal, estás intentando pasar 500 veces por segundo.

Intente reducir la velocidad a unos 50 pasos / segundo (haga su baja duración 20 mS, o 20,000 uSec).     

respondido por el Connor Wolf
1

Los motores paso a paso deben subir a la velocidad máxima y hacia abajo para un rendimiento óptimo. Comience lentamente y aumente la duración en un factor de 10x y luego experimente con un perfil de rampa_ _ / --- \ _ para controlar la velocidad.

Si no tiene suficientes canales de alcance, use LEDs para monitorear el voltaje de fase y use dos LED consecutivos con una resistencia de 1K por ~ 20mA Use Green Blue o cualquier otro color para facilitar la lectura y ralentizar su programa a 1 segundo por paso. Asegúrese de que cada fase se está conduciendo correctamente. No es necesario aumentar el tiempo de sueño, creo que depende más del factor de carga.

Generalmente hay dos interfaces de diseño. La dirección y el conteo de pulsos Como los disquetes y los discos duros antiguos ST506 y Pulse / Fwd / Rev. En la interfaz del motor hay pasos completos, medios pasos y pasos pequeños. El tiempo muerto es un factor crítico en los motores grandes, por ejemplo, 1 ~ 10 us, ya que la latencia y los efectos de disparo de la carga pueden freír fácilmente a los conductores tanto de unidad alta como baja con una carga inductiva. Todos los CMOS funcionan sin tiempo muerto, pero no recomiendan que conduzcas motores con ellos.

    
respondido por el Tony EE rocketscientist
0

Un poco demasiado rápido. Inténtalo 5 veces más lento. Si aún no se ejecuta, observe cómo está secuenciando los pasos; ¿Están en la secuencia correcta y la polaridad correcta?

Si hay alguna duda al respecto, secuencia algunos pasos a mano con dos cables de la fuente de alimentación y verifica que el controlador genere la misma secuencia.

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas