TB6560 Controlador Motor a Pasos

TB6560 Stepping Motor Driver

 

La tarjeta contiene un TB6560 que básicamente al darle un Pulso de trabajo y Dirección podemos aprovechar la precisión de un Motor a pasos como el NEMA 17 HS8401. En este Tutorial se verá cómo hacer uso de el en parte gracias al Microcontrolador Arruino. (Recordemos que existen gran variedad de Microcontroladores) Donde podemos tener un Pulso Controlado y salidas digitales. Y más delante la posibilidad de lectura Analógica., para afectar tanto tiempos de actividad, inactividad y velocidad.
Como ya veremos a continuación…

Ocupamos nuestra tarjeta TB6560, Arduino, Motor a pasos (NEMA 17) y fuente de Voltaje a 3A con función al Voltaje de operación de nuestro Motor a pasos, en nuestro caso usaremos 12V.

Primero que nada, la Tarjeta controladora de motores a pasos bipolar TB6560 max 3A y max 24V, es muy fácil de descifrar, lo primero que notaremos son sus 2 grandes terminales a sus costados y sus switches.
Empecemos con sus Terminales, 6 Entradas y 6 Salidas y Después los Switches de Control.

HOJA DE DATOS DE LA TARJETA

 

Tabla 1

Símbolo de la Terminal Descripción
B-        B+ Fase B Motor a pasos
A-        A+ Fase A Motor a pasos
GND        +24V Alimentación
EN-        EN+ Enable – Activación
CW-        CW+ Dirección
CLK-        CLK+ Pulso de Trabajo
tmap_002
Conexiones de la tarjeta TB6560

 

PASO 1:

Las Entradas a 5V “EN- EN+ CW- CW+ CLK- CLK+” en caso de requerir operarlo a más de 5V, requiere colorar una resistencia de 1k para 12V y 2.4 para 24V máximo. El + significa entrada el – significa salida, en este caso conectado a GND de nuestro Arduino.

  • EN- EN+: Habilitan o deshabilitan la operación
    • (NO LOS USAREMOS).
  • CW- a GND y CW+ Es el Giro, en Bajo “0” lógico Sentido Horario y “1” Anti Horario.
    • (Step Arduino PIN 8 a CW+ TB6560)
  • CLK- a GND y CLK+ es la Velocidad de Operación, Controlada por Pulsos.
    • (Dir Ardruino PIN 9 a CLK+ TB6560)

 

TB6560
Conexiones con el motor NEMA al TB6560

Las Salidas que dependen del Voltaje de Alimentación “B- B+ A- A+” y “GND +24V”.

  • En el NEMA 17 (Azul: B-, Amarillo: B+, Verde: A-, Rojo: A+) recomiendo revisar DataSheet.
  • Continuamos con GND conectado a la GND de la fuente y +24V a los 12V de la Fuente “APAGADA”.
TB6560
Conexión del Arduino Notchduino con el TB6560 mediante las salidas de los pines digitales.

PASO 2:

Los interruptores de control, cuenta con “SW1 SW2 SW3 S1 S2 S3 S4 S5 S6”, como muestran las tablas.

  • “SW1 SW2 SW3 S1” controlan el Amperaje, se recomienda colorarlo debajo del Amperaje de opresión de nuestro Motor a pasos (NEMA 17 1.8A) lo colocamos a 1.6Amp.
    • (SW1 “ON” SW2 “OFF” SW3 “OFF” S1 “OFF”)
  • “S1 20% y S2 50%” Stop Current, donde si el Amp aumenta un 20% se Detendrá.
    • (S1 “OFF” y S2 “OFF”)
  • “S3 S4” son el paso por Pulso e Opresión, a menor paso, más precisión, menor potencia.
    • (Experimenten S3 S4: 1 “OFF OFF”, ½ “ON OFF”, 1/8 “ON ON”, 1/16 “OFF ON”)
  • “S5 S6” Decay Setting
    • (RECOMENDADO S5 “OFF” S6 “OFF”)

 

TB6560
Conexiones del sistema, el conector jack 2.1mm es para fuente externa.

