Arduino Nano ESP32 - Motor paso a paso 28BYJ-48, controlador ULN2003
En este tutorial, cubriremos los siguientes temas:
- Controlar un único motor paso a paso 28BYJ-48 con Arduino Nano ESP32 y controlador ULN2003.
- Gestionar varios motores paso a paso 28BYJ-48 utilizando Arduino Nano ESP32 y controlador ULN2003.

Los motores paso a paso destacan en el control de posición de alta precisión, ya que dividen una revolución completa en pasos discretos. Estos motores encuentran aplicaciones en una amplia gama de dispositivos, que incluyen impresoras, impresoras 3D, máquinas CNC y sistemas de automatización industrial.
Un método asequible para obtener una comprensión de los motores paso a paso es experimentar con los motores paso a paso 28BYJ-48. Normalmente, estos motores vienen con placas de driver basadas en ULN2003, lo que simplifica enormemente su utilización.
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
Según la hoja de datos, el motor 28BYJ-48, al operar en modo de paso completo, se desplaza en incrementos de 11,25 grados, resultando en 32 pasos por revolución completa (según lo calculado: 360°/11,25° = 32).
Además, el motor incorpora un juego de engranajes de reducción 1/64, lo que aumenta efectivamente su número de pasos a 32 × 64, dando como resultado 2048 pasos por revolución. Cada uno de estos 2048 pasos corresponde a una rotación de 360°/2048, lo que equivale aproximadamente a 0,1758 grados por paso.
Conclusión: si el motor da 2048 pasos (en modo de paso completo), el motor da una revolución
Esquema de pines
El motor paso a paso 28BYJ-48 tiene 5 pines. No es necesario preocuparse por los detalles de estos pines. Solo hay que conectarlo al conector del controlador ULN2003.

Acerca del módulo de controlador de motor paso a paso ULN2003
El ULN2003 se destaca como un módulo controlador de motor muy utilizado para motores paso a paso. Las características clave del módulo incluyen:
- Cuatro LEDs que se iluminan para indicar la actividad de las cuatro líneas de entrada de control, reflejando de forma eficaz el estado de paso actual del motor. Estos LEDs no solo cumplen una función práctica, sino que también añaden un elemento visual al proceso de paso a paso.
- Un jumper ON/OFF está integrado en el módulo, permitiendo aislar la alimentación al motor paso a paso conectado. Esta característica ofrece una forma conveniente de controlar la fuente de alimentación del motor, permitiendo una gestión eficiente de la energía.
Disposición de pines de ULN2003

El módulo ULN2003 incluye 6 pines y un conector hembra:
- Pin IN1: se usa para accionar el motor. Conéctalo a un pin de salida en Arduino Nano ESP32.
- Pin IN2: se usa para accionar el motor. Conéctalo a un pin de salida en Arduino Nano ESP32.
- Pin IN3: se usa para accionar el motor. Conéctalo a un pin de salida en Arduino Nano ESP32.
- Pin IN4: se usa para accionar el motor. Conéctalo a un pin de salida en Arduino Nano ESP32.
- Pin GND: es un pin de tierra común. DEBE conectarse a los dos GND: el del Arduino Nano ESP32 y el de la fuente de alimentación externa.
- Pin VDD: suministra energía al motor. Conéctalo a la fuente de alimentación externa.
- Conector del motor: aquí es donde se conecta el motor.
※ Nota:
Cuando se trata de alimentar motores paso a paso, es importante seguir estas pautas:
- Asegúrese de que el voltaje de la fuente de alimentación externa coincida con los requisitos de voltaje del motor paso a paso. Por ejemplo, si su motor paso a paso opera a 12 V CC, es crucial usar una fuente de alimentación de 12 V. En el caso del motor paso a paso 28BYJ-48, que funciona a 5 V CC, es imperativo emplear una fuente de alimentación de 5 V.
- Es importante señalar que, incluso si un motor paso a paso está diseñado para funcionar con una fuente de alimentación de 5 V, NO conecte el pin VDD al pin de 5 V en el Arduino Nano ESP32. En su lugar, conecte el pin VDD a una fuente de 5 V externa. Esta medida de precaución es esencial porque los motores paso a paso pueden consumir una cantidad significativa de energía, lo que podría superar las capacidades de la fuente de alimentación del ESP32, lo que podría causar problemas o daños.
Diagrama de Cableado

