Vous êtes sur la page 1sur 16

16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

   Mi cuenta
   

Inicio Tutoriales Clases presenciales

Servicios Blog

Arduino y el driver de motores paso a paso


de Pololu
Inicio / Tutorial / Arduino y el driver de…

Los motores paso a paso son, como indica su nombre, motores que se mueven dando
pasos concretos. Tienen varias bobinas que están organizadas en grupos, a los que se
llaman «fases». Para alimentar cada «fase» de manera secuencial, el motor rotará paso
a paso. Con un Arduino podemos conseguir controlar de forma muy precisa la posición
y/o la velocidad. Este es el principal motivo por el que los motores paso a paso son el
componente ideal para proyectos en los que se requiere un control preciso del
movimiento.

Este vídeo de learnengineering nos explica detalladamente cómo funciona un motor


paso a paso (subtítulos disponibles):
https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 1/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

How does a Stepper Motor work ?

Son muchos los proyectos que contienen motores paso a paso, manejarlos desde
Arduino nos permite tener un control preciso de cada movimiento. Existen motores
paso a paso de diferentes tamaños, formas y características eléctricas. ¿Cómo
elegimos el que mejor se adapta a nuestro proyecto? Veamos cuáles son las ventajas e
inconvenientes de los motores paso a paso.

Ventajas

Posición: Los motores paso a paso se mueven en pasos precisos y repetidos, lo


que los hace fundamentales para aplicaciones que requieren posiciones muy
precisas, como es el caso de las impresoras 3D, CNC o Plotters.

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 2/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

Control de la velocidad: que los movimientos del motor sean paso a paso también
nos permite tener un control excelente de la velocidad angular, lo que hace que sean
comúnmente usados en automatismos y robótica.
Torque a velocidades bajas: los motores DC no tienen demasiado torque a
velocidades bajas. Por su parte, un motor paso a paso tienen su torque máximo a
bajas velocidades, por lo que son una buena elección en proyectos que tengan
como requisitos velocidad baja y precisión alta.

Inconvenientes

Baja e ciencia: A diferencia de los motores DC, la corriente que consumen los
motores paso a paso es independiente de la carga. Estos motores consumen la
mayor parte de la corriente estando parados, de ahí que tiendan a calentarse.
Torque limitado en altas velocidades: En general, los motores paso a paso tienen
menos torque a altas que a bajas velocidades. No obstante, se puede optimizar el
rendimiento a velocidades altas, para ello necesitaremos emparejar nuestro motor
paso a paso con un controlador adecuado.
No nos devuelve feedback: A diferencia de los servos, los motores paso a paso no
nos muestran cuál es su posición exacta en cada momento. Aunque se puede
conseguir una muy buena precisión dando una «vuelta de reconocimiento». Limitar
los cambios o hacer «home» son unas de las formas más comunes de guardar o
establecer una posición de referencia.

Para hacer este tutorial voy a usar un motor paso a paso Nema 17, comúnmente usado
en maquinarias que necesitan de una alta precisión de la posición, como es la CNC o
la impresora 3D.

[product sku=»MOT.NEMA17.2A5″]

Controlar un motor paso a paso con Arduino es un poco más difícil que controlar un
motor DC. Los motores paso a paso necesitan un controlador especí co para
alimentar las «fases» de forma secuencial y hacer que el motor se mueva.

Es habitual encontrarse proyectos que usan el controlador A4988 de Pololu, que es el


que usamos en este tutorial. También puedes encontrar su versión mejorada A4988
Black y el súper controlador de Pololu DRV8825.

[products skus=»POL.A4988.V, POL.A4988.B, POL.DRV8825, POL.A4988.V.PS,


POL.A4988.B.PS, POL.DRV8825.PS»]

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 3/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

¿Qué necesitas conocer del


controlador de motores A4988 de
Pololu?
Las características principales de este controlador A4988 de Pololu son:

Fácil control del paso y la dirección


5 resoluciones de pasos diferentes: 1, 1/2, 1/4, 1/8 o 1/16 pasos
Límite de corriente ajustable, que te permite establecer la máxima corriente de
salida con un potenciómetro, pudiendo usar voltajes por encima del voltaje nominal
de tu motor paso a paso, consiguiendo así tasas de pasos más altas
35 V de voltaje máximo
Funciona con microcontroladores de 3.3 V y 5 V
Desconexión automática ante temperaturas altas y sobrecarga
Protección ante cortocircuitos
PCB de 4 capas, 56.7g de cobre PCB (mejora la disipación del calor) y un pad GND
expuesto bajo el integrado

