Arduino Nano - Motor paso a paso 28BYJ-48 con controlador ULN2003
Este tutorial explica cómo usar Arduino Nano para controlar un motor paso a paso 28BYJ-48 utilizando el controlador ULN2003. En detalle, aprenderemos:
- Cómo conectar Arduino Nano al motor paso a paso 28BYJ-48 mediante el controlador ULN2003
- Cómo programar Arduino Nano para controlar un solo motor paso a paso 28BYJ-48 mediante el controlador ULN2003
- Cómo programar Arduino Nano para controlar varios motores paso a paso 28BYJ-48 mediante controladores ULN2003

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del motor paso a paso 28BYJ-48
Los motores paso a paso son excelentes para el control de posición. Dividen una revolución completa en un número de pasos iguales. Estos motores se utilizan en muchos dispositivos, como impresoras, impresoras 3D, máquinas CNC y automatización industrial.
Uno de los métodos más económicos para obtener conocimiento sobre motores paso a paso es utilizar motores 28BYJ-48. Estos suelen venir con una placa de control basada en ULN2003, lo que los hace increíblemente fáciles de usar.
Como se indica en la ficha técnica, el motor 28BYJ-48 opera en modo de paso completo, con cada paso correspondiente a una rotación de 11,25°. Por lo tanto, hay 32 pasos por revolución (360°/11,25° = 32).
Además, el motor tiene un conjunto de engranajes con una reducción de 1/64. Esto se traduce en 32 × 64 = 2048 pasos. Cada paso equivale a 360°/2048 = 0,1758°.
Conclusión: Si el motor está configurado en modo de paso completo, tomará 2048 pasos para completar una revolución.
El motor paso a paso 28BYJ-48 usando la asignación de pines del controlador ULN2003
El motor paso a paso 28BYJ-48 tiene 5 pines. No es necesario preocuparse por las especificaciones de estos pines; simplemente deben conectarse al conector del controlador de motor ULN2003.

Acerca del controlador de motor paso a paso ULN2003
El ULN2003 es un módulo de controlador de motor muy utilizado para motores paso a paso.
- Tiene cuatro LEDs que demuestran la actividad de las cuatro líneas de entrada de control, lo que produce un gran efecto visual cuando el motor da un paso.
- Además, incluye un jumper ON/OFF para separar la alimentación del motor paso a paso.
Disposición de pines del ULN2003

El módulo ULN2003 tiene 6 pines y un conector hembra:
- Pin IN1: se usa para accionar el motor. Debe conectarse a un pin de salida en la placa Arduino Nano.
- Pin IN2: se usa para accionar el motor. Debe conectarse a un pin de salida en la placa Arduino Nano.
- Pin IN3: se usa para accionar el motor. Debe conectarse a un pin de salida en la placa Arduino Nano.
- Pin IN4: se usa para accionar el motor. Debe conectarse a un pin de salida en la placa Arduino Nano.
- Pin GND: este es el pin de tierra común. Debe conectarse a los GND de la placa Arduino Nano y de la fuente de alimentación externa.
- Pin VDD: suministra energía para el motor. Debe conectarse a la fuente de alimentación externa.
- Conector del motor: aquí es donde se enchufa 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 12V DC, necesitamos usar una fuente de 12V. En el caso del motor paso a paso 28BYJ-48, funciona con 5V DC, por lo que utilizaremos una fuente de 5V.
- Sin embargo, incluso si el motor paso a paso requiere una fuente de 5V, por favor no conectes el pin VDD al pin de 5V en el Arduino Nano. En su lugar, conéctalo a una fuente de alimentación externa de 5V, ya que el motor paso a paso consume demasiada energía.
Diagrama de Cableado

