Arduino - Controlador de motor paso a paso DRV8825
En este tutorial, vamos a aprender sobre el controlador DRV8825 para motor paso a paso y cómo usarlo con Arduino para controlar el motor paso a paso. En detalle, aprenderemos:
- 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 al Arduino y al motor paso a paso
- Cómo programar Arduino para controlar un motor paso a paso mediante el módulo DRV8825

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 de DRV8825 Controlador de motor paso a paso
El DRV8825 es un módulo controlador de motor paso a paso ampliamente utilizado para controlar motores paso a paso bipolares en aplicaciones como máquinas CNC, impresoras 3D y robótica. Presenta un límite de corriente ajustable, protección contra sobrecalentamiento y opciones de microstepping de seis pasos, que incluyen paso completo, 1/2, 1/4, 1/8, 1/16 y 1/32. El módulo puede manejar hasta 2,2 A por bobina con un enfriamiento adecuado y opera en un amplio rango de voltaje de 8,2 V a 45 V, lo que lo hace adecuado para una variedad de motores paso a paso.
Para aprender sobre conceptos de motores paso a paso como: paso completo, micropasos, motor paso a paso unipolar y motor paso a paso bipolar, consulte el tutorial Arduino - Stepper Motor.
Es impresionante que se pueda controlar la velocidad y la dirección de un motor paso a paso bipolar, como el NEMA 17, con solo dos pines de Arduino.
Pinout del controlador de motor paso a paso DRV8825

El controlador de motor paso a paso DRV8825 tiene 16 pines. A continuación se presenta un diagrama de pines típico para el módulo controlador de motor paso a paso DRV8825. Tenga en cuenta que algunas variaciones del módulo pueden etiquetar los pines de manera ligeramente diferente, pero la funcionalidad es la misma.
| 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 |
| 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. |
Además, hay un pequeño potenciómetro en la placa que puedes ajustar para establecer la limitación de la corriente, lo que ayuda a evitar que el motor paso a paso y el controlador se sobrecalienten.
En resumen, estos 16 pines se organizan en las siguientes categorías según su funcionalidad:
- Pines conectados al motor paso a paso: 1A, 1B, 2A, 2B.
- Pines conectados al Arduino para el control del driver: ENABLE, M1, M2, M3, RESET, SLEEP.
- Pines conectados al Arduino para el control de la dirección y la velocidad del motor: DIR, STEP.
- Pin para retroalimentación al Arduino: FAULT.
- Pines conectados al suministro de energía del motor: VMOT, GND (tierra de alimentación del motor).
- Pin conectado a la tierra del Arduino: GND (tierra lógica).
El módulo DRV8825 no requiere un suministro lógico desde la placa Arduino, ya que toma energía del alimentador del motor mediante su regulador de voltaje interno de 3,3 V. Sin embargo, es esencial conectar la tierra del Arduino al pin GND (lógica) del módulo DRV8825 para garantizar un funcionamiento correcto y una referencia de tierra compartida.
Configuración de micropasos
El controlador DRV8825 permite el microstepping al dividir cada paso en incrementos más pequeños. Esto se logra aplicando niveles de corriente intermedios 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 (1/1): 200 pasos por revolución
- Modo de medio paso (1/2): 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
Al aumentar el nivel de micropasos, el motor se mueve de forma más suave y precisa, pero a costa de un mayor número de pasos necesarios por revolución. Si continúa usando la misma tasa de pulsos de paso (pulsos por segundo), entonces cada revolución tomará más tiempo, ralentizando efectivamente el motor.
Sin embargo, si su microcontrolador puede generar pulsos lo suficientemente rápidos para igualar un mayor número de pasos, puede mantener o incluso aumentar la velocidad. El límite práctico depende de cuán rápidamente tanto el controlador como su microcontrolador pueden procesar estos pulsos sin perder pasos.
Pines de selección de micropasos del DRV8825
El DRV8825 presenta tres entradas de selección de resolución de micropasos: los pines M0, M1 y M2. Al configurar estos pines con niveles lógicos específicos, puedes elegir 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 pines de selección de micropasos están equipados con resistencias pull-down integradas en la placa que los mantienen en un estado bajo por defecto. Si quedan sin conectar, el motor funcionará en modo de paso completo.
Cómo funciona
Para controlar un motor paso a paso utilizando el módulo DRV8825, necesitas al menos dos pines de Arduino: uno para el pin DIR y otro para el pin STEP. El DRV8825 interpreta estas señales desde el Arduino para mover el motor paso a paso con precisión.
- STEP Pin: Cada pulso en el pin STEP hace avanzar el motor un micropaso (o un paso completo, dependiendo de tu configuración de micropasos).
- DIR Pin: Determina la dirección de rotación del motor.
El controlador, a continuación, utiliza estas señales, junto con 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 tres formas:
- Déjalos sin conectar para permitir que el controlador opere con la configuración predeterminada.
- Soldarlos a GND o VCC para un modo de operación fijo.
- Conéctalos a pines de Arduino para que puedas controlar estas funciones dinámicamente en tu código.
Diagrama de cableado entre Arduino, módulo DRV8825 y motor paso a paso
El siguiente diagrama de cableado muestra las conexiones mínimas necesarias entre el Arduino, el módulo DRV8825 y el motor paso a paso. Con esta configuración, el controlador DRV8825 opera en su modo predeterminado (paso completo).

This image is created using Fritzing. Click to enlarge image
En detalle:
- VMOT: Conectar a la fuente de alimentación del motor (p. ej., 12 V).
- GND (para el motor): Conectar a la tierra 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 de Arduino D4.
- DIR: Conectar al pin digital de Arduino D3.
- GND (para la lógica): Conectar al pin GND de Arduino.
- Otros pines: dejar sin conexión.
Código de Arduino
Pasos R\u00e1pidos
- Copia el código anterior y ábrelo con el IDE de Arduino
- Navega al icono de Bibliotecas en la barra izquierda del IDE de Arduino.
- Busca “AccelStepper”, luego encuentra 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 el IDE de Arduino
- Haga clic en el botón Subir en el IDE de Arduino para subir el código al Arduino
- Verá que el motor gira hacia atrás y hacia adelante
Nota: al operar el motor en modo de paso completo, su movimiento puede no ser muy suave, lo cual es normal. Para un movimiento más suave, habilite 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.