Componentes Eletronicos

Motor de Passo com Arduino e Driver TB67

Eletrogate 12 de março de 2021

Introdução

Há um tempo atrás, ensinamos aqui no blog como acionar um motor de passo usando o Drive A4988. Hoje traremos o TB67S, muito similar ao TB600 um drive mais robusto e muito mais prático de se configurar.

Mas antes, vamos falar rapidamente sobre o funcionamento de um motor de passo:

Motor de passo é um motor elétrico que não possui escovas ou comutadores, permitindo assim uma vida longa sem tantos desgastes.  O rotor constitui-se de um ou mais ímãs permanentes. No estator encontram-se várias bobinas. O controle do motor é feito por um circuito eletrônico que aciona repetidamente as bobinas numa sequência que permite o giro do rotor. Cada pulso enviado para o circuito, faz com que o motor avance um passo. O sentido de rotação do motor é controlado também pela sequência e pela polarização das bobinas. A velocidade que o rotor gira  é determinada pela frequência  dos pulsos do circuito de controle. Quanto maior a frequência, maior será o RPM.

Os motores de passo mais comuns são os que precisam de 200 passos para girar uma volta (revolução). Mas existem outros com um menor ou maior número de passos, dependendo da aplicação.

Crédito: Gustavo Murta

Para se aprofundar mais no assunto, clique aqui.

Voltando a falar do drive, apresentaremos agora suas principais características de hardware e configuração. Veja abaixo:


Hardware

O módulo é baseado no chip Toshiba TB67S109A . Este pode ser alimentado com tensão de até +40V VCC e nos permite controlar motores de passo bipolares que necessitam de até 3.5A por bobina e com alta precisão e eficiência, sendo possível configurar micropassos de até 1/32. Além disso, ele também possui diversas proteções para a segurança do seu motor, tais como:
– Entradas foto-acopladas¹: essa configuração garante a segurança do circuito de controle em caso de falha, pois o mesmo está completamente isolado do circuito de força, graças à presença de opto-acopladores¹ em seu circuito.
– Redução da corrente ociosa: com o motor parado, essa função é automaticamente acionada para reduzir o aquecimento do motor.
– Sensor de sobrecarga;
– Sensor de temperatura.

Suas principais características são:

– Tensão de Entrada: 9 à 40V
– ON (superior + inferior) = 0,49 Ω
– Controle de rotação para a frente e para trás
– 7 modos de micro-passo selecionáveis (1/1, 1/2A, 1/2B, 1/4, 1/8, 1/16 e 1/32 de passo)
– Corrente de saída de pico: IOUT = 4,0 A
– Corrente nominal: IOUT = 3,5 A ( 8 tipos de seleção de corrente)
– Resistor de entrada pull-down: 100 KΩ
– Leds de Power e de Falha
– Dimensões(CxL): 96mm x 56mm

A pinagem da placa é a seguinte:

Veja a seguir uma imagem do chip TB67S109A e do circuito interno do módulo:

Chip Toshiba TB67S109A. Créditos: Gustavo Murta

Circuito interno do drive. Detalhe para as entradas opto-acopladas¹ citadas anteriormente.


Configuração

As configurações de corrente de saída e micropassos do drive TB67s são extremamente simples e podem ser feita através de um DIP Switch já presente no módulo, o que o diferencia dos demais drives disponíveis no mercado. Para configurá-lo, basta usar as informações presentes nas tabelas em sua carcaça e posicionar as chaves de acordo com a corrente do motor e a configuração de passos desejada.

Vale a pena ressaltar que a chave para baixo é a posição ON, e para cima é OFF.


DIP Switch para configuração do driver. Créditos: Gustavo Murta

Note que os valores de corrente são pré definidos. É importante que sempre configure um valor igual ou inferior à corrente do seu motor, do contrário o drive sempre o desligará por aquecimento ou sobrecorrente.


Importante:

  • Esse módulo foi feito para motores de passo Bipolar, não use um motor unipolar. (exceto se o motor Unipolar puder ser usado no modo Bipolar);
  •  Antes de fazer a conexão dos fios das bobinas do motor, certifique-se que a identificação dos fios esta correta. Recomendo que meça o valor da resistência das bobinas;
  • Use um motor que se encaixe nas especificações do módulo – tensão máxima 40VCC e corrente máxima de 3.5A;
  •  Se estiver usando duas fontes separadas, alimente primeiramente o Arduino e depois o driver TB67S19A.
  • Conecte os fios das bobinas do motor no driver TB67S19A, antes de energizá-lo.
  • Não desconecte os fios da bobina, quando o driver TB67S19A estiver energizado.
  • Para alterar os dip switches, desligue a alimentação do Driver! Nunca faça mudança das chaves, com o driver energizado.

(dicas do Gustavo Murta)


Materiais Necessários para o Projeto Motor de Passo com Arduino e Driver TB67

