Control de motores a pasos con TB6600 y Arduino

Publicado por Victor Arrieta en

 
Los  motores paso a  paso son un conjunto consistente de una caja reductora y un motor DC con una distribución especial  en sus bobinas. Esta distribución especial permite moverlos secuencialmente a medida que activamos y desactivamos cada bobina de una forma específica. Cada  modelo de motor paso a paso requiere una cantidad específica de pasos para dar  una vuelta completa, la cantidad  puedes encontrarla en el datasheet del motor. Cabe destacar también que, a diferencia de los servomotores, un motor paso a paso no tiene un sistema de retroalimentación para su posición, de esta forma, si  por ejemplo una fuerza externa lo mueve del de su set point, éste no será capaz de volver a tal posición. 
 
Por otro lado, a la hora de conectar un motor paso a paso debemos identificar primero el tipo de motor, sea unipolar (más de 4 cables) o bipolar (4 cables). Una vez identifiques el tipo de motor, debes identificar las conexiones de las bobinas, esto puedes hacerlo con un multímetro, este proceso consiste simplemente en medir continuidad.
 
Finalmente, para mover un motor paso a paso, como ya se dijo, es necesario activar sus bobinas en una secuencia específica, por lo tanto se hace necesario programar en un microcontrolador la  secuencia de pasos requerida. Sin embargo, existe una forma de simplificar esto, por medio del TB6600. Este es un circuito electrónico que es capaz de proveer la secuencia de  pasos que necesita el motor dándole nosotros sólo 2 señales básicamente, la primera es una señal digital que indique la dirección del movimiento (izquierda o derecha, alto o bajo) y la segunda, un flanco de subida cada vez que deseemos que el  motor de un paso. 
 
Una vez identifiquemos  el tipo de motor, debemos conectarlo al TB6600. Para este fin, a continuación listamos las conexiones más importantes del Easydriver por grupo.

Para conectar a nuestro microcontrolador tenemos:


+5V = Referencia de voltaje
CLK = Señal de avance, debemos enviar aquí un flanco de subida cada vez que queremos  que el motor avance un paso.
CW = Señal de dirección, debemos poner aquí un alto o un bajo según  si queremos que el  motor avance en una dirección o otra.
EN = Señal para habilitar y deshabilitar el movimiento del motor, puede dejarse sin conectar

Para conectar a la fuente para el motor tenemos: 


+32V = Positivo de la  fuente, de 8 a 42 VDC

GND = Referencia negativa de la fuente

Para conectar a nuestro motor tenemos 4 conexiones, 2 marcadas como A y 2 marcadas  como B, aquí debes conectar los extremos de las bobinas según se ha identificado previamente. Si es un motor bipolar, esta conexión es bastante obvia, sin embargo, si es un motor unipolar, deberás identificar cuales son los extremos  de las bobinas (serán los cables con mayor resistencia entre sí) y dejar los demás cables sin conectar (sólo conectas 4).


También debes tener en cuenta el potenciómetro del TB6600, debes ubicar éste para que sea capaz de suplir toda la corriente que necesita tu motor paso a paso, el TB6600 es capaz de suplir hasta 4 A por fase. Por último, debes revisar los switches de modo paso, hay 4 sobre la placa, pero en realidad sólo el 1, el 2 y el 3 tienen conexión. A continuación te mostramos los modos de operación según la posición de estos switches:


M1 M2 M3 Modo seleccionado
OFF OFF OFF STAND BY
OFF OFF ON FULL STEP
OFF ON OFF 1/2 STEP A
OFF ON ON 1/2 STEP B
ON OFF OFF 1/4 STEP
ON OFF ON 1/8 STEP
ON ON OFF 1/16 STEP
ON ON ON STAND BY
 

 

Ejemplo de operación de motor paso a paso con TB6600

Al realizar el siguiente montaje y subir el código a tu Arduino, observarás al motor moverse en una dirección y luego en otra. Si el motor es de 200 o menos pasos por unidad, dará una vuelta completa teniendo al driver en modo FULLSTEP.

Empezamos mostrando un esquema de conexión con Arduino UNO:

 
 
Código Arduino
 
int Dir = 13; //  definimos el pin de dirección CW
int Step = 12; // definimos el pin de comando de pasos CLK
boolean state  = true;


void setup() {

pinMode(Step,OUTPUT); // seleccionamos ambos pines como salidas
pinMode(Dir,OUTPUT);
digitalWrite(Step, LOW); //  escribimos valores iniciales
digitalWrite(Dir, LOW);

}

void loop() {

  state = !state; // luego de cada ciclo, cambiamos el estado para cambiar la dirección

  digitalWrite(Dir,state);  
  for (int i = 0; i < 200 ; i++)  // en este ciclo damos 200 pasos
  {    
    digitalWrite(Step, HIGH);
    delay(10);
    digitalWrite(Step, LOW);
    delay(10);
  }

}


FIN DE POST

Compartir esta publicación



← Publicación más antigua Publicación más reciente →