Arduino Nano ESP32 - Controlador DRV8825 para motor paso a paso
En esta guía, exploraremos el controlador de motor paso a paso DRV8825 y descubriremos cómo operarlo con Arduino Nano ESP32 para gestionar el motor paso a paso. Específicamente, cubriremos:
- ¿Qué es el módulo controlador de motor paso a paso DRV8825?
- ¿Cómo funciona el módulo controlador de motor paso a paso DRV8825?
- ¿Cómo conectar el módulo DRV8825 con Arduino Nano ESP32 y un motor paso a paso?
- ¿Cómo escribir un programa para Arduino Nano ESP32 para controlar un motor paso a paso usando el módulo DRV8825?

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 controlador de motor paso a paso DRV8825
El DRV8825 es un módulo popular utilizado para controlar motores paso a paso bipolares, comúnmente se encuentra en máquinas CNC, impresoras 3D y robots. Tiene un límite de corriente ajustable, protección contra sobrecalentamiento y opciones para diferentes modos de paso, desde paso completo hasta micropasos de 1/32. Puede manejar hasta 2,2 A por cada bobina del motor con un enfriamiento adecuado y funciona dentro de un rango de voltaje de 8,2 V a 45 V, lo que permite el uso de varios motores paso a paso.
Para entender conceptos de motores paso a paso, como paso completo, micro-pasos, motor paso a paso unipolar y motor paso a paso bipolar, consulta la guía Arduino Nano ESP32 - Stepper Motor.
Usando solo dos pines en un Arduino Nano ESP32, puedes controlar fácilmente la velocidad y la dirección de un motor paso a paso bipolar NEMA 17.
Disposición de pines del controlador de motor paso a paso DRV8825

