DESCRIPCIÓN DEL DRIVER A4988

Fig. 1 Aspecto de los driver A4988 y DRV8825.

DESCRIPCIÓN DE A4988.

El uso de un driver Pololu para el control de un motor paso a paso nos simplifica mucho el trabajo ya que este driver se encarga de generar todas las señales necesarias para su funcionamiento y además nos añade las protecciones necesarias de temperatura y corriente. Otra ventaja que nos proporciona es que solo necesitaremos un par de puertos del micro, en este caso Arduino para controlarlo todo, dejando más puertos libres para otras funciones.

Este producto es una placa de soporte o una placa de arranque para el controlador del A4988 de Allegro con protección contra sobrecorriente. Estas son algunas de las características clave del controlador:

  • + Interfaz de control de paso y dirección simple.
  • + 6 resoluciones de pasos diferentes: paso completo, 1/2-paso, 1/4-paso, 1/8-paso, 1/16-paso y 1/32-paso.
  • + Control de corte inteligente que selecciona automáticamente el modo correcto de caída de corriente (decaimiento rápido o decaimiento lento).
  • + Desconexión térmica, bloqueo de bajo voltaje y protección contra cortocircuitos y carga en cortocircuito.
  • + El control de corriente ajustable le permite configurar la salida de corriente máxima con un potenciómetro, que le permiten usar voltajes por encima del voltaje nominal de su motor paso a paso para lograr tasas de pasos más altas.

Fig. 2 Esquema del driver A4988

USANDO EL DRIVER

Conexiones de potencia: El controlador requiere un voltaje de suministro lógico (3 – 5.5 V) para ser conectado a través de los pines VDD y GND y un voltaje de suministro del motor (8 – 35 V) para ser conectado a través de VMOT y GND. Puede entregar hasta aprox. 1 A por fase sin disipador de calor o flujo de aire forzado. Conexiones MOTOR: Los motores paso a paso de 4, 6 y 8 cables pueden ser accionados por el A4988 si están conectados correctamente.

Tamaño de microespacio: Los motores paso a paso suelen tener una especificación de tamaño de paso (cómo 1.8° o 200 pasos por revolución), que se aplica a pasos completos. Un controlador de microprocesamiento como el A4988 permite resoluciones más altas al permitir ubicaciones de pasos intermedios. Que se logran energizando las bobinas con niveles de corriente intermedios. Por ejemplo, conducir un motor en el modo de cuarto de paso le dará al motor de 200 pasos por revolución 800 microsteps por revolución usando cuatro niveles de corriente diferentes.

Numero de pasos: Las entradas del selector de pasos (MS1, MS2 y MS3) permiten seleccionar de la resolución de uno de 5 pasos de acuerdo con la tabla siguiente. MS1 y MS3 tienen resistencias internas de 100kΩ y MS2 tiene una resistencia interna de 50kΩ, de manera que dejando estos tres pines de selección de microstep desconectados se obtiene el modo de paso completo. Para que los modos microstep funcionen correctamente, el límite de corriente debe establecerse lo suficientemente bajo para que la limitación de corriente se active. Si no es así, los niveles de corriente intermedios no se mantendrán correctamente, y el motor se saltará los pasos intermedios.

Fig. 3 Tabla microsteps.

Entradas de control: Cada pulso a la entrada STEP corresponde a un microstep del motor paso a paso en la dirección seleccionada por el pin DIR. Tenga en cuenta que los pines STEP y DIR no están conectados a un voltaje en particular internamente, por lo que no debe dejar ninguno de estos pines flotando en su aplicación. Si solo desea girar en una sola dirección, puede unir DIR directamente a VCC o GND. El chip tiene tres entradas diferentes para controlar sus muchos estados de energía: RST, SLP y EN. Tenga en cuenta que el pin RST está flotando; si no está utilizando el pin, puede conectarlo al pin SLP adyacente en el PCB para subirlo y habilitar el tablero.

Fig. 4 Esquema práctico general.

Es recomendable colocarle un pequeño radiador pegado con pasta térmica, incluso dotarle de un ventilador cuando trabajemos con altas corrientes.

¿Cómo proceder? cuando leemos algo como… Estoy usando un controlador el A4988 para alimentar un motor paso a paso, pero antes de conectar cualquier otra cosa al controlador del motor paso a paso, quiero saber cuánta corriente fluirá al pin VMOT del controlador. A continuación proporcionaremos unos pasos a seguir para responder a la pregunta.

CORRIENTE DEL MOTOR PASO A PASO.

