Um desejo cada vez mais crescente entre os entusiastas da eletrônica, ou da programação de sistemas embarcados tem sido o desenvolvimento autônomo de máquinas CNC, e, para aqueles que um dia planejam construir sua própria cortadora a laser, Router, ou a tão famosa impressora 3D, o drive TB6560 será a melhor opção no controle dos motores de passo que poderão atuar em tais projetos.  

           Composto pelo novo chip TB6560AHQ da empresa Toshiba, este componente baseia-se em uma tecnologia voltada ao controle de correntes senoidais, possibilitando um ajuste automático nos parâmetros de acordo com o tipo de motor a ser acionado, reduzindo problemas com aquecimento, ruídos e vibração, apresentando uma movimentação mais suave, além de melhores performances em velocidades mais altas, graças ao acoplamento 6N137, que garante a velocidade sem perder o passo. Adequado a diversos modelos de motores como NEMA 17 e 23, e amplamente recomendados ao controle de motores híbridos com duas ou quatro fases, composto por quatro á seis fios. 


Definições da Interface

           Diferente de outros drivers como o A4988, em que a resolução dos passos os poderá ser alterado através da própria programação, este utiliza um ajuste manual através dos interruptores distribuídos pela extensão da placa. Essas chaves de controle poderão desempenhar diversos papéis, desde a escolha de um modo operacional, até o ajuste de corrente no Drive.

           Na imagem abaixo, iremos apresentar a configuração das funções presente em cada conector e interruptor distribuídos pelo Drive TB6560.

A distribuição das funções no TB6560 mostra-se de forma intuitiva, disponibilizando até mesmo algumas instruções de manuseio impressas em sua própria carcaça.

Controle Lógico

          A comunicação entre o drive e um microcontrolador qualquer será estabelecido de forma simples, através dos pinos de controle lógico CLK+, CW+ e EN+, sendo responsáveis por controlar o avanço do passo (STEP), direção (DIR) e a função ENABLE (EN) respectivamente, enquanto os demais terminais lógicos serão conectados ao GND. O terminal ENABLE será utilizado para ativar os drivers do motor, e, como se encontra conectado a um resistor de pull-down (GND), permanecerá ativo mesmo que esteja sem qualquer conexão, ou até que lhe seja atribuindo um nível lógico alto.


O drive TB6560 possui a capacidade de controlar funções como STEP, ENABLE E DIRECTION.

Entradas de Alimentação

          O Driver opera com tensões de alimentação entre 10 á 35 V (DC), porém, em vários artigos e datasheets, fica explicito que o mais recomendado será limitar-se a 24 V (DC), saída nominal máxima de aproximadamente 3 A, e 3,5 A de pico, não recomendado a motores que excedam essas especificações.

          As entradas A+, A-, B+ e B-, serão relacionadas aos terminais de comunicação do motor, se for um modelo com seis fios, basta conferir o diagrama do motor, mas, normalmente, basta isolar o fio do meio de cada bobina. Na imagem a seguir, por exemplo, temos o diagrama de um motor com seis fios, onde apenas o amarelo e branco foram mantidos de fora do Drive.


A distribuição das bobinas será dada de acordo com o especificado em diagramas e datasheets, mas, normalmente apenas 4 fios serão aplicados ao sistema.

Controle de Corrente

          O chip Toshiba TB6560 é conhecido por fornecer um circuito que se adequa ao projeto, visto que dispõe Semi-fluxo automático ajustável, desligamento de baixa tensão, proteção contra superaquecimento e sobrecargas, buscando tentar garantir um desempenho ideal.

          Outro fator que se destaca será o ajuste da corrente referencial do Drive, que em componentes como o A4988, por exemplo, seria realizada por meio de um potenciômetro pequeno e sensível que em muitos casos dificultava tal ação, o TB6560 utiliza de interruptores deslizantes, além de exibir uma folha de instruções impressa na própria placa, demonstrando como ajustar a corrente de acordo com as posições de cada chave.