This image is created using Fritzing. Click to enlarge image
No es necesario prestar atención al color de los cables del motor paso a paso. Todo lo que se necesita es 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 maneras de regular un motor paso a paso:
- Paso completo
- Medio paso
- Micro-paso
Para aplicaciones básicas, podemos usar el enfoque de paso completo. Los detalles de los tres métodos se describirán en la sección final de este tutorial. Programar estas técnicas puede ser complejo. Afortunadamente, hay muchas bibliotecas que ya han hecho el trabajo por nosotros, así que solo necesitamos utilizarlas.
El IDE de Arduino incluye una biblioteca integrada Stepper. Sin embargo, no le recomendamos utilizar esta biblioteca, ya que:
- Es una biblioteca bloqueante, lo que significa que impide que el Arduino Nano realice otras tareas mientras controla el motor paso a paso.
- No proporciona suficientes funciones.
En su lugar, le sugerimos que utilice la biblioteca AccelStepper. Esta biblioteca ofrece:
- Aceleración
- Desaceleración
- Conducción en modo paso completo y modo medio paso
- Varios motores paso a paso simultáneos, con avance concurrente independiente en cada motor
- Desventaja: No hay soporte para micropasos
Código de Arduino Nano
Pasos R\u00e1pidos
- Haz clic en el icono Bibliotecas en la barra izquierda del IDE de Arduino.
- Busca “AccelStepper”, luego localiza la biblioteca AccelStepper creada por Mike McCauley.
- Haz clic en el botón Instalar para añadir la biblioteca AccelStepper.

- Copia el código anterior y ábrelo con la IDE de Arduino.
- Haz clic en el botón Cargar en la IDE de Arduino para cargar el código al Arduino Nano.
- Entonces deberías ver girar el motor. Debería hacer una revolución en sentido horario, seguida de dos revoluciones en sentido antihorario y luego dos revoluciones en sentido horario.
El procedimiento se realiza de forma continua.
- Consulta la salida en el Monitor Serial.
Cómo controlar múltiples motores paso a paso 28BYJ-48
Descubramos cómo manejar dos motores paso a paso por separado pero a la vez.
Diagrama de cableado para dos motores paso a paso 28BYJ-48

This image is created using Fritzing. Click to enlarge image
Ver La mejor forma de alimentar Arduino Nano y otros componentes.
Código de Arduino Nano para dos motores paso a paso 28BYJ-48
Conocimiento adicional
1. El motor paso a paso vibra mientras se mueve
No se preocupe si el motor paso a paso vibra mientras está en movimiento. Esta es una característica del motor paso a paso. Podemos reducir la vibración utilizando la técnica de micropasos.
Además, debido a esta característica, si se gestiona correctamente, el motor paso a paso puede crear música como si fuera un instrumento musical. Un ejemplo de esto se puede encontrar aquí en Hackster.io.
2. Método de control de motores paso a paso
- Paso completo: La unidad de movimiento es un paso, que equivale al valor en grados especificado en la hoja de datos o 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 el doble de resolución.
- Micro-paso: 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 que el motor se mueva con una mayor resolución. También hace que el motor se desplace más suavemente a bajas velocidades. Cuanto mayor sea el divisor, mayor será la resolución y más suave será el movimiento.
Si la hoja de datos del motor especifica 1,8° por paso:
- Paso completo: El motor se moverá en incrementos de 1,8 grados por paso, resultando en 200 pasos por revolución.
- Paso medio: El motor se moverá en incrementos de 0,9 grados por paso, resultando en 400 pasos por revolución.
- Micro-paso: El motor se moverá en incrementos de 0,45, 0,225, 0,1125, 0,05625 grados por paso, resultando en 800, 1600, 3200, 6400... pasos por revolución.
El método de control utilizado en el código anterior fue el modo de paso completo.
3. Problema de resonancia
Esto es para usuarios avanzados. Los principiantes no necesitan preocuparse por ello. Ocurre en un rango de velocidades, donde la frecuencia de pasos es igual a la frecuencia natural del motor. Podría haber un cambio notable en el sonido que emite el motor, así como un aumento en la vibración. En aplicaciones prácticas, los desarrolladores deberían tenerlo en cuenta.
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.