Disminuya la velocidad del motor paso a paso con el controlador paso a paso DRV 8825

Tengo un Nema 17, nominal de 0,8 amperios , ángulo de paso de 1,8 grados .

El motor se ve así y tiene seis cables que salen de él:

Nema 17

Los cuatro cables que he usado son los que están etiquetados a continuación (mi vendedor me indicó que usara todo excepto el negro y el blanco):

alambres

Mi cableado actual:

Los cables A+ y B+ están conectados a A1 y B1 respectivamente. Asimismo, A- y B- están conectados a A2 y B2 respectivamente.

Alambrado

Estoy tratando de usar este motor con un Arduino Uno y un controlador Polulu DRV 8825 . La potencia suministrada al motor es de 12 V, 500 mA a través del controlador paso a paso.

Conduzco el controlador paso a paso con dos cables (uno para el paso, otro para la dirección). Se verifica que todo mi cableado sea 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 paso a paso, pero no puedo hacerlo. Idealmente, me gustaría alcanzar velocidades tan bajas como las que se muestran 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 marginalmente la velocidad (definitivamente no tan lento como me gustaría), e incluso cuando lo hace, hay muchas vibraciones a esas velocidades particulares. Sin embargo, solo hay un (pequeño) rango de velocidades en el que el motor está silencioso. Me temo que estas vibraciones pueden hacer que la configuración de mi control deslizante quede completamente inutilizable.

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

También probé micropasos a través de mi controlador (DRV 8825): para los mismos valores de velocidad (que se usan con 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 pasos completos anteriormente, por lo tanto, nuevamente, hago que el motor se pueda usar solo en los mismos rangos que estaba en paso completo modo. De lo contrario, el motor vibra fuerte o levemente, pero sin girar.

Soluciones probadas:

1) Micropasos (sin suerte)

2) Engranaje (Probado y funciona, pero no puedo usarlo para 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 sin idea. ¿Podría ser algo simple que me esté 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é encantado de proporcionarlas.

¡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();
}
¿Cómo decidiste cómo conectar los 6 cables del motor paso a paso a las 4 salidas del DRV8825?
Según los documentos que dicen que puedo hacerlo, aquí: pololu.com/product/2133
Hmmm, no lo estás poniendo fácil. Pregunté cómo decidiste cómo conectar los cables; no quería un enlace a una hoja de datos que SÓLO brinde la MITAD de la historia. Demuéstrame que lo has cableado correctamente.
Lo siento, esa no era mi intención. Estoy usando el motor paso a paso unipolar como un motor paso a paso bipolar. Conecto los cuatro cables a los cuatro conductores del controlador. Los dos restantes se dejan inactivos (como se menciona en la sección de preguntas frecuentes de los documentos que he vinculado anteriormente). ¡Salud!
Detalles de los 6 cables de los cuales usaste 4?
Hola Andy, agregué una fotografía y también edité mi pregunta. ¡Gracias!
Entonces, ¿qué pasa con los detalles para que podamos comprobarlo nosotros mismos? Si miro su imagen, veo 4 cables nombrados, pero ¿cómo se conectan estos al DRV8825? Digo esto porque veo un problema potencial con lo que supones que son A- y B+. Creo que los tienes al revés.
Vaya, nunca pensé en eso. He actualizado la pregunta con mi esquema de cableado actual. ¡Salud!
¿Por qué no proporciona un enlace al motor para que pueda comprobar que ha interpretado correctamente el cableado?
Hola Andy, lo compré en Singapur en una tienda de electrónica local, estas imágenes y descripciones (vagas) eran lo que el distribuidor me había enviado por correo electrónico. Sin embargo, como usted sugirió esto, voy a medir los ohmios entre las bobinas para ver si son correctos. Eso debería ser un buen comienzo, ¿no crees? Si lo que sugirió fue una respuesta y si ese fuera el caso, con gusto la aceptaría y cerraría esta pregunta (si tenía razón) :)
¿No está seguro de cómo podría cambiar los micropasos con el código cuando no conectó el controlador en M0M1M2 al procesador? Al menos no está en tu diagrama. ¿Puedes confirmar? Marek
Su código para microstepping es correcto. ¡Pero no ha conectado las salidas de comando (pines 5,6,7 del Arduino) a las entradas correspondientes en el escudo: M0, M1 y M2!
@BlaiseMuller: Bienvenido a EE.SE. Si bien estas señales se omitieron en el esquema, espero que el autor de la pregunta las haya conectado correctamente y esté más preocupado por las conexiones entre el controlador y el motor, no por las conexiones entre el arduino y el controlador.
Estoy votando para cerrar esta pregunta como sin respuesta clara, ya que omite detalles importantes de la conexión de la placa del controlador. Además, el cartel ha aceptado una respuesta que en realidad es incorrecta : en la actualidad, el estado de la pregunta invita a nuevas respuestas para corregir estos errores, pero esas respuestas no serán bienvenidas ya que el cartel aparentemente se ha satisfecho de alguna manera. Tener esta pregunta aquí no le hace ningún bien a nadie, "¡es una trampa!"

Respuestas (3)

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

Como resolvi el problema

Actualización: después de la discusión con uno de los comentaristas a continuación, se sabe 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 propia resistencia variable.