PASO 3:

Cargar programa al Arduino, a continuación podemos encontrar un enlace con mas información con el Módulo EasyDriver que tambien manejamos en HeTPro, de cualquier manera el TB6560  funciona similar:

http://www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html

 

CÓDIGO DE EJEMPLO 1:

void setup() {
pinMode(8, OUTPUT); // Es el Giro, en Bajo “0” lógico Sentido Horario y “1” Anti Horario.
pinMode(9, OUTPUT); // Velocidad de Operación, Controlada por Pulsos.
digitalWrite(8, LOW); // Sentido Horario
digitalWrite(9, LOW);
}
void loop() {
 digitalWrite(9, HIGH);
 delayMicroseconds(1000); // delay define la Velocidad o tiempo entre pasos
 digitalWrite(9, LOW);
 delayMicroseconds(1000); // delay de X milisegundos
 }

Aunque pequeño y elegante en este punto el Sistema ya es Funcional.
Nota: si estamos usando el Motor a pasos NEMA17 ten en cuenta lo siguiente:

“S3 S4” son el paso por Pulso e Opresión, a menor paso, más precisión, menor potencia.
(S3 S4: 1/1 “OFF OFF”, 1/2 “ON OFF”, 1/8 “ON ON”, 1/16 “OFF ON”)

[Exitation Mode, Quality Step’s, Max MiliSeconds Ficuency]
[1/1,200,327]   <–  200 pasos por vuelta a un pulso maximo de 327 mimisegundos
[1/2,400,156]   <– 400 pasos por vuelta a un pulso maximo de 156 mimisegundos
[1/18,1600,36] <– 1600 pasos por vuelta a un pulso maximo de 36 mimisegundos
[1/16,3200,16] <– 3200 pasos por vuelta a un pulso maximo de 16 mimisegundos

PODEMOS CONECTAR LA FUENTE y ENCENDERLA

A continuación podríamos, modificar con condicionales y lecturas analógicas: Controlar Velocidad, Controlar Pasos, Controlar Sentido, Controlar Encendido Apagado.

TB6560
IDE de Arduino probando los ejemplos

 

CÓDIGO DE EJEMPLO 2:

int Pot = 0; // Lectura Analógica en A0, Potenciómetro de 10k ohm
int Tiempo = 0; // Variable Tiempo
void setup() {
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);
 digitalWrite(8, LOW);
 digitalWrite(9, LOW);
 }
void loop() {
 // Moviendo el divisor de voltaje o Potenciómetro podemos alterar la velocidad.
 Tiempo = map(analogRead(Pot), 0, 1023, 150, 2000); // de 150 milisegundos a 2 segundos
digitalWrite(9, HIGH);
 delayMicroseconds(Tiempo); // delay define la Velocidad o tiempo entre pasos
 digitalWrite(9, LOW);
 delayMicroseconds(Tiempo); // delay de X milisegundos
 }
 

 

CÓDIGO DE EJEMPLO 3:

/* Controlar Pasos:
 En este caso lo que modificaremos es la Velocidad a la que los Pulsos de Operación se efectúan.
 en el TB6560 */
 int Pot = 0; // Lectura Analógica en A0, Potenciómetro de 10k ohm “NO USAR ACENTOS”
 int Paso = 0; // CONTADOR de Pasos
void setup() {
 pinMode(8, OUTPUT);
 pinMode(9, OUTPUT);
 digitalWrite(8, LOW);
 digitalWrite(9, LOW);
 }
void loop() {
 // Moviendo el divisor de voltaje o Potenciómetro podemos alterar la cantidad Max de pasos.
 int Max = map(analogRead(Pot), 0, 1023, 150, 2000); // de 150 Pasos a 2k Pasos
digitalWrite(9, HIGH);
 delayMicroseconds(1500); // delay define la Velocidad o tiempo entre pasos
 digitalWrite(9, LOW);
 delayMicroseconds(1500); // delay de X milisegundos
Paso = Paso + 1; // Contar un paso.
// Recuerde experimentar con 1 1/2 1/8 1/16 según sea la aplicación
 // Por ejemplo 1/16 en una CNC de precisión lento,
 // y por ejemplo 1 o 1/2 para abrir y cerrar una chapa rápido
if (Paso == Max) { // Si Paso a llegado a X pasos
 Paso = 0; // RESET contador Paso
 delay(500);} // Pausa de 1/2 segundo.
 }