This image is created using Fritzing. Click to enlarge image
Por favor, tenga en cuenta que no necesitamos preocuparnos por el color de los cables del motor paso a paso. Solo necesitamos enchufar el conector macho (en el motor paso a paso 28BYJ-48) al conector hembra (del controlador ULN2003).
Cómo programar para controlar un motor paso a paso
Cuando se trata de controlar un motor paso a paso, hay tres métodos principales:
- Paso completo
- Medio paso
- Micro-paso
Para aplicaciones básicas, el método de paso completo suele ser suficiente. Sin embargo, se proporcionarán explicaciones detalladas de los tres métodos en la parte final de este tutorial. Es importante señalar que la programación de estos métodos puede ser compleja. La buena noticia es que hay muchas bibliotecas disponibles que manejan esta complejidad por nosotros. Todo lo que necesitamos hacer es utilizar la biblioteca adecuada, lo que simplifica el control de motores paso a paso en nuestros proyectos.
El IDE de Arduino incluye una biblioteca integrada Stepper, pero desaconsejamos usarla por las siguientes razones:
- Naturaleza Bloqueante: Esta biblioteca opera de manera bloqueante, lo que significa que monopoliza los recursos del ESP32, impidiendo que realice otras tareas mientras controla el motor paso a paso.
- Funcionalidad Limitada: La biblioteca Stepper integrada puede no proporcionar todas las funciones y características que necesitas para tu proyecto.
En su lugar, recomendamos utilizar la biblioteca AccelStepper. Esta biblioteca ofrece varias ventajas, entre ellas:
- Aceleración y Desaceleración: Admite aceleración y desaceleración suaves, lo que permite un control más preciso.
- Conducción en modo paso completo y medio paso: Puedes elegir entre los modos de conducción en paso completo y medio paso para tu motor paso a paso.
- Múltiples motores paso a paso simultáneos: AccelStepper permite el control de múltiples motores paso a paso de forma simultánea, con cada motor moviéndose de forma independiente y de forma concurrente.
Sin embargo, es importante señalar que la biblioteca tiene una desventaja: no admite el accionamiento en micropasos.
Código de Arduino Nano ESP32
Pasos R\u00e1pidos
Para empezar con Arduino Nano ESP32, siga estos pasos:
- Si eres nuevo en Arduino Nano ESP32, consulta el tutorial sobre cómo configurar el entorno para Arduino Nano ESP32 en el IDE de Arduino.
- Conecte los componentes de acuerdo con el diagrama proporcionado.
- Conecte la placa Arduino Nano ESP32 a su computadora usando un cable USB.
- Inicie el IDE de Arduino en su computadora.
- Seleccione la Arduino Nano ESP32 placa y su puerto COM correspondiente.
- Abra el Administrador de Bibliotecas haciendo clic en el icono en la barra de navegación izquierda del IDE de Arduino.
- Busque “AccelStepper”, luego localice la biblioteca AccelStepper de Mike McCauley.
- Haga clic en el botón Instalar para instalar la biblioteca AccelStepper.

- Copia el código anterior y ábrelo con Arduino IDE
- Haz clic en el botón Subir en Arduino IDE para subir el código a Arduino Nano ESP32
- Vea 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 múltiples motores paso a paso 28BYJ-48
Aprendamos a controlar dos motores paso a paso de forma independiente al mismo tiempo.
Diagrama de cableado para dos motores paso a paso 28BYJ-48

This image is created using Fritzing. Click to enlarge image