Arduino Nano - Controlador de motor paso a paso DRV8825

En esta guía, exploraremos el controlador de motor paso a paso DRV8825 y aprenderemos a operarlo con Arduino Nano para controlar el motor paso a paso. Cubriremos:

módulo Arduino Nano DRV8825

Acerca del controlador de motor paso a paso DRV8825

El DRV8825 es un módulo popular para gestionar motores paso a paso bipolares, comúnmente utilizados en máquinas CNC, impresoras 3D y robots. Ofrece un control de corriente ajustable, características de seguridad de la temperatura y varias opciones de microstepping como paso completo, 1/2, 1/4, 1/8, 1/16 y 1/32. Este módulo admite hasta 2.2A por bobina con enfriamiento adecuado y funciona dentro de un rango de voltaje de 8.2V a 45V, acomodando diferentes motores paso a paso.

Para entender los fundamentos básicos de los motores paso a paso, como el paso completo, el micropaso, el motor paso a paso unipolar y el motor paso a paso bipolar, consulta la guía Arduino Nano - Motor paso a paso.

Es increíble que el control de la velocidad y la dirección de un motor paso a paso tan sencillo como el NEMA 17 solo necesite dos pines del Arduino Nano.

Pinout del controlador de motor paso a paso DRV8825

Pinout del módulo DRV8825

El controlador DRV8825 para motor paso a paso tiene 16 pines. A continuación se muestra un diseño común para la placa del controlador DRV8825 para motor paso a paso. Ten en cuenta que algunas versiones de la placa pueden nombrar los pines de una manera ligeramente diferente, pero sus funciones son 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
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 mando incorporado que puedes girar para ajustar el límite de corriente para ayudar a evitar que el motor paso a paso y el controlador se sobrecalienten.

En resumen, estos 16 pines se agrupan en los siguientes tipos según su función:

  • Pines conectados al motor paso a paso: 1A, 1B, 2A, 2B.
  • Pines conectados al Arduino Nano para controlar el controlador: ENABLE, M1, M2, M3, RESET, SLEEP.
  • Pines conectados al Arduino Nano para controlar la dirección y la velocidad del motor: DIR, STEP.
  • Pin para enviar retroalimentación al Arduino Nano: FAULT.
  • Pines conectados a la fuente de alimentación del motor: VMOT, GND (tierra de alimentación del motor).
  • Pin conectado a la tierra del Arduino Nano: GND (tierra lógica).

El módulo DRV8825 no necesita una fuente de alimentación desde el Arduino Nano para su lógica porque obtiene energía de la fuente de alimentación del motor a través de su regulador de voltaje integrado de 3,3 V. Aún así, es crucial conectar la masa del Arduino Nano al pin GND (lógica) del módulo DRV8825 para asegurar que funcione correctamente y comparta una masa común.

Configuración de micropasos

El controlador DRV8825 permite micropasos al dividir cada paso en partes más pequeñas. Esto se logra enviando niveles de corriente variables a las bobinas del motor.

Por ejemplo, un motor NEMA 17 con un ángulo de paso de 1,8 grados (200 pasos por rotación):

  • Modo de paso completo: 200 pasos por rotación
  • Modo de medio paso: 400 pasos por rotación
  • Modo de paso 1/4: 800 pasos por rotación
  • Modo de paso 1/8: 1600 pasos por rotación
  • Modo de paso 1/16: 3200 pasos por rotación
  • Modo de paso 1/32: 6400 pasos por rotación

Al aumentar la configuración de microstepping, el motor funciona de forma más suave y precisa, pero necesita más pasos para cada vuelta completa. Si mantienes la misma tasa de pulsos de paso (pulsos por segundo), cada vuelta completa tomará más tiempo, haciendo que el motor sea más lento.

Pero si tu microcontrolador puede enviar pulsos lo suficientemente rápidos para igualar un mayor conteo de pasos, puedes mantener o incluso aumentar la velocidad. El límite real depende de 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 seleccionar la resolución de micropasos: los pines M0, M1 y M2. Al configurar estos pines en ciertos niveles lógicos, puedes seleccionar entre seis resoluciones de micropasos diferentes:

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 vienen con resistencias integradas que los mantienen en un estado bajo normalmente. Si no están conectados, el motor funcionará en modo de paso completo.

Cómo funciona

Para operar un motor paso a paso con el módulo DRV8825, se requieren al menos dos pines del Arduino Nano: uno para el pin DIR y otro para el pin STEP. El DRV8825 decodifica estas señales desde el Arduino Nano para mover con precisión el motor paso a paso.

  • Pin STEP: Cada pulso en el pin STEP mueve el motor un paso pequeño o un paso completo, dependiendo de tu configuración.
  • Pin DIR: Configura hacia qué dirección gira el motor.

El controlador utiliza estas señales y sus configuraciones para enviar comandos 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) en una de tres formas:

  • Desconéctalos para que el controlador funcione con ajustes básicos.
  • Conéctalos directamente a GND o VCC para un modo estable.
  • Enlázalos a los pines del Arduino Nano para gestionar estas funciones activamente en tu programación.

Diagrama de cableado entre Arduino Nano, el módulo DRV8825 y el motor paso a paso

El diagrama a continuación muestra las conexiones básicas necesarias entre el Arduino Nano, el módulo DRV8825 y el motor paso a paso. Con esta configuración, el controlador DRV8825 funciona en su modo estándar (paso completo).

Diagrama de cableado del controlador de motor paso a paso DRV8825 para Arduino Nano

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

En profundidad:

  • VMOT: Conecta a la fuente de alimentación del motor (por ejemplo, 12V).
  • GND (para el motor): Conecta a la masa de la fuente de alimentación del motor.
  • 1A, 1B, 2A, 2B: Conecta estas a las bobinas del motor paso a paso.
  • STEP: Conecta al pin digital D4 del Arduino Nano.
  • DIR: Conecta al pin digital D3 del Arduino Nano.
  • GND (para lógica): Conecta al pin GND del Arduino Nano.
  • Otros pines: No conectar.

Código de Arduino Nano

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-drv8825-stepper-motor-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // Define the Arduino Nano pin connections #define STEP_PIN 4 #define DIR_PIN 3 // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor, // initial speed and the target position stepper.setMaxSpeed(1000); stepper.setAcceleration(200); stepper.setSpeed(200); stepper.moveTo(200); } void loop() { // Change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // Move the motor one step }

Pasos R\u00e1pidos

  • Copia el código y abre el IDE de Arduino.
  • Ve a la sección Bibliotecas en el menú de la izquierda del IDE de Arduino.
  • Busca "AccelStepper" y localiza la biblioteca AccelStepper de Mike McCauley.
  • Presiona el botón Instalar para agregar la biblioteca AccelStepper.
Librería AccelStepper para Arduino Nano
  • Copia el código y ábrelo en el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino Nano
  • Verás que el motor se mueve de ida y vuelta

Cuando uses el motor en modo de paso completo, su movimiento podría no ser muy suave, lo cual es común. Para un movimiento más suave, activa 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.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!