O TB6560 dispõe de uma breve tabela para auxiliar no manuseio de algumas funções.

          Antes de ajustar a corrente de trabalho, certifique-se de que o motor estará desligado. Procure seguir a sequência apresentada na tabela a seguir, posicionando as chaves de acordo com o valor desejado, que deverá corresponder a Amperagem máxima do motor.


O ajuste das chaves SW1, SW2, SW3 e S1 permitirá um ajuste mais simples da limitação de corrente do drive.

          Os interruptores SW serão aplicados ao controle de corrente do drive, ajustando o valor de acordo com Se, por exemplo, for preciso ajustar o valor de corrente em 0.5 A, será necessário desligar as chaves SW1, SW2, e S1, mantendo apenas o SW3.


Os interruptores distribuídos pelas extensões da placa, servirão como meio de ajustar as especificações de operação do drive.

          A resolução dos passos será definida através das chaves S3 e S4, tendo como opções os modos Full-Step (passo completo), Half-Step (meio passo), Eighth-Step (1/8) e Sixteenth-Step (1/16).


O modo de avanço para os passos do motor poderão ser ajustados manualmente através das chaves S3 e S4.

          E por fim, as três últimas chaves serão aplicadas ajuste do decaimento e o Stop Current. A função atribuída a S2 será reduzir o aquecimento no motor ao parar, regulando o fluxo automático da corrente em 20% (ON) ou 50% (OFF).  O decaimento possibilita reduzir ruídos e aumentar a estabilidade do sistema, e para configura-lo de acordo com algum projeto basta seguir a ordem apresentada a seguir.  


O ajuste do decaimento da corrente irá reduzir os ruídos e aumentar a estabilidade do sistema.


Passos por Resolução

          Motores de passo, como o próprio nome sugere, apresentam uma movimentação em passos discretos ou fracionados, e na maioria dos casos possui um ângulo de rotação equivalente a 1,8º. Como uma volta completa corresponde a 360º, quantos passos seriam necessários para concluir cada ciclo? Esse tipo de valor é conhecido como PPR (Passos por revolução ou Pulsos por revolução), e poderá ser obtido através do seguinte calculo:

PPR= 360º/ângulo de rotação 

PPR= 360º/1,8º = 200 passos

          O tamanho do pulso irá influenciar diretamente na precisão do controle, e no torque do motor, por exemplo, quanto mais lento for à rotação, maior será o tamanho do pulso, resultando em pouca suavidade no movimento. A resolução dessa questão encontra-se na redução do tamanho do pulso, que será obtida por um controle em MicroSteeping (ou Micropassos), dividindo ciclos completos em etapas menores, suavizando a movimentação do motor, afinal, quanto menor o passo, maior será a precisão. Se aplicarmos o cálculo PPR ao modo Sisteenth-Step (1/16), por exemplo, iremos obter um valor 3200 passos por revolução.  

1,8º* 1/16 = 0,1125º

PPR= 360º/0,1125º = 3200 passos


Controlando um Motor bipolar de passo com Arduino

          Neste tópico faremos um teste de controle para o Driver TB6560, controlando o sentido da rotação, o avanço e a função ENABLE através da placa Microcontroladora Arduino. Para concluir as atividades desse post, tenha em mãos os seguintes componentes:

          Você pode compra-los clicando nos links acima ou visitando nosso site: www.curtocircuito.com.br.

          Primeiramente, iremos configurar a tensão de referência do TB6560, para isso, será necessário descobrir a corrente máxima atribuída a cada bobina do motor, no caso do motor NEMA 23, o valor máximo será de 2,8 A. Seguindo a tabela apresentada anteriormente, ajuste as chaves SW1, SW2, SW3 e S1 com um valor adequado mais próximo a corrente máxima do motor.


Posicione as chaves SW1, SW2, SW3 e S1, de acordo com o valor mais adequado a limitação máxima das bobinas do motor.

          O sentido da rotação será indicado através da luminosidade de dois LEDs, sendo Azul Horário, e verde anti-horário. Para conecta-los ao circuito, basta introduzir o terminal positivo de cada LED aos pinos digitais 13 e 12, e um resistor de 330KΩ entre os terminais negativos e um dos pinos GND do Arduino.  