Vamos te ensinar agora como fazer o acionamento de um motor de passo com o Arduino usando o TB67. Para isso, você precisará de:
– 1x Uno R3 + Cabo Usb para Arduino
– 1x Driver Para Motor de Passo TB67S109A (similar TB6600) 4A / 9-42V
– 1x Motor de Passo NEMA 17 – 4,2 kgf.cm / 1,7A
Jumpers – Macho/Macho – 20 Unidades de 20cm
– Fonte de Alimentação compatível

cta_cart


Montagem:

A montagem do circuito é bem simples, veja no esquemático abaixo:


Configuração na Prática

Como foi dito anteriormente, a configuração de corrente e micropassos deve ser feita usando o DIP Switch presente no drive. Para o nosso caso, estamos utilizando um motor NEMA 17 com 1,7A de corrente, logo nas configurações de passo, configuramos como Full Step (SW1 – ON, SW2 – ON, SW3 – OFF).e configuramos no drive para 1,2A (SW4 – ON, SW5 – OFF, SW6 – ON).


O Código

Concluída a montagem e configuração, carregue o código a seguir no Arduino e, para verificar seu funcionamento, basta abrir o Monitor Serial e informar quantos passos você deseja que o motor dê. Todo o seu funcionamento está descrito nos comentários.

#include <string.h> 

#define sentido 2 // dando nome nos pinos do Arduino
#define pulso 3
#define enable 4

int velocidade = 99; // varia de 1 a 99

char resposta[25] = {"         "}; // Declarando um vetor de caracteres global (fica visivel para todas as funções) que receberá os dados brutos da comunicação serial.

void setup() {
  Serial.begin(9600);
  for (int i = 2; i < 5; i++) pinMode(i, OUTPUT); //Fazendo com que os pinos 2,3 e 4 sejam saída, para controlar o driver.
  digitalWrite(enable, LOW); // O pino Enable fica low para que o driver seja habilitado
}

void loop() {
  EscutaSerial(); // A função que irá ficar escutando a comunicação serial e irá inserir esses dados no vetor resposta
  Comando(); // A função que irá interpretar o comando escrito no vetor resposta[] e realizar a ação.
//  Serial.println(resposta); // Printa o resultado interpretado caso seja necessário debugar.
}

void EscutaSerial() { // Função que recebe os dados seriais e insere na string
  byte leitura, i = 0;
  leitura = 255;
  strcpy(resposta, "                  ");
  while (1) {  
    if (Serial.available() > 0) { 

      while (leitura != 10) {
        if (Serial.available() > 0) {
          leitura = Serial.read();
          //   Serial.print((char)leitura);
          if (leitura==10) break;
          resposta[i] = (char)leitura;
          i++;
        }
      }
      i = 0;
      break;
    }
  }
}

void Comando(){ //Função que interpreta o que está escrito no vetor resposta e transforma em um comando para o motor de passo.
  int passos;
  passos = atoi(strtok(resposta, " "));
  Serial.println(passos);
   passos < 0 ? digitalWrite(sentido,HIGH) : digitalWrite(sentido,LOW);
 for(int i = 0; i<abs(passos); i++){
    digitalWrite(pulso, HIGH);
    delay(100/velocidade);
    digitalWrite(pulso, LOW);
    delay(100 - velocidade);
  }
}

Crédito: Gustavo Nery

O resultado esperado deve ser como mostrado no GIF abaixo:


Conclusão:

Apesar de seu funcionamento e configuração simples, o drive TB67S109A se mostrou robusto, prático e eficiente em sua proposta, sendo uma excelente opção para projetos que demandam motores com maior torque e precisão, como as Router CNC’s, além de conferir maior segurança e confiabilidade, graças aos seus circuitos de proteção. Sugerimos que estude o código e faça alterações de acordo com a sua necessidade, promovendo assim um maior aprendizado de todas as funções presentes e a extração máxima do desempenho da sua máquina.

1- Opto-acopladores ou acopladores ópticos são componentes capazes de transmitir um sinal elétrico de um circuito para outro sem contato direto, através de sinais luminosos. Seu funcionamento se dá através de um LED infravermelho e um fototransistor. Este por sua vez é acionado quando o LED é ligado, comutando dois circuitos de forma isolada.

Esquemático de um Opto-acoplador

Conhecia esse modelo de driver e já tinha usado em seus projetos? Conte para a gente como foi sua experiência. Não conhecia e vai usar no projeto? Quando for utilizar, tire uma foto e nos marque no instagram @eletrogate.

Se ficou alguma dúvida ou quer fazer uma sugestão, utilize o campo dos comentários para que possamos te responder! Não esqueça também de avaliar o post!

Até a próxima!

Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.


Sobre o Autor


Samuel Martins
@samuel.martins192

Cursando Eletroeletrônica no SENAI CETEL. Fanático por eletrônica, automação, impressão 3D e afins, dedico meu tempo livre a pesquisas e projetos ligados às principais áreas de interesse, pratico aeromodelismo e sou curioso por astrofotografia.


Eletrogate

12 de março de 2021

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!