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.
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.
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.
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.
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.
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.
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).
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.
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:
- Driver Motor de Passo – TB6560;
- Arduino Uno R3 ou compatível;
- Kit Jumper Macho Macho;
- Protoboard 400 Pontos;
- LED Alto Brilho Azul – 5 mm;
- LED Alto Brilho Verde – 5 mm;
- Motor de Passo Nema 23 - 12 Kgf.cm / 2,8A;
- Resistor 330R - 1/4 W - 5%;
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.
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.
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.
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.
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.
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 2 */
Serial.println("Resolução 400 passo");
PPR = 400;
ciclo();
}
if (choice == '3')
{ /* Se receber 3 */
Serial.println("Resolução 1600 passo");
PPR = 1600;
ciclo();
}
if (choice == '4')
{ /* Se receber 4 */
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.
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.
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.
>10V é o recomendado pelas fabricantes do Driver em questão.
Isso acontece, pois a potência necessária para alimentar um motor de passo, caso esteja em tensões muito baixas, pode ultrapassar a capacidade de corrente suportada pelo Drive.
Tenho uma DÚVIDA....como ligar este driver ou o TB 6600 na ramps 1.4 , em uma impressora 3d controlada pelo marlin?
Grato pela atenção.
Abraço!
https://www.youtube.com/watch?v=tuOKve82lnU
Funciona certinho, muito bom, gostei muito!
Só queria saber como fazer para ajustar a velocidade?
Você pode ajustar o número de passos por rotação, além do intervalo de tempo entre um passo e outro, isso será o suficiente para alterar a velocidade de rotação do seu motor.
Esse driver é ótimo para o uso em conjunto com motores do tipo Nema 17.
Você precisa verificar as especificações do seu NEMA de acordo com o modelo dele, NEMA 17 é o padrão do motor. Normalmente no corpo do motor existe um adesivo com o código do modelo, com isso você poderá encontrar outros valores como corrente, torque, entre outros.