Arduino - Controla el motor paso a paso 28BYJ-48 utilizando el controlador ULN2003
En este tutorial, vamos a aprender:
- Cómo controlar un motor paso a paso 28BYJ-48 con Arduino y el controlador ULN2003
- Cómo controlar varios motores paso a paso 28BYJ-48 con Arduino y el controlador ULN2003

Los motores paso a paso son excelentes motores para el control de posición. Los motores paso a paso dividen una revolución completa en un número de pasos iguales. Se utilizan en muchos dispositivos, como una impresora, una impresora 3D, máquinas CNC y en la automatización industrial.
Una de las formas más económicas de aprender sobre motores paso a paso es usar motores paso a paso 28BYJ-48. Por lo general, vienen con una placa de controlador basada en ULN2003, lo que los hace muy fáciles de usar.
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del motor paso a paso 28BYJ-48
Según la hoja de datos, cuando el motor 28BYJ-48 funciona en modo de paso completo, cada paso corresponde a una rotación de 11,25°. Eso significa que hay 32 pasos por revolución (360°/11,25° = 32).
Además, el motor tiene un conjunto de engranajes de reducción de 1/64. Lo que significa que en realidad tiene 32 × 64 = 2048 pasos. Cada paso equivale a 360°/2048 = 0,1758°.
Conclusión: si el motor realiza 2048 pasos (en modo de paso completo), el motor da una revolución
Distribución de pines
El motor paso a paso 28BYJ-48 incluye 5 pines. No necesitamos preocuparnos por los detalles de estos pines. Solo necesitamos conectarlo al conector del controlador ULN2003.

Acerca del Módulo Controlador de Motor Paso a Paso ULN2003
El ULN2003 es uno de los módulos de control de motor más comunes para motores paso a paso.
- El módulo tiene cuatro LEDs que muestran la actividad de cuatro líneas de entrada de control (para indicar el estado de paso). Proporcionan un efecto impresionante al avanzar en pasos.
- El módulo también viene con un jumper de encendido/apagado para aislar la alimentación del motor paso a paso.
Disposición de pines de ULN2003

El módulo ULN2003 incluye 6 pines y un conector hembra:
- Pin IN1: se utiliza para accionar el motor. Conéctalo a un pin de salida en Arduino.
- Pin IN2: se utiliza para accionar el motor. Conéctalo a un pin de salida en Arduino.
- Pin IN3: se utiliza para accionar el motor. Conéctalo a un pin de salida en Arduino.
- Pin IN4: se utiliza para accionar el motor. Conéctalo a un pin de salida en Arduino.
- Pin GND: es un pin de tierra común. DEBE conectarse a ambos GND del Arduino y de la fuente de alimentación externa.
- Pin VDD: suministra energía para el motor. Conéctalo a la fuente de alimentación externa.
- Conector del motor: aquí es donde se conecta el motor.
※ Nota:
- El voltaje de la fuente de alimentación externa debe ser igual al voltaje del motor paso a paso. Por ejemplo, si un motor paso a paso funciona con 12 V de corriente continua, debemos usar una fuente de 12 V. En el caso del motor paso a paso 28BYJ-48, que funciona con 5 V de corriente continua, usaremos una fuente de 5 V.
- Incluso si un motor paso a paso requiere una fuente de 5 V, por favor no conecte el pin VDD al pin de 5 V del Arduino. En su lugar, conéctelo a una fuente de 5 V externa. Eso se debe a que el motor paso a paso consume demasiada potencia.
Diagrama de Cableado

