Mover motor paso Nema17 con controladora ESP32

Ilustración Nema 17 cortesía de Enchinche Media + IAG

📌Barcelona | Actuadores: Motores

Ya en el año 2024, la a4988 y drv8825 quedaron algo obsoletas, no son buenas para uso contínuo si hay personas cerca, pues son muy molestas por el sonido que emiten los motores al funcionar.

En este caso, se moverá un nema17  con una controladora igual de pequeña, eficiente y muy silenciosa.

TMC2208.

Requisitos

Para implementar este proyecto, se necesitan los siguientes componentes:

  • Un motor paso a paso NEMA 17.
  • Una controladora TMC2208.
  • Un microcontrolador (por ejemplo, ESP32).
  • Fuente de alimentación externa para el motor.
  • Cables para las conexiones.

Conexiones

Realizar las siguientes conexiones entre el microcontrolador, la controladora TMC2208 y el motor NEMA 17:

    • Conectar los cuatro cables del motor NEMA 17 a las salidas de la controladora TMC2108 (A1, A2, B1, B2).
    • Conectar VCC de la controladora al pin de 5V del microcontrolador.
  • Conectar GND de la controladora al pin GND del microcontrolador.
  • Conectar el pin STEP (Pin 2 en el código) de la controladora al pin D2 del microcontrolador.
  • Conectar el pin DIR (Pin 0 en el código) de la controladora al pin D0 del microcontrolador.
  • Conectar el pin ENABLE (Pin 4 en el código) de la controladora al pin D4 del microcontrolador.
  • Conectar V_MOT de la controladora a una fuente de alimentación externa (12V o 24V según las especificaciones del motor).
  • Conectar GND de la fuente de alimentación externa al GND de la controladora.

Explicación del Código

El código implementado en el microcontrolador permite mover el motor en ambas direcciones utilizando pulsos controlados por microdelays. La función moverMotor() se encarga de enviar los pulsos necesarios para realizar un número específico de pasos, mientras que la función microDelay() gestiona el tiempo de espera en microsegundos para lograr un control preciso del motor.

Componentes del Código

El código se divide en las siguientes secciones:

  • Configuración de Pines: Define los pines utilizados para STEP, DIR y ENABLE.
  • Función setup(): Configura los pines como salidas y activa la controladora.
  • Función loop(): Controla el movimiento del motor en ambas direcciones con pausas intermedias.
  • Función moverMotor(): Envía los pulsos de STEP para mover el motor.
  • Función microDelay(): Implementa un delay en microsegundos mediante espera activa.

Parámetros Clave

En el código, los parámetros de tiempo en microsegundos determinan la velocidad del motor. Estos pueden ajustarse en la función microDelay() según los requerimientos específicos del proyecto.

Imágenes del Esquema de Conexión

A continuación, se proporciona un esquema de conexión para facilitar la implementación del proyecto:

Esquema de Conexión

Esquema de Conexión TMC2208

Mover motor paso Nema17 con controladora ESP32

TMC 2208 conexiones

Código para compilar en ESP32

#define STEP_PIN 2  // Pin para STEP
#define DIR_PIN 0   // Pin para DIR
#define ENABLE_PIN 4 // Pin para ENABLE

void setup() {
  // Configuración de pines
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(ENABLE_PIN, OUTPUT);

  // Inicialización
  digitalWrite(ENABLE_PIN, LOW);  // Activar la controladora
}

void loop() {
  // Movimiento en una dirección
  digitalWrite(DIR_PIN, HIGH);  // Establecer dirección
  moverMotor(1400);

  delay(410); 

  // Movimiento en la dirección opuesta
  digitalWrite(DIR_PIN, LOW);  // Cambiar dirección
  moverMotor(1400);  

  delay(410); 
}
int a=222;
void moverMotor(int pasos) {
  for (int i = 0; i < pasos; i++) {
    digitalWrite(STEP_PIN, HIGH);
    microDelay(a);  // Duración del pulso en microsegundos
    digitalWrite(STEP_PIN, LOW);
    microDelay(a);  // Tiempo de espera entre pasos
  }
}

void microDelay(unsigned int microsegundos) {
  unsigned long start = micros();
  while (micros() - start < microsegundos) {
    // Espera activa
  }
}


Publicado

en

Etiquetas:

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Quieres avanzar con tu proyecto?