Driver A4988 y Nema 17

DRIVER A4988 + NEMA 17, CALIBRAR DRIVER Y CONEXIONES.

Visita mis redes sociales.
YouTube
YouTube
Instagram
Facebook
Google+

Hoy vemos el driver de control A4988 y el motor paso a paso Nema 17, vamos a ver como ajustar el voltaje de referencia del driver y como conectarlo.

 

Uno de los drivers mas comunes del mercado es el A4988, es muy utilizado en el mundo de las impresoras 3D y las maquinas CNC, es capaz de entregar hasta 2 amperios de corriente máxima  siempre y cuando tengamos una buena refrigeración , por lo que para utilizarlo en aplicaciones de mas carga, tendremos que pasar a otros  modelos superiores como puede ser el DVR8825 capaz de entregar hasta 2.5 A.

 

Link del código de Arduino y esquemas: https://mega.nz/#!ZA0XWRBB

Clave del link: !H4gZm7gvQAbZ1uoE4wc_rWSg0pxNoSy0Vw2ZDFQNXx8

 

Driver A4988 : Corriente nominal  1.5 A – Corriente Max  2 A – Voltaje  8-35V

Driver DVR8825: Corriente nominal  2 A – Corriente Max  2.5 A – Voltaje  8-45V

—VAMOS A VER COMO SE CONECTA—

  • Tensión de control : Entra por los dos pines de abajo a la derecha, y esta tension puede variar entre 3 y 5.5 voltios ( como los controladores de Arduino)
  • Tensión de potencia : Entra por dos pines de arriba a la derecha, y esta tension puede variar entre 8 y 35 voltios (importante poner un condensador de 100 micro faradios y 35 V.
  • Bobinas de motor : Se conectan en los pines 2B y 2A (1º bobina) 1A y 1B (2º bobina) 
  • Sentido de giro del motor : Entra por el pin de abajo a la izquierda y determina el sentido de giro en función de poner el pin en HIGH o LOW .
  • Distancia que recorre el motor : Recoge los pulsos el 2º pin de abajo a la izquierda (ver abajo la configuración de micropasos)
  • Dejar el servo en Standby : Esta función la recoge el pin de Sleep.
  • Reinicio de laa funcion : Esta función la recoge el pin de Reset.
  • Configuración de los micropasos : (ver abajo)
  • Habilitar el driver : Es una habilitación externa que la recoge el pin Enable.

A4988 y Nema 17

 

—CONFIGURACION DE MICROPASOS—

El driver A4988 incorpora unos pines (ms1, ms2 y ms3) que se utilizan para configurar la resolución de los pasos en los que se mueve el motor. Si vamos a trabajar con pasos completos o full step, tenemos que dejar estos pines sin conectar, y si queremos trabajar en micro pasos tendremos que conectarlos como nos explica el fabricante en esta tabla, puenteandolos entre si, o conectandolos a 5 voltios.

micropasos a4988

VENTAJAS DE LOS PASOS COMPLETOS :    El motor genera su maximo par de trabajo.

DESVENTAJAS DE LOS PASOS COMPLETOS:    Los movimientos del motor son mas bruscos y hace mas ruido.

VENTAJAS DE LOS MICROPASOS :    El motor gira mas continuo y suave  cuanto mas pequeños son los pasos, ademas se minimiza mucho el ruido.

DESVENTAJAS DE LOS MICROPASOS :    Pierden una gran cantidad de par motor

  

Los motores Nema normalmente vienen físicamente dotados de un paso de 1.8º, esto quiere decir que para dar una vuelta completa (360º) necesitamos entregar 200 pulsos desde nuestro control.

Si utilizamos medios pasos, el angulo de cada paso se reduce a la mitad, 0.9º es decir, para dar una vuelta completa (360º) necesitamos entregar 400 pulsos desde nuestro control.

Con cuartos de paso:    Ángulo de paso 0.45º, necesitamos entregar 800 pulsos para hacer girar el motor 360º

Con octavos de paso:    Ángulo de paso 0.225, necesitamos entregar 1600 pulsos para hacer girar el motor 360º

Con dieciseisavos de paso:   Ángulo de paso 0.1125, necesitamos entregar 3200 pulsos para hacer girar el motor 360º

 

//dependiendo de la aplicación del motor tendremos que configurar estos paso para que el movimiento sea lo mas suave posible sin sacrificar par motor.

 

—AJUSTAR EL VOLTAJE DE REFERENCIA DEL DRIVER—

Para que el motor no pierda pasos ni se pueda quemar por un exceso de corriente, tenemos que ajustar el voltaje de referencia del driver, y para hallar este valor necesitamos conocer 2 datos:

  • Corriente máxima del motor que vamos a utilizar    (ejemplo: 1 amperio)
  • Valor de las resistencias de sensibilidad del driver   (ejemplo 0.1 ohmio)

Estas son las resistencias de sensibilidad son resistencias de tipo SMD (en internet hay varios conversores que os dan el valor si no lo sabéis)

a4988

 

LA FORMULA DICE QUE LA CORRIENTE MÁXIMA = VOLTAJE DE REFERENCIA DIVIDIDO ENTRE 8 POR LA RESISTENCIA DE SENSIBILIDAD.

Por lo tanto:

Vref = Imax x (8 x rs)

Vref = 1 x (8 x 0.1)

Vref = 0.8

Si vamos a trabajar en pasos completos tenemos que limitar esta tensión al 70 %, que es lo máximo que va a entregar el driver.

0.8 – 70% =  0.56

a4988

Con la ayuda de un polimetro  en corriente continua, tenemos que medir la tensión que hay entre GND y el potenciometro de ajuste, tenemos que girar este hasta conseguir el voltaje que nos ha dado el resultado de la operación 

//Tenemos la alimentación de control del driver conectada (3 5.5 v)

a4988

 

—VÍDEO—

 

 

—CODIGO ARDUINO—

//———–WWW.JAVIERARNEDO.COM————

#define VELOCIDAD 2000              //velocidad de giro del motor, cuanto menos valor + velocidad

int pasos = 13;                                     //definimos como “entero” pin digital 13 para dar los pasos al servo
int direccion = 9;                               //definimos como “entero” pin digital 9 para dar el sentido de giro
int reset = 10;                                     //definimos como “entero” pin digital 10 para poner en “enable” el motor
int totalpasos = 2000;                     //definimos como “entero” totalpasos para completar un avance
int marcha = 8;                                  //definimos como “entero” pin digital 8 para comenzar un ciclo (marcha)

void setup() {
pinMode(pasos, OUTPUT);            //definimos pasos como salida digital
pinMode(direccion, OUTPUT);     //definimos direccion como salida digital
pinMode(reset, OUTPUT);            //definimos reset como salida digital
}

void loop() {

digitalWrite(reset, LOW);             //Mientras reset este en LOW, el motor permanece apagado
delay(2000);                                    //Retardo en la instruccion
digitalWrite(reset, HIGH);           //Cuando reset se encuentre en HIGH el motor arranca
digitalWrite(direccion, HIGH);   //mandamos direccion al servo

for (int i = 0; i<totalpasos; i++)   //Equivale al numero de vueltas (200 pasos son 360º grados de servo )

{
digitalWrite(pasos, HIGH);                // ponemos a high “pasos”
digitalWrite(pasos, LOW);                  // ponemos a low “pasos”
delayMicroseconds(VELOCIDAD);  // leemos la referencia de velocidad
}

//—————————Cambio de sentido de giro——————————–

digitalWrite(reset, LOW);                 //Mientras reset este en LOW, el motor permanece apagado
delay(2000);                                       //Retardo en la instruccion
digitalWrite(reset, HIGH);             //Cuando reset se encuentre en HIGH el motor arranca
digitalWrite(direccion, LOW);      //mandamos direccion al servo

for (int i = 0; i<totalpasos; i++)   //Equivale al numero de vueltas (200 pasos son 360º grados de servo )
{

digitalWrite(pasos, LOW);                     // ponemos a high “pasos”
digitalWrite(pasos, HIGH);                  // ponemos a low “pasos”
delayMicroseconds(VELOCIDAD);   // leemos la referencia de velocidad
}
}

//———–WWW.JAVIERARNEDO.COM————

 

 

 

 

 

 

 

 

 

Visita mis redes sociales.
YouTube
YouTube
Instagram
Facebook
Google+

4 thoughts on “DRIVER A4988 + NEMA 17, CALIBRAR DRIVER Y CONEXIONES.”

  1. HOLA Javier, estoy con un proyecto que he copiado a un tercero, que integra arduino, pololu A4988 y un motor paso a paso entre otras cosas, se trata de una puerta para gallinero que se abre o cierra según la luminosidad. Funciona todo correctamente, pero me he fijado que el motor no se desactiva (o desconecta) para que consuma lo menos posible cuando está parado. Te dejo un enlace con el .fzz y el .ino para que veas el código y si puedes y quieres me eches una mano o me ilumines. Gracias!

    https://drive.google.com/file/d/1f_cur7mt_97fJmJK0WaIorcaZaxYeS8Y/view?usp=sharing

    aquí el vídeo en el que me he basado (copiado)

    https://www.youtube.com/watch?v=51EZkcV1qAA&feature=youtu.be

  2. Hola buenas tardes magnifica aportación,llevaba tiempo buscando esto y por suerte hoy lo he encontrado,muy bien explicado y redactado.Muy agradecido José

  3. hola como estas necesito de tu ayuda.tengo un motor nema 17 y el driver 4988 y el arduino. mi consulta es la siguiente. necesito que el motor gire a la misma velocidad de este video pero que el giro sea infinito. y al sentido de giro lo quiero poner con un pulsador doble. cuando pulso para un lado se active y gire y cuando pulso para el otro lado lo mismo. si serias tan amable de mandarme los codigos.desde ya muchas gracias

  4. Muy didactico, facil de entender. Buen trabajo.

    Ahora tengo una pregunta, si tengo dos motores conectados en paralelo, considero la corriente como la suma de ambas consumos, para aplicar a la formula?

    Gracias Javier.

    Richard

Deja un comentario

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