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.
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
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:
9 Comentários
é utilizada alguma biblioteca especial pra rodar esse código?
ResponderExcluireste Driver TB6600 é possível ligar o nema 17 5kgf?
ResponderExcluirSim!
ExcluirBoa tarde. Como saber qual fonte de alimentação usar para o drive? Quantos amperes ele tem que suportar?
ResponderExcluirMeu driver necessita de 55vac de entrada, e a saída máxima de corrente para o motor é de 6amperes?
ResponderExcluirBom dia, O que adicionar no código fonte para que eu possa através de um botão fazer com que o motor de uma volta e pare, toda vez que eu apertar o botão, sentido horário.
ResponderExcluirTenho um motor Nema 23 - 15kgf.cm e Driver TB6600
Boa noite, posso usar este conjunto com o GRBL?
ResponderExcluir
ResponderExcluirquero fazer uma controladora para CNC, e uso o GRBL.
Como eu controlo a velocidade deste motor com um potenciômetro de 0 a 100%?
ResponderExcluir