Estos controladores tienen una pequeña resistencia variable integrada que limita la corriente al motor. Solo tuve que ajustarlo para que todo funcionara. Ahora el motor funciona a velocidades ultrabajas, aunque con algunas vibraciones leves (en modo de paso completo).

Después de habilitar el modo de micropaso proporcionado por el chip, pude amortiguar las vibraciones por un margen enorme y conseguí 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, siendo el negro la derivación central.

Del mismo modo, Amarillo y Rojo constituyen la segunda bobina, siendo el cable blanco la derivación central.

La forma de conectarlo a un Polulu DRV8825 es la siguiente:

ingrese la descripción de la imagen aquí

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

Salud.

Esto es problemático como respuesta, ya que dice que el problema estaba en el cableado, pero lo que está haciendo ahora no es diferente de lo que su pregunta implica que estaba haciendo antes. Parece que su problema real fue que lo que presentó en la pregunta no coincidía con lo que realmente estaba haciendo.
Si presta más atención al diagrama en la pregunta y al que se presenta en la respuesta, ilustra que el orden del cableado era diferente (y, por lo tanto, incorrecto), que es lo que sugirió la respuesta original aceptada y, por lo tanto, fijo en mi responder también.
No hay un "orden" del cableado de un motor paso a paso. Solo hay bobinas, que están identificando de la misma manera ahora que lo estaban desde el principio. Si cambia la polaridad de la conexión a una bobina, todo lo que sucede es que el motor ahora gira en la dirección opuesta para la misma secuencia eléctrica.
@ChrisStratton Si la polaridad de un par de la bobina no está de acuerdo con el segundo par, entonces el motor paso a paso no giraría (al menos en mi caso), sino que simplemente vibraría mientras intenta alternar entre girar a la izquierda y derecho Espero que esto responda por qué existe la orden. De todos modos, el orden es un atributo de la respuesta que ES diferente de la pregunta formulada, lo que invalida sus puntos/suposiciones sobre la pregunta en sí (que no hay diferencia en las conexiones del sistema de la pregunta y la respuesta).
Parece que estás culpando a algo que en realidad no importa. Si tiene una configuración paso a paso que funciona y desconecta los cables de una bobina y los cambia, el rendimiento del motor no se reduce en absoluto. Con un motor de seis cables, no puede invertir la "mitad" de una bobina en relación con la otra mitad; eso solo es posible con un motor de 8 cables. Casi lo único que podría hacer con un motor de seis cables sería usar los tres cables, con la derivación central en un terminal y ambos extremos en el otro, de modo que el campo se anule.
@ChrisStratton Ok, gracias por la aclaración. Entonces, la vibración causada podría deberse a un valor incorrecto configurado con la resistencia variable.

Solo en función de cómo los cables ingresan al motor paso a paso de la imagen proporcionada por el OP, existe una posibilidad razonable de que A- y B + tengan un nombre incorrecto. Así es como interpreto el cableado de las dos bobinas con derivación central en el motor paso a paso: -

ingrese la descripción de la imagen aquí

Si este es el caso, no me sorprende que el motor no se comporte correctamente. Me baso en el hecho de que naranja, blanco y amarillo parecen estar agrupados como si fueran para una de las bobinas y marrón, negro y rojo para la otra bobina. Si esto es así, las etiquetas A- y B+ se cambiarán erróneamente.

Esto suena probable. El OP necesita probar con un multímetro.
¡Pruebas en progreso, se actualizarán pronto chicos! muchas gracias
No, todavía no hay suerte. La prueba del multímetro muestra los siguientes resultados: [Naranja-Marrón = 8 ohmios] [Amarillo-Rojo = 8 ohmios] [Naranja-negro, Marrón-Negro = 4,6 ohmios] Y [Amarillo-Blanco, Rojo-Blanco = 4,6 ohmios]. Por lo tanto, el blanco y el negro son los grifos centrales. [Naranja, Marrón] y [Rojo, Amarillo] son ​​los cables necesarios. Pero aún así, incluso después de volver a cablear, el comportamiento parece ser el mismo que describí en la pregunta: si trato de ir por debajo de una velocidad particular, el motor simplemente vibra. Tampoco hay mucho cambio en la velocidad, al variar la velocidad en el código :(
Suena decepcionante: ¿tal vez el motor paso a paso que le vendieron no es apto para hacer lo que quiere o tal vez es una cuestión de software? ¿Confirmó que no hay conexión entre el amarillo y el negro?
Hola Andy, acabo de confirmar: NO hay conexiones entre amarillo y negro y naranja y blanco. Espero que esto sea solo un problema de software porque, de lo contrario, el motor tiene un par excelente (0,55 Nm). ¿Qué más debo mirar ahora que se confirma que el cableado está arreglado? ¿Alguna sugerencia? ¡Gracias!
Si bien esta respuesta puede haber sido aceptada aparentemente porque de alguna manera llevó al cartel en el camino correcto, vale la pena señalar que en realidad es incorrecta. La teoría del cableado propuesta aquí no se ajusta a los hechos.

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

De hecho, aunque aparentemente esto ya estaba hecho, pero quedó fuera de discusión. Dado que el problema del cartel aparentemente se ha resuelto, si la existencia continua de la página en el sitio va a tener algún beneficio futuro, documentar los descuidos como estos es tan importante como cualquier otra cosa que se diga aquí.