🇺🇸

Mover motor paso Nema17 con controladora ESP32 / Arduino Uno

๐Ÿ“ŒBarcelona | Actuadores: Motores

Ya en el aรฑo 2025, 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

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?