This image is created using Fritzing. Click to enlarge image
Por favor, tenga en cuenta que no es necesario preocuparse por el color de los cables del motor paso a paso. Solo necesitamos conectar el conector macho (del motor paso a paso 28BYJ-48) al conector hembra (del controlador ULN2003).
Cómo programar para controlar un motor paso a paso
Hay tres métodos para controlar un motor paso a paso:
- Paso completo
- Medio paso
- Micro-paso
Para aplicaciones simples, podemos usar el método de paso completo. Los detalles de los tres métodos se presentarán en la última parte de este tutorial. La programación de estos métodos es complicada. Afortunadamente, existen muchas bibliotecas que lo hacen por nosotros. Solo necesitamos usar una biblioteca.
El IDE de Arduino tiene una biblioteca integrada Stepper. Sin embargo, no recomendamos usar esta biblioteca porque:
- La biblioteca es bloqueante. Significa que bloquea a Arduino para que no pueda realizar otras tareas mientras controla el motor paso a paso.
- No dispone de suficientes funciones.
En su lugar, recomendamos usar la biblioteca AccelStepper. Esta biblioteca admite:
- Aceleración
- Desaceleración.
- Conducción en paso completo y medio paso.
- Múltiples motores paso a paso simultáneos, con avance concurrente independiente en cada motor paso a paso.
- Desventaja: NO admite conducción por micropasos
Código de Arduino
Pasos R\u00e1pidos
- Navega hasta el icono Bibliotecas en la barra izquierda del IDE de Arduino.
- Busca “AccelStepper”, luego localiza la biblioteca AccelStepper de Mike McCauley
- Haz clic en el botón Instalar para instalar la biblioteca AccelStepper.

- Copie el código anterior y ábralo con Arduino IDE
- Haga clic en el botón Subir en Arduino IDE para cargar el código en Arduino
- Observe que el motor está girando. Debería:
- Gire una revolución en sentido horario, y luego
- Gire dos revoluciones en sentido antihorario, y luego
- Gire dos revoluciones en sentido horario.
- Ver el resultado en el Monitor Serial
Ese proceso se repite infinitamente.
Cómo controlar varios motores paso a paso 28BYJ-48
Vamos a aprender a controlar dos motores paso a paso de forma independiente al mismo tiempo.
Esquema de cableado para dos motores paso a paso 28BYJ-48

This image is created using Fritzing. Click to enlarge image
Código de Arduino para dos motores paso a paso 28BYJ-48
Conocimientos Adicionales
1. El motor paso a paso vibra mientras se mueve
No te preocupes si el motor paso a paso vibra mientras se mueve. Esta es una característica del motor paso a paso. Podemos reducir la vibración utilizando el método de control por micropasos.
Además, debido a esta característica, si lo controlamos correctamente, el motor paso a paso puede producir sonidos musicales como si fuera un instrumento musical. Puedes ver este proyecto en Arduino Project Hub.
2. Método de control de motores paso a paso
- Paso completo: La unidad de movimiento es un paso, que equivale a un valor en grados especificado en la hoja de datos o en el manual del motor paso a paso.
- Medio paso: Divide cada paso completo en dos pasos más pequeños. La unidad de movimiento es la mitad del paso completo. Este método permite que el motor se mueva con una resolución doble.
- Micropaso: Divide cada paso completo en muchos pasos más pequeños. La unidad de movimiento es una fracción del paso completo. La fracción puede ser 1/4, 1/8, 1/16, 1/32 o incluso más. Este método permite al motor moverse con una mayor resolución. También hace que el movimiento del motor sea más suave a bajas velocidades. Cuanto mayor sea el denominador, mayor resolución y un movimiento más suave.
Por ejemplo, si la hoja de datos del motor especifica 1,8 grados por paso:
- Paso completo: El motor puede moverse con 1.8 grados por paso <⇒ 200 pasos por revolución
- Medio paso: El motor puede moverse con 0.9 grados por paso <⇒ 400 pasos por revolución
- Micropaso: El motor puede moverse con 0.45, 0.225, 0.1125, 0.05625 grados por paso <⇒ 800, 1600, 3200, 6400... pasos por revolución
El código anterior utilizó el método de control de pasos completos.
3. Problema de resonancia
Estos son los usos avanzados. Los principiantes NO necesitan prestar atención a ello. Esto ocurre en un rango de velocidad, en el cual la tasa de pasos es igual a la frecuencia natural del motor. Puede haber un cambio audible en el ruido que emite el motor, así como un aumento en la vibración. En aplicaciones reales, el desarrollador DEBE prestar atención a este problema.
Video Tutorial
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.
WARNING
Tenga en cuenta que este tutorial está incompleto. Publicaremos en nuestra página de Facebook cuando el tutorial esté completo. Déle like para mantenerse actualizado.