ยกTu carrito estรก actualmente vacรญo!
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
Mover motor paso Nema17 con controladora ESP32

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
}
}
Etiquetas:
Deja una respuesta