Os leds serão utilizados como indicativo para o sentido da rotação do motor.

          O Motor NEMA 23 utilizado nesta atividade era composto por quatro fios, o que simplifica a conexão com o TB6560, mas, caso utilize um modelo com seis fios será necessário isolar os terminais centrais de cada bobina (pinos O). Os fios deverão ser conectados em sequência, seguindo a ordem apresentada no diagrama a seguir.   


Modelos com seis fios deverão isolar os terminais centrais.

          Conecte os fios preto (BLK) e verde (GRN) nos pinos A+ e A-, azul (BLU) e vermelho (RED) em B+ e B-, e alimente-o com uma fonte, que no caos de motores Nema 23, corresponde até 2,8A.


Siga a sequência de cores, como mostra o diagrama.

          Como o objetivo desta atividade será controlar as funções STEP, DIR, e ENABLE, conecte os pinos CLK+, CW+ e EN+, aos terminais digitais 7, 6 e 5 do Arduino simultaneamente, e os demais terminais ao GND.


Será possível controlar a direção, rotação e ENABLE, através da manipulação dos níveis lógicos de cada pino.


Programação

          Como as configurações de resolução são operadas de forma manual, a programação a seguir irá controlar o sentido da rotação, avanço, e proporcionar uma reinicialização nas funções do TB6560. Portanto, no exemplo abaixo, iremos definir a quantidade de passos atribuídos a cada resolução, selecionando-as através do monitor serial. Mas lembre-se de que o drive deverá ser ajustado fisicamente de acordo com o modo de pulso desejado, por exemplo, o modo Half-Step na programação fará o motor avançar 400 passos, porém, a movimentação irá seguir a ordem apresentada pelas chaves S3 e S4, então, se estiver configurado como Full- Step, o motor irá avançar os 400 * 1,8º, resultando em duas voltas completas ao invés de uma única.