¿Qué signi can cada uno de sus pines?


El controlador de motores paso a paso A4988 de Pololu tiene un total de 16 pines.
¡Veamos para qué sirven cada uno de ellos!

ENABLE Activa/desactiva las salidas al motor

MS1, MS2, MS3 Determinan la resolución del paso del motor

RESET RESET

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 4/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

SLEEP SLEEP

STEP Controla el paso del motor

DIR Controla la dirección del motor

VMOT Alimentación del motor (de 8V a 35V)

2B, 2A, 1A, 1B Pines para el conector del motor

VDD Alimentación de la lógica del motor (3.3V o 5V)

GND GND

¿Quieres saber cómo controlar un


motor paso a paso con Arduino?
¡Vamos!
¿Qué vamos a usar?
[products skus=»ARD.UNO.SMD.R3, BREAD.400.BL, PROTO.CABLES.MM,
MOT.NEMA17.2A5, POL.A4988.V.PS, POL.POPI.AA.2X4″]

¿Lo tienes todo? ¡Empezamos!

Esquema de conexión
Lo vemos paso a paso:

1. Conectamos la breadboard a Arduino. Llevamos un cable (rojo) desde 5V a la la roja


de la breadboard y un cable (negro) desde GND a la la azul.

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 5/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

2. Colocamos el controlador A4988 de Pololu en la breadboard. Con el n de evitar


conexiones indeseadas, lo pinchamos en el centro de la breadboard, yo he puesto el
potenciómetro hacia la izquierda.

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 6/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

3. Alimentamos el controlador A4988 con Arduino. Llevamos un cable (naranja) desde


la la roja de la breadboard hasta el pin VDD del driver y un cable (azul) desde la la
azul de la breadboard al pin GND del chip.

4. Conectamos el motor. Conectamos cada uno de sus cables a los 4 pines de salida
2B, 2A, 1A, 1B. No importa cómo lo conectes, lo único que cambia es el sentido del

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 7/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

giro del motor Nema 17.

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 8/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

5. Alimentamos el motor. Para alimentar el motor vamos a usar una fuente


independiente. ¡No podemos alimentar el motor con los 5V de Arduino! ¿Por qué?
Porque el regulador de nuestra placa Arduino UNO entrega hasta 800mA, por lo que al
conectar el motor Nema 17 estaríamos exigiéndole demasiado.

Vamos a usar pilas AA en un portapilas de 8 pilas (12V) que conectamos el cable


negro a GND y el cable rojo al pin VMOT del driver A4988 de Pololu. ¡No conectes y
desconectes el motor cuando lo estés alimentando, puedes destruir el controlador de
motores!

Los controladores de motores necesitan ser «calibrados» para limitar la corriente que
pasa por las bobinas del motor y así no dañar ni el motor, ni el controlador. Si no lo has
hecho ya, realiza el tutorial Cómo calibrar el controlador de motores paso a paso y
vuelve a este punto cuando lo hayas hecho.

6. Para controlar la resolución del paso del motor con el driver A4988, necesitamos
con gurar los pines MS1, MS2 y MS3. En la siguiente tabla vemos en qué posición
(high/low) hay que poner cada uno de los pines según la resolución del paso que
necesitemos en nuestro proyecto.

MS1 MS2 MS3 Resolución del micropaso

LOW LOW LOW 1 paso

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 9/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

HIGH LOW LOW 1/2 paso

LOW HIGH LOW 1/4 paso

HIGH HIGH LOW 1/8 paso

HIGH HIGH HIGH 1/16 paso

Aquí tenemos dos alternativas:

a. Conectar MS1, MS2 y MS3 a tres pines digitales de nuestro Arduino y programarlos
según la resolución del paso que hayamos decidido.

b. Conectar MS1, MS2 y MS3 a 5V y GND de Arduino según la resolución del paso
decidida. En mi opinión, esta opción me parece más interesante puesto que, por lo
general, no vamos a querer modi car el paso, así pues si podemos dejarlo jo y,
además, no ocupar pines de nuestro Arduino sin necesidad.