Un paso muy importante es localizar los datos del motor mediante la hoja del fabricante o en último caso los datos que obran en su cuerpo o carcasa, podemos encontrar por ej.:

Fig. 5 Datos de motores.

Entre otros debemos fijarnos especialmente en estos datos:

  • Debemos tener plenamente identificados los cables del motor para evitar malas conexiones.
  • Incrementar el voltaje de trabajo puede sobrecalentar el motor.
  • Un excesivo sobrecalentamiento puede desmagnetizar los imanes del rotor.

1. – EL PAR MOTOR (O TORQUE) DE RETENCIÓN EN UN MOTOR PASO A PASO.

Aparecerá como “Holding Torque” o “Static moment”. Se mide en N·m o N·cm (Newtons · centímetro) y es uno de los parámetros que indica la “fuerza” del motor. Es el que más habitualmente ofrecen los fabricantes.

¿Qué significa este valor? Es un indicativo de la fuerza con la que el motor puede mantenerse en un paso. Determinará el aguante del motor a que la inercia del eje que estamos moviendo le haga saltarse un paso al frenar dicho eje (que es el punto más común en el que puede saltarse un paso).

Es importante tener en cuenta los torques para la elección de un motor a pasos durante el proceso de diseño de cualquier proyecto:

    • Torque de retención –detent torque– Torque máximo que es aplicado sin provocar la rotación del eje cuando el motor no está energizado.
    • Torque de anclaje –holding torque– Cuando el motor está parado y alimentado, este torque es el máximo que puede ser aplicado sin provocar la rotación del eje.
    • Torque de arranque –pull-in torque– Es el torque máximo para vencer la inercia del rotor y que comience a girar a toda rapidez.
    • Torque de giro –pull-out torque– Es el máximo torque que el motor puede proporcionar sin sufrir pérdidas de pasos.

2. – LA CORRIENTE O INTENSIDAD NOMINAL.

Esta aparecerá como “Rated Current”, “Phase Current” o “Max Current”.

Como siempre la corriente se mide en amperios (A) y nos da el valor máximo de corriente que podemos hacer circular de manera continua por el motor sin quemarlo (recuerde que, más corriente → más fuerza).

Por tanto si queremos utilizar este motor aprovechando toda su fuerza tenemos que controlarlo con un driver que sea capaz de entregar toda esa corriente de 1.5A según la figura 5.

3. – CRITERIOS PARA ELEGIR MOTORES.

Las selecciones que hagamos entre motores y drivers se van a afectar entre sí. Uno de los muchos criterios de selección de drivers se refiere a la corriente máxima que pueden entregar, así que siguiendo este criterio elegiremos un motor cuya corriente nominal no sea muy alta, a ser posible cerca de los valores que pueden entregar los drivers de los que podamos disponer. Los valores de corrientes nominales estándar son los siguientes: 0,6-0,7A | 1,2-1,3A | 1,7-1,8A | 2,5A

Cuanta mayor corriente nominal, más conservará su par motor a altas velocidades, por lo que debemos escoger el de mayor corriente que admitan los drivers de los que disponemos la mejor opción son los de 1,7-1,8A de corriente nominal.

En el mercado podemos encontrar multitud de drivers para motores paso a paso, disponemos de dos grupos: Drivers plug & play y Drivers de bajo nivel.

EL CONTROLADOR DRV8825.

Sólo de pasada. Según el propio fabricante dice, el soporte del controlador de motor paso a paso DRV8825 es una placa de adaptación para el controlador de motor paso a paso micro DRV8825 de TI.

El módulo tiene un pinout y una interfaz que son casi idénticos a los de nuestros soportes de controlador de motor paso a paso A4988, por lo tanto, se puede utilizar como un reemplazo de caída de alto rendimiento para esas placas en muchas aplicaciones.

El DRV8825 cuenta con un límite de corriente ajustable, protección contra sobrecorriente y sobretemperatura, y seis resoluciones de micropasos (hasta 1/32). Funciona de 8,2 A 45 V y puede entregar hasta aproximadamente 1,5 a por fase sin disipador de calor o flujo de aire forzado (tasado para hasta 2,2 A por bobina con suficiente refrigeración adicional).

Fig. 6 DRV8824 / DRV8825

Volviendo al tema que nos ocupa, como se aprecia en el esquemático de la anterior figura 2, el Pololu A4988 necesita dos tensiones de alimentación separadas, una para el motor propiamente dicho (8-35V) y la otra para la alimentación del propio Pololu (3-5.5V), esta última se puede sacar del Arduino. Para alimentar el motor utilizaremos una fuente independiente que conectaremos a los pines Vmot y GND. Recordemos que tenemos que unir las masas GND del Arduino con la GND de la fuente del motor para equilibrar las tensiones a 0V, es conveniente una vez más utilizar un condensador electrolítico de unos 100uf/63V entre los terminales de alimentación de la fuente del motor para estabilizarla más.