// Projeto Curto Circuito - TB6560 & Arduino: Controlando motores de passo
//---- Pinos de controle-- 
#define STP 7 // Avanço do passo
#define DIR 6 // Direção do passo
#define ENA 5 // Função ENABLE 
//---- Variáveis de controle ----
int AZUL = 13;
int VERDE = 12;
int PPR = 0;      // pulsos por resolução
int passo = 0;    // passos
int temp = 10000;  // tempo entre os passos
void setup() {
  pinMode(STP, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(DIR, OUTPUT);
  pinMode(AZUL, OUTPUT);
  pinMode(VERDE, OUTPUT);
  digitalWrite(DIR, LOW);
  digitalWrite(STP, LOW);
  Serial.begin(9600);
  delay(100);
  Serial.println("Escreva: E para Ativar e O para desativar o Enable"); 
  Serial.println("Resoluções:1 para 200 passos, 2 para 400 passos, 3 para 1600 passos, 4 para 3200");
}
void loop() {
  char choice = Serial.read(); // Lê os caracteres escritos no monitor serial

  if (choice == '1')
  { // Se receber 1
    Serial.println("Resolução 200 passo");
    PPR = 200;              
    ciclo();
  }

  if (choice == '2')
  { // Se receber 1
    Serial.println("Resolução 400 passo");
    PPR = 400;               
    ciclo();
  }

  if (choice == '3')
  { // Se receber 1
    Serial.println("Resolução 1600 passo");
    PPR = 1600;               
    ciclo();
  }
  if (choice == '4')
  { // Se receber 1
    Serial.println("Resolução 3200 passo");
    PPR = 3200;               
    ciclo();
  }
if (choice == 'E')
  { // Se receber E
    Serial.println("Enable Ativo");
    EN1();
  }
if (choice == 'O')
  { // Se receber O
    Serial.println("Enable Desativo");
    EN2();
  }
}
void ciclo() {
  HR();
  while (PPR > passo)
  { // Enquanto PPR for maior que passo
    // Avança o passo
    digitalWrite(STP, LOW);
    delayMicroseconds(temp); //Tempo em Microseconds
    digitalWrite(STP, HIGH);
    delayMicroseconds(temp);
    passo++; // Aumenta em 1 o valor de passo
  }
  passo = 0; // valor de passso muda pra 0
  delay(1000);
  // Inicia o Sentido Anti-horário
  AH();
  while (PPR > passo)
  { // Enquanto PPR for maior que passo
    // Avança o passo
    digitalWrite(STP, LOW);
    delayMicroseconds(temp);
    digitalWrite(STP, HIGH);
    delayMicroseconds(temp);
    passo++;
  }
  passo = 0;

}
void HR() {                // Sentido Horário
  passo = 0;
  digitalWrite(AZUL, 1);
  digitalWrite(VERDE, 0);
  Serial.println("Sentido - Horario");
  digitalWrite(DIR, HIGH);
}
void AH()  {               // Sentido Anti-Horário
  passo = 0;
  digitalWrite(AZUL, 0);
  digitalWrite(VERDE, 1);
  Serial.println("Sentido - Anti-horario");
  digitalWrite(DIR, LOW);
}
void EN1()  {               // Ativa o Enable
digitalWrite(ENA, HIGH);
delay(10);
}
void EN2()  {               // Desativa o Enable
digitalWrite(STP, LOW);
delay(10);
}

          Todos os comandos serão ativados através de caracteres no monitor serial, sendo os números de 1 á 4 aplicados aos modos Full, Half, 1/8 e 1/16 respectivamente, e as letras “E” e “O” para ativar ou desativar o modo ENABLE. Antes de testar a programação, verifique a posição das chaves S3 e S4, para saber em qual modo o TB6560 irá operar, caso queira ajusta-lo em uma resolução específica, desligue o microcontrolador e a fonte de alimentação do motor, para evitar quaisquer danos ao circuito.  

Posicione as chaves S3 e S4 de acordo com a resolução de passo desejado.

          Se ambas estiverem posicionadas em OFF, como mostra a imagem acima, o drive irá operar em modo Full-Step. Como motores NEMA 23 possuem um ângulo de movimentação de 1,8º, serão necessários 200 passos para atingir 360ºem modo Full-Step, portanto, envie o caractere “1” no monitor serial do Arduino para avançar um ciclo completo. Cada modo resolução irá inverter o sentido da rotação ao atingir a quantidade determinada na variável “PPR”, ou seja, ao concluir um determinado valor em sentido horário, irá em seguida executar a mesma função em anti-horário.


Enviando um dos caracteres declarados na programação, será possível determinar quantos passos o motor irá percorrer.

          O comando char choice = Serial.read(), irá habilitar a leitura de caracteres no monitor serial do Arduino IDE, realizando determinadas operações de acordo com a mensagem recebida. Ao ativar uma resolução, a função while (PPR > passo) fará uma comparação, e, enquanto o valor de “PPR” for maior que a variável “passo”, o motor seguirá avançando. O tempo entre cada avanço estará armazenado em “temp”, e será interpretado em microssegundos.


Considerações Finais

          A construção de um controle voltado a motores de passo nunca se apresentou de forma tão simples, afinal, o Drive TB6560 mostra-se completo para a aplicação em projetos mais robustos, visto sua incrível capacidade de operar em tensões acima de 10V, operação em altas velocidades sem perder o passo, ajuste de corrente elétrica, e sistemas inteligentes que atuam na prevenção contra temperaturas elevadas e possíveis curtos circuitos. Em poucos instantes torna-se possível construir uma base aplicável em máquinas CNC, e mesmo que tal drive seja conhecido como movimentação em eixo único, muitos que optam por este modelo demonstram grande satisfação, sendo o TB6560 e modelos de motor como NEMA 23 as opções mais aplicadas na construção de impressoras 3D, cortadoras a laser, e mesas cartesianas.

Projeto simples e de fácil manuseio, exigindo poucos componente para um desempenho otimizado.