ESP32 - Controlador de motor paso a paso DRV8825

En esta guía, exploraremos el controlador de motor paso a paso DRV8825 y descubriremos cómo operarlo con un ESP32 para gestionar el motor paso a paso. Abordaremos los siguientes detalles:

Módulo ESP32 DRV8825

Acerca del controlador de motor paso a paso DRV8825

El DRV8825 es un popular controlador de motores paso a paso utilizado para controlar motores paso a paso bipolares en dispositivos como máquinas CNC, impresoras 3D y robots. Incluye características como un límite de corriente ajustable, protección contra sobrecalentamiento y diversas opciones de microstepping, como paso completo, 1/2, 1/4, 1/8, 1/16 y 1/32. Este módulo puede manejar hasta 2,2 A por bobina con una refrigeración adecuada y funciona en un amplio rango de voltaje de 8,2 V a 45 V, lo que lo hace versátil para diferentes motores paso a paso.

Para entender conceptos sobre 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 ESP32 - Motor paso a paso.

Es impresionante que, para controlar la velocidad y la dirección de un motor paso a paso bipolar, como el NEMA 17, solo se necesiten dos pines del ESP32.

Pinout del controlador DRV8825 para motor paso a paso

Pinout del módulo DRV8825

El controlador de motor paso a paso DRV8825 cuenta con 16 pines. A continuación se presenta una configuración común para el módulo controlador de motor paso a paso DRV8825. Ten en cuenta que algunas versiones del módulo pueden nombrar los pines de manera 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 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.

Además, hay una pequeña perilla integrada que puedes girar para ajustar el límite de corriente, lo que ayuda a evitar que el motor paso a paso y su controlador se sobrecalienten.

En resumen, estos 16 pines se agrupan en estos tipos según su uso:

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

El módulo DRV8825 no necesita una fuente de alimentación de lógica desde la placa ESP32, porque obtiene energía de la fuente de alimentación del motor a través de su regulador de voltaje de 3,3 V integrado. Sin embargo, es importante conectar el GND de la ESP32 al pin GND (lógica) del módulo DRV8825 para asegurarse de que funcione correctamente y tenga una referencia de tierra común.

Configuración de micropasos

El controlador DRV8825 permite el microstepping dividiendo 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 revolución):

  • Modo de paso completo: 200 pasos por revolución
  • Modo de medio paso: 400 pasos por revolución
  • Modo de paso de un cuarto: 800 pasos por revolución
  • Modo de paso de octavo: 1600 pasos por revolución
  • Modo de paso de dieciseisavo: 3200 pasos por revolución
  • Modo de paso de treinta y dosavo: 6400 pasos por revolución

Al aumentar el nivel de micropasos, el motor funciona de forma más suave y precisa, pero necesita más pasos por cada giro completo. Si mantienes la misma tasa de pulsos de paso (pulsos por segundo), entonces cada giro completo llevará más tiempo, haciendo que el motor sea más lento.

Pero, si tu microcontrolador puede enviar pulsos lo suficientemente rápidos para igualar el mayor conteo de pasos, puedes mantener o incluso aumentar la velocidad. El límite real depende de qué tan 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 microstepping:

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 vienen con resistencias pull-down integradas que los mantienen en un estado bajo por defecto. 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 dos pines del ESP32: uno para el pin DIR y otro para el pin STEP. El DRV8825 procesa estas señales desde el ESP32 para mover con precisión el motor paso a paso.

  • STEP Pin: Cada señal en el pin STEP mueve el motor hacia adelante un micropaso o un paso completo, según tu configuración.
  • DIR Pin: Establece en qué dirección gira el motor.

El controlador utiliza estas señales y sus propias 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) de una de las tres maneras:

  • Manténlos separados para que el controlador pueda usar configuraciones estándar.
  • Conéctalos directamente a GND o a VCC para un modo constante.
  • Conéctalos a los pines del ESP32 para gestionar estas funciones a través de tu programación.

Diagrama de cableado entre ESP32, módulo DRV8825 y motor paso a paso

El diagrama a continuación muestra las conexiones básicas requeridas entre el 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).

Diagrama de cableado del controlador de motor paso a paso DRV8825 para ESP32

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

A fondo:

  • VMOT: Conecta a la fuente de alimentación del motor (como 12 V).
  • GND (para el motor): Conecta a la tierra de la fuente de alimentación del motor.
  • 1A, 1B, 2A, 2B: Conecta estos a las bobinas del motor paso a paso.
  • STEP: Conecta al pin digital D4 del ESP32.
  • DIR: Conecta al pin digital D3 del ESP32.
  • GND (para la lógica): Conecta al pin GND del ESP32.
  • Otros pines: No conectes.

Código ESP32

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-drv8825-stepper-motor-driver */ #include <AccelStepper.h> #define STEP_PIN 12 // The ESP32 pin GPIO12 connected to STEP pin of DRV8825 module #define DIR_PIN 14 // The ESP32 pin GPIO14 connected to DIR pin of DRV8825 module // Creates an instance AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN); void setup() { // set the maximum speed, acceleration factor stepper.setMaxSpeed(1000); stepper.setAcceleration(200); // set speed and the target position 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

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Conecta el cableado como en la imagen anterior.
  • Conecta la placa ESP32 a tu PC mediante un cable USB.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Copia el código anterior y ábrelo en Arduino IDE.
  • Ve a la sección Bibliotecas en el lado izquierdo del Arduino IDE.
  • Busca "AccelStepper", luego localiza la biblioteca AccelStepper de Mike McCauley.
  • Presiona el botón Instalar para añadir la biblioteca AccelStepper.
biblioteca AccelStepper para ESP32
  • Copia el código y ábrelo en el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para enviar el código a tu ESP32
  • Verás que el motor se mueve de ida y vuelta

Consejo: Al hacer funcionar el motor en modo de pasos completos, su movimiento podría no ser muy suave, pero esto es habitual. Para 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.

※ 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!