El controlador de motor paso a paso DRV8825 cuenta con 16 pines. Aquí tienes una distribución común de los pines en el módulo DRV8825. Ten en cuenta que algunas versiones pueden nombrar los pines de forma algo diferente, pero sus funciones siguen siendo las mismas.
| Pin Name | Description |
|---|---|
| VMOT | Motor power supply (8.2 V to 45 V). This powers the stepper motor. |
| GND (for Motor) | Ground reference for the motor power supply. Connect this pin to the GND of the motor power supply |
| 2B, 2A | Outputs to Coil B of the stepper motor. |
| 1A, 1B | Outputs to Coil A of the stepper motor. |
| FAULT | Fault Detection Pin. This is an output pin that drives LOW whenever the H-bridge FETs are disabled as the result of over-current protection or thermal shutdown. |
| GND (for Logic) | Ground reference for the logic signals. Connect this pin to the GND of Arduino Nano ESP32 |
| ENABLE | Active-Low pin to enable/disable the motor outputs. LOW = Enabled, HIGH = Disabled. |
| M1, M2, M3 | Microstepping resolution selector pins (see table below). |
| RESET | Active-Low reset pin - pulling this pin LOW resets the driver. |
| SLEEP | Active-Low sleep pin - pulling this pin LOW puts the driver into low-power sleep mode. |
| STEP | Step input - a rising edge on this pin advances the motor by one step (or one microstep, depending on microstepping setting). |
| DIR | Direction input - sets the rotation direction of the stepper motor. |
También se incluye una pequeña perilla ajustable que permite establecer el límite de corriente para evitar que el motor paso a paso y el controlador se calienten demasiado.
En resumen, estos 16 pines se agrupan en las siguientes categorías según su función:
- Cables conectados al motor paso a paso: 1A, 1B, 2A, 2B.
- Cables conectados al Arduino Nano ESP32 para controlar el controlador: ENABLE, M1, M2, M3, RESET, SLEEP.
- Cables conectados al Arduino Nano ESP32 para controlar la dirección y la velocidad del motor: DIR, STEP.
- Cable para enviar señales de error al Arduino Nano ESP32: FAULT.
- Cables conectados a la fuente de alimentación del motor: VMOT, GND (tierra de alimentación del motor).
- Cable conectado a la tierra del Arduino Nano ESP32: GND (tierra de lógica).
El módulo DRV8825 no necesita alimentación desde la placa Arduino Nano ESP32 para su lógica, ya que utiliza la alimentación del motor a través de su regulador de 3.3V incorporado. Aun así, debes conectar la tierra de la placa Arduino Nano ESP32 al pin GND (lógica) del DRV8825 para asegurar que funcione correctamente y comparta una tierra común.
Configuración de micropasos
El controlador DRV8825 permite el microstepping al dividir cada paso en partes más pequeñas. Esto se logra aplicando diferentes niveles de corriente a las bobinas del motor.
Por ejemplo, un motor NEMA 17 con un ángulo de paso de 1,8° (200 pasos por revolución):
- Modo de paso completo: 200 pasos por revolución
- Modo de medio paso: 400 pasos por revolución
- Modo de 1/4 de paso: 800 pasos por revolución
- Modo de 1/8 de paso: 1600 pasos por revolución
- Modo de 1/16 de paso: 3200 pasos por revolución
- Modo de 1/32 de paso: 6400 pasos por revolución
Cuando aumentas el microstepping, el motor funciona de forma más suave y precisa, pero necesita más pasos para cada vuelta completa. Si mantienes la frecuencia de pulsos de paso igual, cada vuelta completa tomará más tiempo, lo que hará que el motor funcione más lento.
Si tu microcontrolador puede enviar pulsos lo suficientemente rápidos para un mayor número de pasos, puedes mantener o incluso aumentar la velocidad. El límite real se basa en cuán rápido tanto el controlador como tu microcontrolador pueden manejar estos pulsos sin perder pasos.
Pines de selección de micropasos DRV8825
El DRV8825 incluye tres entradas para elegir la resolución de micropaso: los pines M0, M1 y M2. Al configurar estos pines en ciertos niveles lógicos, puede seleccionar entre seis resoluciones de micropasos:
| M0 Pin | M1 Pi | M2 Pi | Microstep Resolution |
|---|---|---|---|
| Low | Low | Low | Full step |
| High | Low | Low | Half step |
| Low | High | Low | 1/4 step |
| High | High | Low | 1/8 step |
| Low | Low | High | 1/16 step |
| High | Low | High | 1/32 step |
| Low | High | High | 1/32 step |
| High | High | High | 1/32 step |
Estos pequeños pines de selección de paso vienen con resistencias de pull-down integradas que naturalmente los mantienen en un estado bajo. Si no los conectas, el motor funcionará en modo de paso completo.
Cómo funciona
Para operar un motor paso a paso con el módulo DRV8825, necesitas al menos dos pines del Arduino Nano ESP32: uno para el pin DIR y otro para el pin STEP. El DRV8825 decodifica estas señales desde el Arduino Nano ESP32 para mover con precisión el motor paso a paso.
- Pin STEP: Cada pulso en el pin STEP mueve el motor un paso diminuto (o un paso entero, dependiendo de la configuración de micropasos).
- Pin DIR: Define en qué dirección gira el motor.
El controlador utiliza estas señales y sus propias configuraciones para enviar salidas de control al motor a través de los pines 1A, 1B, 2A y 2B.
También puedes configurar pines adicionales en el módulo DRV8825 (ENABLE, M1, M2, M3, RESET, SLEEP) de una de las tres formas:
- No los conectes para que el controlador use la configuración predeterminada.
- Conéctalos directamente a GND o VCC para un modo estable.
- Conéctalos a los pines del Arduino Nano ESP32 para controlar sus funciones con tu código.
Diagrama de cableado entre Arduino Nano ESP32, módulo DRV8825 y motor paso a paso
El diagrama que se muestra a continuación presenta las conexiones básicas necesarias entre el Arduino Nano ESP32, el módulo DRV8825 y el motor paso a paso. En esta configuración, el controlador DRV8825 funciona en su modo estándar (paso completo).

This image is created using Fritzing. Click to enlarge image
En detalle:
- VMOT: Conectar a la fuente de alimentación del motor (como 12V).
- GND (para el motor): Conectar a la masa de la fuente de alimentación del motor.
- 1A, 1B, 2A, 2B: Conectar a las bobinas del motor paso a paso.
- STEP: Conectar al pin digital D4 del Arduino Nano ESP32.
- DIR: Conectar al pin digital D3 del Arduino Nano ESP32.
- GND (para la lógica): Conectar al pin GND del Arduino Nano ESP32.
- Otros pines: dejar sin conectar.
Código 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 ordenador usando un cable USB.
- Abra el IDE de Arduino en su ordenador.
- Seleccione la placa Arduino Nano ESP32 y su puerto COM correspondiente.
- Copie el código y ábralo en el IDE de Arduino.
- Vaya al icono Bibliotecas en el lado izquierdo del IDE de Arduino.
- Escriba 'AccelStepper' para buscar, luego localice la biblioteca AccelStepper de Mike McCauley.
- Presione el botón Instalar para agregar la biblioteca AccelStepper.

- Copie el código y ábralo en el IDE de Arduino.
- Haga clic en el botón Cargar en el IDE de Arduino para enviar el código al Arduino Nano ESP32.
- Podrá ver que el motor gira de un lado a otro.
Cuando se utiliza el motor en modo de paso completo, su movimiento puede no ser muy suave, lo cual es normal. Para lograr un movimiento más suave, active el microstepping configurando los pines M1, M2 y M3.
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.