Como ya se ha descrito, el Pololu tiene protección térmica y de sobrecarga. Consultar el datasheet del fabricante para saber exactamente cuanta corriente puede controlar ya que hay diversos modelos muy similares, pero rondan entre 1A y 2A.

Vamos a realizar una práctica como de costumbre para familiarizarnos con los nuevos dispositivos que cada día nos hacen la vida más fácil. En este caso, se trata de controlar la velocidad de un motor paso a paso, así como el sentido de giro ayudados por el driver A4988 que de alguna manera estamos analizando.

El siguiente es el esquema hecho con el Fritzing que nos servirá de referencia. Los pines están definidos en el propio esquema.

Fig. 7 Circuito utilizado en esta práctica.

El motor bipolar que dispongo es un JK57HS56-2804-01 un NEMA23 cuyas características se muestran en la siguiente figura 8.

Fig. 8 Datos del NEMA23.

¿CÓMO AJUSTAR LA CORRIENTE DEL MOTOR PASO A PASO?

Vamos a aprender a configurar el driver de forma correcta para no perder pasos en el motor por baja corriente, bajo voltaje, alta velocidad o exceso de carga, vamos a corregir una de estas opciones que es calibrar bien el voltaje de referencia utilizando la formula real es:

  ITripMAX = Vref / (8 x Rs)

La Rs son las S1-S2 señaladas en la figura 9, la resolución de los pasos se logra con los terminales MS1, MS2 y MS3 que si están al aire estarán a masa por lo tanto en la tabla de la figura 3 sería una resolución paso completo Full Step del 70%, que es lo recomendable ya que un cuarto, un octavo o dieciseisavo ya pierde mucha fuerza el motor pierde pasos y no lo recomiendo. Lea el datasheet de Allegro para más detalle. El fabricante aconseja no hacer los cambios con la tensión conectada ya que se puede dañar el A4988.

Fig. 9 Tabla Secuencia pasos.

Veamos como podemos ajustar la intensidad que le va a permitir conducir al motor que esté conectado a la placa de un A4988, hay diferentes placas con ligeras modificaciones que se deberán tener en cuenta.

Fig. 10 Puntos de interés.

En primer lugar, debemos tener la placa sin el disipador puesto, para fijarnos en el valor de las resistencias shunt mostradas como S1-S2 o R5-R4 depende del fabricante (estas, en mi caso R5 y R4 de 10mΩ = 0,01Ω), pueden ser de 10mΩ a 100mΩ o incluso 200mΩ, una vez conocemos estos valores le daremos la tensión de control a la placa y conectaremos el polímetro de 3V o 5V en continua, entre los pines positivo y gnd (las flechas roja y negra), ajustando el potenciómetro (el pin se encuentra en el propio potenciómetro) hasta lograr una tensión de:

Vref = Imax *8 * Rs ;

Imax = Vref / (8 * Rs)

Donde Imax es la intensidad máxima del motor y Rs el valor de las resistencias shunt.

Para ajustar la intensidad del motor se recomienda conectar solamente la llamada tensión lógica a los pines de la placa +5V y GND y el polímetro entre los pines Positivo y GND indicado en la figura 10.

Un ejemplo práctico. Si la corriente máxima de mi motor es de 2,8A y la Rs es de 0,1Ω; sería 2,8 x 8 x 0,1 = 2,44V. Recordemos que se recomienda trabajar al 70% (Full step), esto quiere decir que el 70% de 2,44 es: 2,44 x 0,7 = 1,56V en definitiva es el Vref con el polímetro en continua, conectamos el polo negativo a gnd y el polo positivo al destornillador que situaremos en el potenciómetro, giraremos ajustando a 1,56V. Con esto el driver A4988 quedará correctamente configurado.

CONSIDERACIONES DE DISIPACIÓN DE ENERGÍA

(Propiedad de Pololu)El controlador IC A4988 tiene una clasificación de corriente máxima de 2 A por bobina, pero la corriente real que puede suministrar depende de qué tan bien pueda mantener el IC (chip) frío. La placa de circuito impreso del soporte está diseñada para extraer calor del circuito integrado, pero para suministrar más de aproximadamente 1 A por bobina, se requiere un disipador de calor u otro método de enfriamiento como un ventilador.

