Control de Motores a Pasos con TB6600 y Arduino 8-42 VDC 4.5A
Publicado por Victor Arrieta en
Driver TB6600 (Comprar aquí) permite trabajar con motores paso a paso bipolares de hasta 4 Amperios. Diseñado para ser muy robusto: Posee entradas de control optoacopladas para trabajar con Arduino o cualquier microcontrolador o PLC, posee un gran disipador de aluminio para disipar el calor del driver generado al manejar un motor pap de alta potencia, las borneras removibles facilitan la instalación y mantenimiento, posee diodos flyback en placa. Ideal para motores a paso Nema 23 utilizados en Routers CNC, Cortadoras Láser, Impresora 3D de grandes dimensiones y más. .
El driver TB6600 posee salida de corriente seleccionable desde 0.5A hasta 4A, protección contra sobre corriente y 6 resoluciones diferentes de microstepping. Se alimenta con voltaje (de potencia) entre 9V hasta 42V DC (recomendamos trabajar a 24V) y puede controlar motores de hasta 4A. Para manejar el driver se utilizan las señales PUL (paso) y DIR (dirección) similar los drivers A4988 o DRV8825, las entradas lógicas del driver están optoacopladas: soportan desde 3.3V a 24V lógicos (resistencia en placa de 3.3K Ohm). No es necesario unir las tierras del voltaje de potencia y el voltaje lógico o de control. El driver puede trabajar como un reemplazo de drivers de menor corriente como el DRV8825 o el A4988, a nivel de software funcionan de la misma forma pudiendo trabajar con el firmware CNC GRBL o los firmware de impresión 3D: Marlin, Repetier y más.
Conectando el TB6600 al motor paso a paso y al Arduino
TB6600 | Conexión |
VCC | 9 – 42 VDC |
GND | Fuente de alimentación a tierra |
A+ A- | Coil Bobina 1 stepper motor |
B+ B- | Coil Bobina 2 stepper motor |
EN- | Pin 5 Arduino |
DIR- | Pin 6 Arduino |
PUL- | Pin 7 Arduino |
EN+DIR+PUL+ | 5v Arduino |
Identificar cables si el motor paso a paso tiene cuatro cables de bobina: Cada una de las dos fases debe tener la misma resistencia cuando se mide con un multímetro. Cuando se mide la resistencia a través de un cable de cada una de las dos fases, la resistencia debe ser infinita porque el circuito está abierto. Localizar los dos pares de cables que representan las dos fases; Ambos pares de cables tendrán una resistencia interna similar.
Ajustes de micropasos
Los motores paso a paso suelen tener un tamaño de paso de 1,8° o 200 pasos por revolución, esto se refiere a pasos completos. Un motor de micro-pasos como el TB6600 permite resoluciones más altas al permitir ubicaciones de pasos intermedios. Esto se logra energizando las bobinas con niveles de corriente intermedios. Por ejemplo, al impulsar un motor en el modo de 1/2 paso, el motor de 200 pasos por revolución dará 400 micropasos por revolución.
El controlador del motor paso a paso soporta control de velocidad y dirección. Puedes configurar sus micro pasos y corriente de salida con 6 interruptores DIP. Hay 7 tipos de micro pasos (1, 2/A, 2/B, 4, 8, 16, 32) y 8 tipos de control de corriente (0.5A, 1A, 1.5A, 2A, 2.5A, 2.8A, 3.0A, 3.5A) en total.
En términos generales, un ajuste de micropasos más pequeño resultará en un funcionamiento más suave y silencioso. Sin embargo, limitará la velocidad máxima que se puede alcanzar al controlar el motor de pasos con un Arduino.
Ajustes de corriente
Puedes ajustar la corriente que va al motor cuando está en marcha, poniendo los interruptores DIP S4, S5, y S6 en marcha o apagados. Recomendamos comenzar con un nivel de corriente de 1 A. Si el motor no da pasos o se atasca, siempre puedes aumentar el nivel de corriente más tarde.
Materiales Necesarios:
- Arduino (Uno, Mega, Nano.)
- Driver TB6600
- Motor a pasos (bipolar)
- Fuente de alimentación (8-42 VDC)
- Cables de conexión
Conexiones:
Código Arduino:
int DIR = 6; // Define el pin de dirección
int EN = 5; // Define el pin de habilitación (Enable)
void setup() {
pinMode(PUL, OUTPUT); // Configura el pin PUL como salida
pinMode(DIR, OUTPUT); // Configura el pin DIR como salida
pinMode(EN, OUTPUT); // Configura el pin EN como salida
digitalWrite(EN, HIGH); // Activa el pin de habilitación (EN)
}
void loop() {
digitalWrite(EN, HIGH); // Activa el pin de habilitación (EN)
digitalWrite(DIR, LOW); // Establece la dirección del motor (hacia adelante)
for (int i = 0; i < 1600; i++) { // Ciclo para avanzar 1600 pasos
digitalWrite(PUL, HIGH); // Genera un pulso alto en el pin PUL
delay(1); // Espera 1 milisegundo
digitalWrite(PUL, LOW); // Baja el pulso en el pin PUL
delay(1); // Espera 1 milisegundo
}
digitalWrite(EN, LOW); // Desactiva el pin de habilitación (EN)
delay(250); // Espera 250 milisegundos antes de repetir el ciclo
}
Análisis:
-
Variables Globales:
-
int PUL = 7;
,int DIR = 6;
,int EN = 5;
: Estas variables almacenan los números de pin de Arduino para la señal de pulso (PUL), la dirección del motor (DIR) y el pin de habilitación (EN).
-
-
Función
setup()
:-
pinMode(PUL, OUTPUT);
,pinMode(DIR, OUTPUT);
,pinMode(EN, OUTPUT);
: Configura los pines PUL, DIR y EN como pines de salida. -
digitalWrite(EN, HIGH);
: Activa el pin EN estableciéndolo en HIGH, lo que habilita el motor paso a paso desde el inicio.
-
-
Función
loop()
:-
digitalWrite(EN, HIGH);
: Se asegura de que el pin EN esté activado (HIGH) al inicio del ciclo. -
digitalWrite(DIR, LOW);
: Establece la dirección del motor hacia adelante (LOW). - Bucle
for
para avanzar 1600 pasos:-
digitalWrite(PUL, HIGH);
: Genera un pulso alto en el pin PUL. -
delay(1);
: Espera 1 milisegundo. -
digitalWrite(PUL, LOW);
: Baja el pulso en el pin PUL. -
delay(1);
: Espera 1 milisegundo.
-
-
digitalWrite(EN, LOW);
: Desactiva el pin EN al final del ciclo, lo que puede deshabilitar el motor o ponerlo en un estado de espera. -
delay(250);
: Espera 250 milisegundos antes de comenzar un nuevo ciclo, permitiendo tiempo para que el motor se estabilice o para realizar otras operaciones.
-
Funcionamiento:
- Este código utiliza el driver TB6600 para controlar un motor paso a paso.
- El pin PUL genera pulsos que hacen que el motor avance un paso cada vez que se activa con un pulso alto.
- El pin DIR determina la dirección del movimiento del motor (en este caso, hacia adelante con
DIR
bajo). - El pin EN se utiliza para habilitar o deshabilitar el motor.
- El bucle
for
controla el número de pasos que el motor realiza hacia adelante antes de detenerse brevemente (delay(250)
).
Al subir este código el motor paso a paso por ejemplo un NEMA 17 se movera 1600 paso o una vuelta en un sentido y luego lo hará de nuevo infinitamente.
Este código es un ejemplo básico de cómo iniciar y controlar un motor paso a paso usando un Arduino y el driver TB6600.
Puedes jugar con el motor cambiando los delay(1) con más milisegundos para variar la velocidad, también cambia la dirección del motor en cualquier momento con:
digitalWrite(DIR, HIGH); // Establece la dirección del motor
digitalWrite(DIR, LOW); // Establece la dirección del motor
Al utilizar los micropasos más finos el motor se moverá de manera más precisa pero más lenta.
Utiliza digitalWrite(EN,LOW) o digitalWrite(EN,HIGH) Para habilitar o bloquear el motor. Por ejemplo cuando ha generado un movimiento corto y por el impulso se sigue moviendo, con este comando lo puedes frenar o bloquear y que se quede quieto en un punto específico.