banner

Ir para o Forum

Motor de Passo Nema 23 com Driver TB6600 e Arduino Due



Hoje vamos voltar a falar de Motor de Passo. Vamos utilizar um Nema 23 que será controlado por um Driver TB6600 e um Arduino Due. É possível montar máquinas poderosas com este trio, isso ainda dentro dos projetos de baixo custo.

Esse Motor de Passo Nema tem várias versões. O 17 e o 34, por exemplo, são mais caros, já o 23, que utilizamos hoje, relativamente é de baixo custo. Tem, porém, bastante força. O próprio Nema 23 tem várias versões que chegam a 30 kgf.cm. O do nosso exemplo é de 15 kgf.cm.
Então, vamos pegar o Nema 23 com o Drive TB6600, o qual alcança de pico perto de 5A, dependendo de sua versão também, e fazer o nosso motor funcionar com o Arduino Due.
Vejo pouca gente falar do Arduino Due, mas eu gosto bastante dele porque ele possui um microcontrolador com core ARM Cortex-M3 como cérebro da placa. Esse processador é bem mais poderoso que o Arduino Uno. O Cortex-M3, por exemplo, dá ao projetista a possibilidade de fazer coisas mais elaboradas, mais sofisticadas.


A nossa montagem de hoje, portanto, consiste no Arduino Due ligado ao Driver TB6600 tocando o Motor de Passo Nema 23 de 15 kgf.cm. Se você colocar isso na ponta de um fuso, esse motor pode chegar a empurrar entre 100 e 200 kg para frente, tamanha a força dele. Então, no vídeo temos o Motor de Passo girando por conta de um programa que já está rodando, junto ao Arduino Due que é ligado por quatro fios, um deles, referencial, e os restantes são de sinal. Temos o Driver e uma fonte 24 volts por 10A. Coloquei, então, um Módulo Step Down para poder regular a tensão em cima do Driver. Um display, então, mostra a tensão e a corrente. Essa montagem é a primeira ideia de um projeto que quero montar: um Laboratório de Motor de Passo.
Uma característica deste Driver TB6600 é que ele tem uma tensão mínima de funcionamento, que no caso deste que utilizei era de 9 volts. O máximo que eu coloco com esse Step Down é 19 volts porque essa fonte é de 24 volts, e nessa etapa de regular tensão ele perde uns 5 volts.
Neste caso, o motor está rodando a 1/32 micropassos. Só para vocês terem uma ideia, uma impressora 3D funciona a 1/16 micropassos. Então, nosso Nema aqui está rodando com muita precisão e muita força. A tensão e a corrente, portanto, você vai controlando pelo Step Down, conforme sua preferência. Quando o motor para, um led é aceso para alerta e proteção do Driver.

Arduino Due


Falando sobre o Arduino Due, não posso deixar de lembrar que ele é um Cortex-M3 e é uma arquitetura de processador ARM. Esta é aberta e muito utilizada nos celulares de maneira geral. Gosto deste tipo porque é bastante otimizado, gasta pouca energia e te entrega um poder de processamento. Importante ainda saber que este Arduino é 3v3, diferente do Uno e do Mega, este último com o shield bastante parecido com o Due.
O Arduino Due tem tensão de entrada de 6 a 20 volts porque ele tem um regulador de tensão. Ele tem 54 IOs, ou seja, pinos de entrada e saída, dos quais 6 fornecem PWM. O conversor A/D é de 12 bits e a saída é analógica, o que significa que eu consigo gerar uma forma de onda, ou seja, posso tocar um MP3 ou processar um sinal digital. 
O consumo é alto, de cerca de 800 mA. A memória Flash é de 512 KB e a memória RAM é 96 KB. Lembrando que o Arduino Due não tem sistema operacional. Quando você compila um programa em C para o Arduino Due, você está compilando um programa autocontido. Ele pega o seu programa em C e gera um código de máquina que roda lá dentro. É diferente de você pegar um programa e compilar no Raspberry Pi, que ele vai rodar no Linux que consta dentro dele.
Só para encerrar essa apresentação do Arduino Due, sua velocidade de clock é de 84 MHz e possui o JTAG / SWD, um bom acesso de depuração.
Uma observação: quem não tem o Arduino Due, pode usar perfeitamente o Arduino Uno nessa montagem. Acredito que a única coisa que possa necessitar de alteração seja a pinagem.


