lunes, 19 de febrero de 2018

Control de motores a pasos con TB6600 y Arduino

Resultado de imagen para motor nema 17

 
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:


M1M2M3Modo seleccionado
OFFOFFOFFSTAND BY
OFFOFFONFULL STEP
OFFONOFF1/2 STEP A
OFFONON1/2 STEP B
ONOFFOFF1/4 STEP
ONOFFON1/8 STEP
ONONOFF1/16 STEP
ONONONSTAND 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

0 comentarios:

Publicar un comentario

Display matricial 8x8 con Arduino SPI y MAX7219

La matrices led de 8x8 son elementos extremadamente útiles para desplegar mensajes que puedan ser visibles desde la distancia. ...