¿Tiempo de arranque del motor paso a paso?

0

He estado usando un motor paso a paso 28BYJ-48 5V en un pequeño proyecto para un sistema de cámara de inclinación horizontal, donde el paso a paso es el motor de paneo. Lo estoy alimentando con 6 baterías AAA de NiMH en serie, por lo que se suministran aproximadamente ~ 7.5-8V. Estoy usando un Arduino Pro Micro (ATMega32u4).

He notado que al iniciar (donde enciendo los pines del microcontrolador y con el búfer a través de un IC ULN2003), el motor paso a paso se niega a girar. Después de aproximadamente un minuto, el paso a paso comenzará a moverse en pequeñas sacudidas en la dirección en la que le digo que se mueva y luego, al llegar a la marca de 2 minutos, girará suavemente como debería.

¿Hay algunos puntos interesantes sobre los steppers que no conozco sobre problemas de inicio? ¿Alguno de ustedes ha visto esto antes? (Lo siento de antemano, entiendo que esto es extremadamente vago y con demasiadas variables, pero no estoy seguro de que sea un problema común porque generalmente no trabajo con motores)

Me he estado preguntando si tiene que ver con la ventilación extremadamente deficiente alrededor del stepper porque ato un montón de otros cables a su alrededor y la parte inferior del stepper está pegada en caliente a una base (en lugar de usar el soporte bridas). O tal vez los cables que lo rodean se están sumando a un desequilibrio de flujo magnético general (parece poco probable, ya que son en su mayoría cables de señal de baja corriente, no cables de alimentación, y no hay nada más que un consumo de 1A en el sistema).

    
pregunta lemonlime

2 respuestas

0

No hay tiempo de inicio. Hay inercia en el rotor, pero para su aplicación esto es insignificante. Sospecho que hay un problema eléctrico o de señal.

¿Ha mirado las señales de salida al motor con un analizador de alcance o lógico? Puede que no estés dando lo que crees que eres.

    
respondido por el the_anomaly
0

Encontré esto El artículo es extremadamente útil para crear un perfil de aceleración. Aunque no necesito (y lo más probable es que usted) no genere el perfil de aceleración en tiempo real, la ecuación (3) para la aceleración se puede derivar fácilmente, lo cual es instructivo, y la ecuación (8) se puede usar para crear una matriz C estática constante (por ejemplo) (lo hice con una secuencia de comandos de Python) que define el perfil. Lo que luego hice fue escribir una máquina de estados que se ejecuta desde el ISR, que se incrementa a través del perfil un número dado de pasos, luego se ejecuta a una velocidad máxima para muchos pasos y finalmente se reduce. En mi caso, el número de pasos "objetivo" se conoce de antemano y la "receta" se calcula antes de que comience el movimiento, lo que mantiene el ISR lo más ligero posible.

Me resultó mucho más fácil usar un controlador IC paso a paso dedicado (que tiene señales de DIRECCIÓN y PULSO) que generar las señales individuales. Luego, puede generar señales para una cantidad de motores con la suficiente facilidad en un ISR que se ejecuta a cierta velocidad (alto w.r.t. la frecuencia de transmisión máxima). Cada motor tiene su propio acumulador, usted agrega un número que representa la velocidad de cada tic del temporizador y se desplaza sobre un valor fijo máximo. Cada vez que se desplaza, genera una ventaja ascendente o descendente en su máquina de estados. También puede (si lo desea) escalar los motores entre sí utilizando diferentes valores máximos. Uno de cada flanco ascendente incluye un contador para realizar un seguimiento de la posición.

El resultado son motores que arrancan sin problemas y se aceleran muy bien a tasas bastante altas. Una palabra para los sabios: si le importa el posicionamiento absoluto, debe probar a fondo su código para detectar impulsos perdidos, y así sucesivamente. ¡Muy fácil de arruinar esto!

    
respondido por el dmb

Lea otras preguntas en las etiquetas