Este producto puede calentarse lo suficiente como para quemarlo mucho antes de que el chip se sobrecaliente. Tenga cuidado al manipular este producto y otros componentes conectados a él.

Tenga en cuenta que medir el consumo de corriente en la fuente de alimentación generalmente no proporcionará una medida precisa de la corriente de la bobina. Dado que el voltaje de entrada al controlador puede ser significativamente mayor que el voltaje de la bobina, la corriente medida en la fuente de alimentación puede ser bastante menor que la corriente de la bobina (el controlador y la bobina actúan básicamente como una fuente de alimentación de conmutación descendente). Además, si el voltaje de suministro es muy alto en comparación con lo que el motor necesita para alcanzar la corriente establecida, el ciclo de trabajo será muy bajo, lo que también conduce a diferencias significativas entre las corrientes promedio y RMS.

A continuación se muestra el código que utilizaremos para esta práctica. Sólo tenemos que seguir el esquema de la figura 5, conectaremos los pines STEP y DIR a los pines P3 y P9 de nuestro Arduino. Ahora, conectaremos entre sí los pines 3 y 4 (RESET y SLEEP) desde la izquierda del A4988, para que el motor este continuamente en funcionamiento que es lo que necesitamos.

Toca conectar el motor, primero tenemos que identificar los cables del motor bipolar paso a paso (el de cuatro hilos), con un polímetro en continuidad para conectar el motor paso a paso elegido al A4988, para lo cual, tenemos cuatro terminales correspondientes a los dos bobinados del motor y, una vez identificadas conectar las bobinas 1A-1B de la primera bobina y 2A-2B a la segunda bobina del motor.

Según el esquema, nos quedan por conectar dos elementos, el pin central del potenciómetro de 10KΩ a la entrada analógica A0 y un pulsador S2 que tendrá una resistencia de 1KΩ a masa que pondrá la entrada a 0V si no se pulsa S2, evitando falsas lecturas en la entrada digital D7.

Este es el sencillo código que he elegido:

/* control_pap_a4988.ino
 * Control velocidad y sentido giro de motor PaP con pololu A4988 
 *  2017 - yomaker.com
 */

int steps = 9;       // pin step 9
int direccion = 3;   // pin direccion 3
int potenciometro;   // lectura del potenciometro
int boton = 7;       // pin pulsador

void setup() {        
  // inicializamos pines como salidas.  
  pinMode(steps, OUTPUT); 
  pinMode(direccion, OUTPUT); 
 // inicializamos pin como entrada
  pinMode(boton, INPUT);
}

void loop() {  
    int sentido = digitalRead(boton);  // leemos el boton de direccion
    digitalWrite(direccion, sentido);  // cambiamos de dirección según pulsador
    potenciometro = analogRead(A0);    // leemos el potenciometro
    potenciometro = map(potenciometro,0,1024,900,2500);// adaptamos el valor leído a un retardo
    digitalWrite(steps, HIGH);      // Aquí generamos un flanco de subida LOW - HIGH
    delayMicroseconds(5);           // Pequeño retardo para formar el pulso en STEP
    digitalWrite(steps, LOW);       // y un flanco de bajada, el A4988 avanzara un paso del motor
    delayMicroseconds(potenciometro); // generamos un retardo con el valor leído del potenciómetro
  }

En la práctica he configurado el A4988 como se indica más arriba, he cargado el programa y después de comprobar todas las conexiones he conectado el Arduino y luego la tensión del motor procedente de una batería de 8,4V y 1600mA/h que tengo de un balancín invertido que hice hace un tiempo, sin duda que es poca tensión ya que el A4988 trabaja entre 8-35V y sobre todo la corriente está muy justa, lo que se traduce en un corto periodo de tiempo en el que no se si funciona como se esperaba, la imagen no es lo que se dice muy explicita.

Fig. 11 Montaje.

Trataré de lograr una batería de 12V y con mayor capacidad para poder hacer servir el montaje, entre tanto utilizaré un cargador de 9V 2,5A con el cual voy a realizar una nueva prueba. Además, he recibido una nuevo paquete de dispositivos para hacer más sencillo y limpio el trabajo, estos son:

Fig. 12 Dispositivos idóneos

Antes de nada voy a tratar de entender como funciona esta tarjeta con tanta posibilidad, luego ya trataré de probar como se comporta con algún programa.

