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 TerminalDescripción
B-        B+Fase B Motor a pasos
A-        A+Fase A Motor a pasos
GND        +24VAlimentació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.
 }

33 Comments

  1. saul arenas Marzo 4, 2015
    • Hector Torres Marzo 4, 2015
  2. dylan Abril 12, 2015
    • Hector Torres Abril 16, 2015
  3. Riyar alberto Garcia ramirez Diciembre 14, 2015
  4. Euler Vargas Diciembre 14, 2015
    • Hector Torres Diciembre 23, 2015
  5. Monserath Enero 25, 2016
    • Hector Torres Enero 26, 2016
  6. Jorge Marzo 4, 2016
    • Hector Torres Marzo 4, 2016
    • Hector Torres Mayo 4, 2016
  7. Luis E Baldini Mayo 1, 2016
    • Hector Torres Mayo 4, 2016
      • Luis Baldini Mayo 4, 2016
        • Hector Torres Mayo 7, 2016
  8. Josè Pedro Junio 15, 2016
    • Hector Torres Junio 16, 2016
      • Nelson Parra Agosto 17, 2016
        • Saul Jesus Agosto 18, 2016
  9. Johan Quintero Septiembre 3, 2016
    • Saul Jesus Septiembre 6, 2016
  10. Josue Octubre 5, 2016
    • Saul Jesus Octubre 6, 2016
  11. david rodriguez Mayo 27, 2017
  12. David Mayo 30, 2017
    • Hector Torres Mayo 31, 2017
  13. francisco herrera Junio 15, 2017
    • Hector Torres Julio 4, 2017
  14. Nicolas Junio 26, 2017

Leave a Reply