Motor paso a paso con Arduino (stepper)

Motor paso a paso con Arduino (stepper)

En esta oportunidad les dejo un instructivo sobre como manejar un motor paso a paso con Arduino usando el módulo L298N (puede usarse un L293D dependiendo de la potencia del motor).

Materiales que usaremos

Para este proyecto usaremos los siguiente materiales:

  • 1 motor paso a paso bipolar (cuatro cables)
  • 1 módulo L298N (si quiere probar con un L293D primero verifique consumo motor)
  • 1 Arduino UNO con cable USB (puede ser un Mega 2560)
  • 9 puentes de conección macho-macho
  • 4 puentes de conexión macho-hembra (Arduino – módulo)

Motores paso a paso o stepper

Los motores paso a paso (o stepper, su nombre en Inglés) son motores especiales que permiten controlar el movimiento del mismo con extrema precisión ya que dividen el recorrido de una vuelta en una cierta cantidad de pasos que pueden controlarse uno a uno. La otra característica que tienen es que son muy estables y permanecen en su lugar bastante firmes (se necesita bastante fuerza para vencer su estado de reposo).

Estas características los hacen ideales para robótica. Los motores paso a paso no son económicos (sobre todo los más grandes) pero para proyectos Arduino pueden hacer lo que hago yo y pedir impresoras rotas a amigos y familiares. Las impresoras (muchas de ellas) traen un motor paso a paso chico que sirve para muchos proyectos. En mi caso para el instructivo uso un motor EM-483 de una impresora Epson a chorro de tinta que ya no andaba.

Motor paso a paso con Arduino

En general pueden encontrar las características de los mismos en Internet. En mi caso, lamentablemente no encontré las características técnicas del mismo, pero se puede probar hacer andar uno como este sin encontrar las características teniendo algo de precaución como les explico a continuación.

  • Accionarlo con 5v: si no saben el voltaje, pueden probar hacerlo andar con 5v. La mayoria de los motores andan de 3v en adelante y casi no hay motores que funcionen solo con menos de 5V por lo que podemos decir que es seguro usar 5V.
  • Driver potente: para conectar un motor paso a paso con Arduino intente primero con un driver potente como el que usaremos acá, un L298N
  • Identifique el tipo de motor paso a paso: el nuestro tiene 4 cables y eso lo hace un motor bipolar de 2 bobinas. Existen otro tipos que no cubriremos acá pero pueden preguntarme si tienen dudas.
  • Use una fuente potente: en mi caso me gusta usar una fuente ATX de computadora que tiene mucha potencia y muy buena corriente tanto en 5V como en 12V.
  • Trate de identificar la cantidad de pasos que tiene el motor. Si tiene dudas use 200 pasos en su programa y fijese si da una vuelta completa en la primera parte del mismo. Sino, ajuste los pasos para que el motor de una vuelta al principio.

Yo al mio le puse una cinta de papel en el eje para poder ver mejor su rotación:

Motor paso a paso con Arduino y cinta en eje

La fuente de alimentación

Para nuestro ejemplo de motor paso a paso con Arduino usaremos una fuente ATX de 550W (no hace falta que sea tan grande) ya que entregan suficiente potencia para lo que necesitamos.

Fuente ATX para motor paso a paso con Arduino

Estas fuentes son muy utiles para usar en proyectos Arduino porque entregan mucha potencia tanto a 5V como 12V, además de otros voltajes. Además son ventiladas y soporta mucha carga. Cuando use una fuente de alimentación externa recuerde unificar masas siempre. Las fuentes ATX encienden con un pulso a masa del cable verde. En la foto se ve como hice un puente con un cable macho-macho del cable verde a uno de los negros (masa o GND).

Puente encendido fuente ATX para motor paso a paso con Arduino

Eso será suficiente para que la fuente encienda. Usted puede hacerse una fuente de laboratorio basado en estas fuentes con más sofisticación como boton de encendido y conexiones más estandares. Los cables negros son masa o GND y los rojos son 5V (los que usaremos nosotros).

Las conexiones para el proyecto de motor paso a paso con Arduino

Para simplifica les dejo un dibujo de cómo deben conectar los componentes:

 

Esquema conexion motor paso a paso con Arduino

