Ralentizar la velocidad del motor paso a paso usando el controlador de pasos DRV 8825

0

Tengo un Nema 17, clasificado en 0.8Amps , ángulo de avance de 1.8 grados .

El motor se ve así, y tiene seis cables saliendo de él:

Loscuatrocablesqueheusadosonlosqueseindicanacontinuación(mivendedormeindicóqueusaratodo,exceptoelnegroyelblanco):

Mi cableado actual:

Ambos cables A + y B + están conectados a A1 y B1 respectivamente. Del mismo modo, A- y B- están conectados a A2 y B2 respectivamente.

EstoytratandodeusarestemotorconunArduinoUnoyun Polulu DRV 8825 conductor. La alimentación suministrada al motor es 12V, 500mA a través del controlador paso a paso.

Conduzco el controlador paso a paso con dos cables (uno para el paso, uno para la dirección). Se verifica que todo mi cableado es correcto.

Estoy tratando de usar este motor para el control deslizante de mi cámara, pero sin suerte.

El problema

Quiero lograr una rotación realmente lenta pero suave con mi stepper, pero no puedo hacerlo. Idealmente, me gustaría alcanzar velocidades tan bajas como se muestra en este video de YouTube .

Cuando trato de variar la velocidad de la velocidad paso a paso a través de mi código, solo reduce ligeramente la velocidad (definitivamente no es tan lenta como me gustaría), e incluso cuando lo hace, hay muchas vibraciones en esos lugares. las velocidades Sin embargo, solo hay un rango (pequeño) de velocidades en el que el motor está silencioso. Me temo que estas vibraciones pueden hacer que la configuración de mi deslizador sea completamente inutilizable.

El engranaje tampoco es realmente una opción, debido a la falta de restricciones de espacio (quiero que este control deslizante sea liviano y pueda caber dentro de una maleta de viaje sin muchos problemas).

También he intentado el paso a través de mi controlador (DRV 8825) - Para los mismos valores de velocidad (como se usa en pasos completos), se puede escuchar que la bobina del motor vibra. Y si modifico los valores para hacer que el motor gire, parece ser un múltiplo (aproximado) de los valores que usé para los pasos completos anteriormente, por lo tanto, nuevamente, el motor se puede usar en los mismos rangos que en el paso completo. modo. De lo contrario, el motor vibra ferozmente o ligeramente, pero sin ninguna rotación.

Soluciones intentadas:

1) Microstepping (sin suerte)

2) Engranajes (Probado y funciona, pero no puedo usarlo en mi caso de uso)

3) Diferentes bibliotecas paso a paso (Accel, PWM, etc.)

4) Control de resistencia variable (sin suerte)

En este punto, estoy completamente perdido y desorientado. ¿Podría ser algo simple que me pueda estar perdiendo? ¿O podría ser algo drástico, como tener que cambiar algún componente principal (como el propio motor o el controlador)? Cualquier ayuda sería muy apreciada y si se requieren aclaraciones, estaré encantada de proporcionarles.

¡Gracias!

Mi código actual para referencia:

#include <AccelStepper.h>

AccelStepper stepper (1, 9, 8);
int MODE0 = 7;
int MODE1 = 6;
int MODE2 = 5;

void setup()
{  
   stepper.setMaxSpeed(15000);
   stepper.setSpeed(12000);
   pinMode(MODE0, OUTPUT); 
   pinMode(MODE1, OUTPUT); 
   pinMode(MODE2, OUTPUT);


   //Motor is now running in Microstepping mode (1/16)

   digitalWrite(MODE0, LOW);
   digitalWrite(MODE1, LOW);
   digitalWrite(MODE2, HIGH);

}

void loop()
{  

   stepper.runSpeed();
}
    
pregunta dsignr

3 respuestas

3

Bien, resulta que también hubo un problema con el cableado y el etiquetado fue incorrecto en los motores. Muchas gracias a Andy por dedicar su precioso tiempo a ayudarme.

Cómo resolví el problema

Actualización: Después de discutir con uno de los comentaristas a continuación, se aprende que no hay diferencia en el orden de los cables conectados al controlador, por lo tanto, el orden de los cables etiquetados en mi pregunta y en la respuesta a continuación no importa tanto como establecer el valor en la resistencia de la variable en sí misma.

Estos controladores tienen una resistencia variable pequeña a bordo que limita la corriente al motor. Solo tenía que modificarlo para que todo funcionara. Ahora el motor funciona a velocidades ultra bajas, aunque con algunas vibraciones suaves (en modo de paso completo).

Después de habilitar el modo de micro-pasos provisto por el chip, pude amortiguar las vibraciones por un gran margen y logré que todo funcionara sin problemas.

Para cualquier otra persona que pueda tener este motor, aquí hay algunas referencias:

Los cables naranja y marrón constituyen una bobina de este motor, con el negro en el centro del grifo.

Del mismo modo, Amarillo y Rojo constituyen la segunda bobina, con el cable blanco como la toma central.

La forma en que lo conectas a un DRV8825 de Polulu es la siguiente:

Espero que esto ayude a cualquier otra persona que pueda tener el mismo problema.

Saludos.

    
respondido por el dsignr
2

Simplemente en la forma en que los cables ingresan al motor paso a paso desde la imagen suministrada por el OP, existe una posibilidad razonable de que A y B + sean mal nombrados. Así es como interpreto el cableado de las dos bobinas con toma central en el motor paso a paso: -

Si este es el caso, no me sorprende que el motor no se comporte correctamente. Estoy basando esto en el hecho de que el naranja, el blanco y el amarillo parecen agruparse como si estuvieran en una de las bobinas y marrón, negro y rojo para la otra bobina. Si esto es así, las etiquetas A y B + se cambian erróneamente.

    
respondido por el Andy aka
2

Su código solo puede establecer el modo de micro paso si conecta las salidas de comando de su Arduino (patillas 7, 6 y 5) a las entradas correspondientes en el escudo DRV882x (entradas M0, M1 y M2). ¿Por qué otra cosa sabría el chip lo que quieres?

    
respondido por el Blaise M

Lea otras preguntas en las etiquetas