¡Tu carrito está actualmente vacío!
Mover motor paso Nema17 con controladora ESP32

📌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
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