Después de unos cambios en el cableado he puesto vuelto a conectar el Arduino y, esta vez he realizado un nuevo ajuste con el Vref ya que la corriente del NEMA 23 es de 2,8A lo que significa una Vref resultante de 2,8 x 8 x 0,1 = 2,24 y el 70% es de 2,24 x 0,7 = 1,56V y luego he conectado la tensión de 12V para el motor y todo ha funcionado como se esperaba. También he probado otros motores más pequeños con idéntico buen resultado.


Fig. 13 Vídeo del driver funcionando.

Con esta práctica y su descripción doy por terminado este artículo con el que espero haber ayudado a entender como configurar el driver A4988.

Una vez más, esta es una práctica que le ayudará a aprender las técnicas necesarias para aplicar un driver A4988 tan útil a sus futuros proyectos. Espero le sea de ayuda en su aprendizaje.

Esto es todo, por este simple tutorial.

Si esta interesado en los siguientes enlaces puede encontrar información más detallada al respecto:

https://www.pololu.com/product/1182
http://www.ing.unlp.edu.ar/electrotecnia/procesos/apuntes/Motores_Paso_a_Paso.pdf
http://robots-argentina.com.ar/MotorPP_basico.htm
http://www.alciro.org/alciro/Plotter-Router-Fresadora-CNC_1/Motores-paso-a-paso-bipolares-unipolares_85.htm

9 comentarios sobre «DESCRIPCIÓN DEL DRIVER A4988»

  1. Muy buena opción, gracias por la información. Felicidades por tan completa explicación
    Saludos y seguimos en comunicación

  2. Creo que no me he explicado bien. Me refiero a las entradas DIR y STEP del a4988 Y las salidas DIR y STEP del puerto paralelo las proporcionaría mach 3

  3. Otra consulta por este lado… Si el motor PAP que tengo es de 6V, quiere decir que no puedo manejarlo con estos controladores? Dado que el A4988 es para motores de 8 a 35V y el DRV8825 es para 8,2 a 45V, no pueden manejar esos 6V? Perdón si pregunto una burrada, pero esto es nuevo para mi… Muchas gracias!

    1. Hola Fabian
      Desde mi experiencia te diré que estos motores paso a paso, se controlan mediante la corriente y no por la tensión. Con esto quiero decir que, si configuras bien el A4988 o DRV8825 con su Vref adecuado, puedes conectar tu motor, eso sí, cuídate de que la fuente pueda entregar el amperaje por encima del necesario .
      He utilizado un motor unipolar al que he conectado como bipolar con estas especificaciones:
      VCC= 2,2V
      I = 2.2A
      1.8º
      Con un Arduino UNO y en mi caso el TB6600 y lo he movido a diferentes velocidades sin más problema.

      Espero haber dado respuesta a tu consulta.

      Saludos.

  4. Hola Vicente, excelente aportación, muy clara la información presentada.
    Quiero responder si se me permite a la pregunta de Jesús sobre el Match3, si es posible conectar a los pines del puerto paralelo las entradas Dir y Step del A4988, únicamente se tendría que tener habilitado el funcionamiento del driver. Yo trabajé tiempo atrás con el puerto paralelo y empleaba el Match3 para controlar los motores de mi CNC y a través de las interfaces que diseñé con PIC16F84 y PIC12F675 que recibían las señal Step y Dir desde el Match podía manipularan los driver y a su vez los motores a pasos. Hace tiempo que dejé de utilizar estos métodos ya que con estos driver nuevos y las placas de Arduino se ha facilitado el trabajo, además que el puerto paralelo ya se está prácticamente fuera de uso, ahora, hay tarjetas para Match 3 con USB donde se puede utilizar mediante un arreglo de conexiones una CNC Shield que facilita y reduce el espacio del control de la CNC. Espero sirva el comentario.
    Saludos

    1. Hola Moises Munoz.

      Gracias por tu colaboración, me parece el lugar adecuado para dar respuesta a las consultas que se presentan por parte de los usuarios y sus dudas.
      Por otra parte, estoy realizando un pequeño artículo sobre cómo hice mi enrutador CNC que estoy construyendo. La verdad es que he echado de menos la colaboración de algún colega de la ciudad y por más que lo he intentado no conseguí contactar con ninguno, quizás por que no lo intenté bastante. Ya tengo bastante avanzado el proyecto, por el momento tango realizado el eje X y el eje Y, reconozco que es un poco estresante no tener a alguien que te guíe. Estoy a punto de probar el desplazamiento eléctrico de los dos ejes, quiero decir mover ambos ejes mediante Arduino y un programa que he de realizar.
      Creo que si todo sale bien y el Covid-19 me lo permite pronto dispondré de tiempo para terminar el proyecto y describir la experiencia.

      Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.