Por ejemplo, si queremos una resolución de 1/2 paso, conectamos MS1 a 5V (cable
amarillo) y, MS2 y MS3 a GND (cables verde y marrón, respectivamente).

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 10/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

Si lo que queremos es una resolución de 1/8 pasos conectamos MS1 (cable amarillo)
y MS2 (cable rosa) a 5V y MS3 (cable marrón) a GND.

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 11/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

7. Para controlar el paso del motor Nema 17 con el driver A4988 de Pololu,
conectamos el pin STEP del driver A4988 de Pololu con un pin digital de Arduino, yo lo
he conectado al pin 10.

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 12/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

8. Para controlar la dirección del motor Nema 17 con el driver A4988 de Pololu,
conectamos el pin DIR del driver A4988 de Pololu con un pin digital de Arduino, yo lo he
conectado al pin 12.

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 13/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

¡Ya está todo conectado! ¡Vamos a darle vida al motor!

Programación en Arduino IDE


1 /**

2 * Gira motor paso a paso con driver de Pololu.


3 *

4 * Este ejemplo es de dominio público.

5 *
6 * Modificado el 19 de enero de 2017

7 * por Pablo Bacho para Fábrica Digital

8 */
9
10 const int STEP = 9; // Pin STEP

11 const int DIR = 10; // Pin DIR


12 const int PASOS_POR_VUELTA = 200; // Pasos por vuelta de nuestro motor

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 14/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

13 const int PASOS_RPM = 60; // Velocidad en RPM

14
15 // Con la velocidad y el número de pasos por vuelta, podemos calcular

16 // el periodo con el que debemos actuar sobre el pin STEP.

17 const int PASOS_PERIODO = 1000 * (PASOS_RPM / 60) / PASOS_POR_VUELTA;


18
19 void setup() {

20 // Vamos a escribir sobre los pines STEP y DIR, por lo que son salidas
21 pinMode(STEP, OUTPUT);

22 pinMode(DIR, OUTPUT);

23 }
24
25 void loop() {

26 // Empieza en un sentido
27 digitalWrite(DIR, HIGH);
28
29 // Haz PASOS_POR_VUELTA iteraciones

30 for(uint32_t i=0; i<PASOS_POR_VUELTA; i++) {


31 digitalWrite(STEP, HIGH); // Sube el pin STEP

32 delay(PASOS_PERIODO / 2); // Mitad del periodo

33 digitalWrite(STEP, LOW); // Vuelve a bajarlo


34 delay(PASOS_PERIODO / 2); // La otra mitad

35 }

36
37 // Cambia de sentido

38 digitalWrite(DIR, LOW);

39
40 // Haz PASOS_POR_VUELTA iteraciones en el otro sentido

41 for(uint32_t i=0; i<PASOS_POR_VUELTA; i++) {

42 digitalWrite(STEP, HIGH);
43 delay(PASOS_PERIODO / 2);

44 digitalWrite(STEP, LOW);

45 delay(PASOS_PERIODO / 2);
46 }
47
48 }

vuelta_y_vuelta_paso_a_paso.ino hosted with by GitHub view raw

¡Comparte con tus amigos!

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 15/16
16/5/2019 Arduino y el driver de motores paso a paso de Pololu – Fábrica Digital

Ò Õ á
Deja un™ comentario

Debes Iniciar Sesión para publicar un comentario.

Noticias

Así va hoy a 3 de nuestros primeros estudiantes

Campamento de verano 2018

Reparación con impresión 3D de un servo para camiones

Taller de Iniciación a Arduino (Abril 2018)

¡Pasa un día aprendiendo Arduino!

Categorías

Electrónica

Impresión 3D

Maker

Novedades

Sobre nosotros Términos y Condiciones Métodos de pago


de Venta aceptados:
Dónde estamos
Política de Privacidad
Contacto
Política de Cookies Con la tecnología y
seguridad de:

Hecho con pasión por Fábrica Digital desde Cádiz, España

https://fabricadigital.org/tutoriales/arduino-y-el-driver-de-motores-paso-a-paso-de-pololu/ 16/16

Vous aimerez peut-être aussi