Manual

do

Maker

.

com

Driver de motor de passo TB6600

Driver de motor de passo TB6600

Um hybrid servo driver tem uma característica especial, que é o feedback de posição. Para que se tenha esse feedback de posição, deve-ser ter um driver que ofereça entrada para o feedback do encoder, que por sua vez deve estar acoplado ao motor de passo.

O que veremos nesse artigo é um excelente driver, mas não é um hybrid servo driver, apesar da semelhança. Mas tem montes de vantagens sobre os pequenos drivers normalmente utilizados em projetos maker. Se tem interesse em conhecer outros drivers, procure na caixa de Busca rápida por motor de passo. Um exemplo de driver que gosto bastante é o EasyDriver.

Mas o driver desse artigo é, apesar de simples, excelente! Melhor que EasyDriver, DRV8825 e similares. Claro que a diferença é proporcional ao custo - não que esse driver seja caro, mas custa mais do que um EasyDriver por razões óbvias. Então, seja qual for sua escolha, visite a loja da CurtoCircuito para ver a variedade de motores e drivers, e escolha o que se encaixa melhor para seu projeto.

Se estiver procurando por hybrid servo driver, bem, não tem na Curto. Se quiser ler a respeito, dê uma olhada nesse artigo sobre o HBS860 e Kalatec.

Wiring

Controlar o motor de passo é bem tranquilo, desde que a parte física esteja adequada; conectores sem mal contato, nível lógico adequado e fonte de alimentação com corrente suficiente.

Para esse artigo foi utilizada uma fonte de 24V@5A. O driver TB6600 suporta até 40V@4A, portanto, tem corrente de sobra nessa fonte. A conexão da fonte ao driver é bem explícita. Na parte que está escrito High Voltage, tem uma entrada para VCC e GND, que é a alimentação advinda da fonte chaveada.

Os 4 bornes seguintes são para as duas bobinas do motor de passo. Em ambos os bornes estão desenhadas as bobinas, com a descrição "A+", "A-", "B+" e "B-". Se tem qualquer dúvida relacionada à identificação dos fios do motor de passo, não se preocupe. O artigo anterior a esse é justamente um conjunto de dicas para identificar os fios do motor de passo, inclusive a ordenação das bobinas. Nunca mais você terá dúvidas!

Os próximos 6 bornes são a interface com a microcontroladora. No caso, um ESP32. Não foi preciso conversor de nível lógico - considerando que o ESP32 é 3v3. Pode ficar tranquilo, esse sketch funcionará com Arduino também, bastando mudar os GPIOs.

Precisaremos de 3 GPIOs para a interface, mas vamos entender o papel que cada um desses GPIOs desempenharão.

ENA

Esse IO é para ativar ou desativar o motor. Depende intrinsecamente da aplicação, mas em modos de uso mais comuns, o ENA pode ser desativado nos momentos de parada do motor. Isso é, durante o intervalo antes de um próximo movimento. Com isso alguns ganhos são percebidos, como redução de calor (porque quando o ENA é desabilitado não flui alta corrente nas bobinas). Não havendo consumo, também reduz-se o gasto de energia. Além disso, enquanto desabilitado, movimentos não esperados causados por ruído ou falha no programa não executarão movimentos no motor. Esse é um ponto de segurança a considerar.

No código básico de exemplo, desabilitaremos o motor a cada ciclo de movimento, então reabilitaremos antes da retomada.

DIR

Esse IO é usado para a direção; para um lado quando em LOW, para o outro lado quando em HIGH.

PUL

Esse IO é utilizado para excitar o movimento. Trata-se do PULso, que deve ocorrer de forma intervalar. No caso, iniciei em 500us, mas em alguns momentos tive perda dos passos. Para um tempo preciso será necessário que você experimente sob a carga que o motor trabalhará. O teste que fiz foi sem carga e, se tratando de um artigo, não fiz um tuning. Apenas coloquei direto em 1000us e problema resolvido.

Tendo esclarecido as funções de cada IO, podemos então definir 3 GPIOs para cumprirem a função. Escolha conforme for adequado para seu projeto. Aqui fiz na placa de desenvolvimento para ESP32 da Saravati.

Conecte os sinais ENA+, DIR+ e PUL+ ao 3v3 do ESP32. Como sugestão, usei os seguintes IOs:

TB6600ESP32
ENA-33
DIR-26
PUL-14

Bem, essa tabela nem é necessária, considerando que a definição está no código também. Mas melhor sobrar do que faltar, hum?

Sketch para o driver de motor de passo

Feitas as conexões, basta subir o código. No caso, estou utilizando PlatformIO com VS code, que é infinitamente melhor que a vergonhosa IDE do Arduino (o framework é excelente, só a IDE é uma porcaria). Utilizando PlatformIO, é necessário o primeiro include desse sketch. De outro modo, pode excluí-lo.

#include <Arduino.h>

#define ENA_PIN 33
#define DIR_PIN 26
#define PUL_PIN 14

void setup() {
  pinMode(ENA_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(PUL_PIN, OUTPUT);

  digitalWrite(ENA_PIN, HIGH);
}

void loop() {
  digitalWrite(DIR_PIN, HIGH);
  
  for (int i = 0; i < 200; i++) {
    digitalWrite(PUL_PIN, HIGH);
    delayMicroseconds(1000);
    digitalWrite(PUL_PIN, LOW);
    delayMicroseconds(1000);  
  }

  digitalWrite(ENA_PIN, LOW);
  delay(1000); 
  digitalWrite(ENA_PIN, HIGH);

  digitalWrite(DIR_PIN, LOW);

  for (int i = 0; i < 200; i++) {
    digitalWrite(PUL_PIN, HIGH);
    delayMicroseconds(1000);
    digitalWrite(PUL_PIN, LOW);
    delayMicroseconds(1000);
  }
  digitalWrite(ENA_PIN, LOW);
  delay(1000);
  digitalWrite(ENA_PIN, HIGH);
}

Isso fará um motor de 200 passos dar uma volta completa em ambas as direções, desde que os DIP switches de passo estejam em ON,ON,OFF.

Tabela de ajustes dos DIP switches

Sobre todos esses drivers mais avançados, a tabela de relação dos DIP switches são impressas na parte superior. Qualquer ajuste fino que desejar pode ser feito a partir dela, não tem segredo nenhum. Quanto maior o micro passo, maior a precisão, porém mais pulsos serão necessários para uma volta completa, além da diferença de velocidade, devido ao intervalo incrementado à quantidade de passos por revolução. Mas tendo colocado para funcionar, o resto é só ajuste empírico.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.