26 comentarios en “TB6560 Controlador Motor a Pasos

  1. Quiero mover un motor a pasos de 6 cables con este drive ¿podria usar un PLC para generar los pulsos y controlar la cantidad de pulsos?

  2. Hola que tal. Tengo una dura, comentas que para el sentido de giro depende del pin 8 si esta en alto o en bajo. ¿Como le hago para que gire en los dos sentidos?

  3. Hola, es la mejor informacion sobere como conectar motores Nema 17/23 a TB6560 ; tengo mis tres motores, la targeta TB6560 y Arduino uno, pero no se por donde comenzar. Agradeceria cualquier informacion.
    Muchas gracias,
    Jorge

  4. Hola hector. Mi nombre es Jose Manuel Moliner. Te explico.
    Estoy diseñando un cnc casero. He conseguido buenos materiales de mecanica y husillos trapezoidales. Como el cnc vaa ser robusto (90cm x 70). Me he decidido a poner nema 23 y drivers tb6560. Ya tengo un arduino uno rev3 y el programa de mastercam y solidworks. Es viable el montaje y la puesta en marcha o tendré problemas de configuracion?. Soy nuevo en esto de programacion cnc y me gustaía que me echases una mano. Por favor.
    Muchas gracias de antemano y espero tu respusta.
    Un saludo

  5. Hola: Muy buen Tutorial. Una pregunta que se a repetido, como conectamos los tres motores, todos se puentean al pin 8 y al pin9 o se usan otros pines para cada driver TB6560.
    Gracias por ser un poco mas explicito ya que somos novatos en esto.
    Saludos.

        1. Luis, los que tu quieras, solo declara nuevos pines como en el caso de los del ejemplo.
          pinMode(8, OUTPUT);
          pinMode(9, OUTPUT);
          digitalWrite(8, LOW);
          digitalWrite(9, LOW);
          solo que necesitas declarar, ahora por ejemplo 2, 3, 4 y 5.

  6. hola que tal disculpa, yo quiero conectar un motor de 6 hilos con este driver pero no se como, he checa do algunas paginas y me dicen que no conecte el común es cierto eso?

    1. José, depende del motor, te recomiendo que primero identifiques cuales son los conexiones de tu motor. Usualmente si tienen mas de 4 hilos es por que tienen común, en este caso tiene mas de 1 común. Ya identificados te aseguro que no tendras duda de cual conectar.

      1. Estimado también es importante aclarar que cuando tienes por ejemplo 6 hilos, para el caso del driver tb6560 dos de estos (los comunes) no van conectados a ninguna parte osea van sin conexión y solo se conectan los 4 cables que salen directamente de las bobinas. Saludos y espero sea de ayuda, si necesitas ayuda tengo un par de páginas de referencia.

  7. Hola, disculpa estoy armando una CNC pero no tengo gran conocimiento del tema estoy experimentando, tengo un arduino UNO y tres motores NEMA 23 de dos fases a 3.0Amps/Phase, primero quisiera saber si el driver TB6560 me sirve para ponerlos en funcionamiento sin comprometer la vida útil de ningún elemento?.
    Lo segundo es que según entiendo es necesario un TB6560 para cada motor pero al buscar en Internet el que se ve en el tutorial los precios por unidad van desde $34.000 hasta $90.000 (COP) con especificaciones idénticas, cual seria el precio optimo para un driver de buena calidad de este tipo? o es preferible comprar un solo driver que soporte los tres motores?

  8. Hola, quisiera hacerlo girar en ambos sentidos, me podrías decir que es lo que tengo que cambiar? el arduino o la programación? mi motor es bipolar

Deja un comentario

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