Preste atención que el motor paso a paso tiene 4 cables y los cables 1 y 3 van juntos, al igual que los 2 y 4 (cada par representa una bobina interna). La fuente alimenta 5V al módulo L298N y un puente le dá tensión al voltaje de entrada también. Desconecte el jumper del regulador de tensión del L298N. Unifique masas uniendo masa del módulo L298N a su Arduino.

En funcionamiento mi motor consume menos de 800mA en total (menos de 400mA por bobina) lo que lo hace factible de ser manejado con un L293D (el cual soporta hasta 600mA por canal), pero puede variar dependiendo del motor por lo que vuelvo a recomendar verificar consumo primero.

El Sketch

A continuación les dejo el Sketch que no es más que una modificación del programa de ejemplo de la librería Libreria stepper Arduino.cc del sitio oficial de Arduino.

#include <Stepper.h>

// Cantidad de pasos por vuelta. En mi caso el motor es de 200 pasos.
#define PASOS 200

// Inicializamos el objeto de la libreria con los pasos y los 4 pines que usamos.
// En este casos son 4 pines porque es un motor bipolar (4 cables)
Stepper myStepper(PASOS, 8, 9, 10, 11);

void setup() {
  // Ajustamos la velocidad del motor a 100rpm
  myStepper.setSpeed(100);
  
  // Inicializamos el monitor serial
  Serial.begin(9600);
}

void loop() {
  // Primero una vuelta en sentido horario
  Serial.println("1 vuelta sentido horario...");
  myStepper.step(PASOS);
  delay(1000);

  // Ahora otra vuelta en sentido contrario
  Serial.println("1 vuelta sentido anti-horario...");
  myStepper.step(-PASOS);
  delay(1000);
  
  // Ahora una vuelta sentido horario en 8 tramos de 45 grados
  Serial.println("1 vuelta sentido horario en tramos de 45 grados...");
  for (int x=0; x<8; x++) {
    myStepper.step(PASOS/8);
    delay(500);
  }
  delay(1000);
  
  // Ahora una vuelta sentido anti-horario en 8 tramos de 45 grados
  Serial.println("1 vuelta sentido horario en tramos de 45 grados...");
  for (int x=0; x<8; x++) {
    myStepper.step(-PASOS/8);
    delay(500);
  }
  delay(1000);
}

El funcionamiento esperado luego de cargar el programa y ejecutarlo, es que el motor de una vuelta horaria, otra anti-horaria, luego de una vuelta en 8 pasos de 45° con una espera de 1 segundo entre pasos. Luego lo mismo anti-horario. Espera 5 segundos y repite todo.

 

 

4 comentarios en “Motor paso a paso con Arduino (stepper)”

  1. Muy interesante, me ha gustado mucho el código, también soy nuevo en arduino.
    Estoy intentando colocar unos botones, por ej 3 botones, para cada uno de esos casos, que con un botón de 3 vueltas, con el otro “1 vuelta sentido horario en tramos de 45 grados…” etc
    Alguna pista de como se podría hacer?
    felicitaciones por el turorial!

    • Hola Alejandro, gracias por escribirnos. En una de las páginas del Curso de Arduino dedicada a entradas digitales explico lo básico para conectar y leer un switch (boton) mediante entradas digitales: http://www.arduinohobby.com/entradas-digitales/.

      Creo que entre ese tutorial y lo explicado con Motores paso a paso podrías comenzar a experimentar. Saludos y suerte con tu proyecto!

  2. Hola mi nombre es Lalo y me gusta bastante su projecto
    Mire yo tengo un projecto par hacer mover un motor de paso de 12 voltios pero
    necesito que se mueva exactamente 45 grados, 90 grados, 180 grados y 360 grados
    yo ahora soy nuevo en esto y no se como escribir la libreria para poder hacer posible esto a cuento con un arduino uno usted creee que el scketch que ud hizo podria modificarse para hacer esto posible muchas gracias espero su respuesta y espero no quitarle mucho tiempo Gracias.

    • Hola Lalo, gracias por escribirnos. Si, claro que se puede adaptar para que el motor se mueva en los grados que dijo. Lo más importante es conocer la cantidad de pasos que da el motor en una vuelta, y luego definir cuantos pasos refresentan 45 grados, el doble sera 90 grados y asi. Yo diria que lo intente, no parece dificil de realizar. Suerte con eso!

Deja un comentario