Motor de Passo e o Driver. Como usar?

Se você é um maker ou se você gosta de fazer seus próprios projetos tem basicamente três coisas que vão te permear sobre driver e motor de passo. A primeira é para quando você já tem um projeto pronto, como uma Router usinando uma placa de circuito, no qual você não vai precisar programar. A segunda situação envolve o Motion Control: você coloca uma câmera que vai mexendo em timelapse possibilitando controles de câmeras ideais para seu propósito. A terceira possibilidade de criação envolve a mecatrônica industrial: um motor de passo é transformado em servo motor.


   1 Montar uma Router 3D
   Já existe um firmware ( grbl )
   Já existe hardware de controle
   Já existe projeto mecânico
   Já existe integração com software





   2 Motion Control
   Não existe um firmware
   Não existe projeto mecânico
   Não existe software de controle





   3 Mecatrônica Industrial
  Placa de controle e firmwares sendo trocados:
  por Arduino e programação C




Montagem com Arduino Due


Prestemos atenção na ligação do motor: AB, A+, A-, B+, B-, se é quatro fios, sendo que é bipolar o motor.
Também devemos observar os 3 pinos de ligação do Arduino Due com o Driver, incluindo Direção e Step.

Datasheet: Wotiom


Especificações:
Nema 23
- Torque: 15 kgf.cm
- Ângulo do passo: 1.8º
- Número de fases: 2
- Classe de Isolação: B
- Resistência de Isolação: 100MΩ
- Corrente por Fase: 3.0A
- Resistência por Fase: 1,3Ω ±10%
- Indutância por Fase: 2,2mH ±20%

Configuração do Driver:


A configuração deste modelo do Driver TB6600 se dá através das dip-switches. Neste caso, por exemplo, a minha configuração é de 32 micropassos, 1/32, que deve ter as chaves S1  S2 e S3 nas posições OFF/OFF/OFF. E depois, para 2,5 ampères, as dip-switches S4, S5 e S6 devem ficar na posição OFF/ON/ON, respectivamente.

Código Fonte

Configurando as constantes, nós habilitamos o motor, a direção e os pulsos. No intervalo usamos 350 microssegundos. Partimos para o Setup, que no digitalWrite habilita em low, seguindo para o Loop, que, no !pulso, vai inverter o estado da variável, alternando entre low/high, com uma onda completa em 700 microssegundos. Toda a explicação do código fonte você pode ver no vídeo "Parte 3".

const int ena = 2; //habilita o motor
const int dir = 3; //determina a direção
const int pul = 4; //executa um passo
const int intervalo = 350;   //intervalo entre as 
   // mudanças de estado do pulso
boolean pulso = LOW; //estado do pulso

void setup()
{
pinMode(ena, OUTPUT);
pinMode(dir, OUTPUT);
pinMode(pul, OUTPUT);
digitalWrite(ena, LOW); //habilita em low invertida 
digitalWrite(dir, HIGH); // low CW / high CCW 
digitalWrite(pul, HIGH); //borda de descida
}

void loop()
{
pulso = !pulso; //inverte o estado da variável
digitalWrite(pul, pulso); //atribui o novo estado à porta
delayMicroseconds(intervalo); 
}

Faça o download dos arquivos:
PDF



4 comentários:

  1. é utilizada alguma biblioteca especial pra rodar esse código?

    ResponderExcluir
  2. este Driver TB6600 é possível ligar o nema 17 5kgf?

    ResponderExcluir
  3. Boa tarde. Como saber qual fonte de alimentação usar para o drive? Quantos amperes ele tem que suportar?

    ResponderExcluir
  4. Meu driver necessita de 55vac de entrada, e a saída máxima de corrente para o motor é de 6amperes?

    ResponderExcluir

Tecnologia do Blogger.