Controlar motor de passo com A4988 • Do bit Ao Byte
Djames Suhanko 10 de setembro de 2017 4 min read
Pra finalizar um projeto de uma CNC de bolso, foi necessário conhecer o driver do motor de passo também, como fiz com o EasyDriver para a impressora matricial. Como o projeto envolve um CNC shield com Arduino Nano e os drivers A4988, resolvi escrever sobre o driver previamente para reduzir o tamanho do artigo sobre a CNC.
Motor de passo com A4988
A primeira coisa a fazer, é familizarizar-se com o pinout. Esse modelo de placa em específico tem a distribuição de pinos conforme a imagem em destaque.
Os EasyDriver que utilizo na impressora matricial não esquentam quase nada com o driver que eu escrevi, mas também joguei a corrente para o mínimo com 12V de entrada. Na mini CNC que estou fazendo com drives de DVD talvez dê pra ter uma noção melhor do aquecimento e dessa vez não vou utilizar minha biblioteca, então, o funcionamento pode ser diferente e pode vir a esquentar muito mais. Por isso a minha recomendação é que se utilize dissipador sobre ele.
Se quiser dar uma olhada no datasheet, eis o link.
A capacidade dele é bem impressionante, entregando uma saída de até 35V@2A. Precisão de passos de até 1/16 avos, saída do motor entre -2V e +37V, sensibilidade nos pinos entre -0.5 e 0.5V. Temperatura ambiente entre -20 e +85 graus. Os EasyDriver chegam tranquilamente a 70 graus em diversas circunstâncias, principalmente quanto a intensidade e continuidade do uso, portanto deve-se ficar atento a isso.
Eu gosto muito do EasyDriver, essa é a minha primeira experiência com o A4988 e realmente preciso colocá-lo à prova, mas uma das características que me chamaram a atenção foi o controle do micro step dele, podendo ser 1, 1/2, 1/4, 1/8 ou 1/16 avos. Isso é muito importante em relação à precisão do movimento. En contrapartida, se você estiver utilizando ela em uma protoboard, o wiring será um pouco mais complexo. Se quiser uma programação pré-estabelecida, pode optar por deixar essa configuração pronta com a alimentação do nível lógico (3V3 ou 5V), sendo uma combinação de VCC ou GND. se estiver utilizando apenas 1 driver, pode optar por usar os pinos de GPIO sobressalentes do Arduino em questão. Por fim, eu acredito que a melhor utilização para esse driver é sobre uma CNC shield. Até agora eu vi uma CNC shield para Arduino UNO e uma para Arduino Pro Mini. Como ela trabalha em 3V3 e 5V, tanto faz qual Pro mini vai sobre o shield.
O funcionamento dos demais pinos é o mesmo que o do EasyDriver.
Direction Direção do motor GND alimentação do driver
Tep VO alimentação do driver
Leep Colocar o driver em sleep 1B fio 1 bobina 1
Ese 1A fio 2 bobina 1
MS3 MicroStep 3 2A fio 1 bobina 2
MS2 MicroStep 2 2B fio 2 bobina 2
MS1 MicroStep 1 GND alimentação motor
Enable ativa a controladora VMO alimentação motor
Os detalhes podem ser vistos no artigo do EasyDriver, sendo a excessão os micro steps, que possuem a seguinte combinação:
LOW LOW LOW 1 passo
HIGH LOW LOW 1/2 passo
HIGH HIGH HIGH 1/16 avos de passo
Se você não usar um CNC shield, coloque um capacitor de 47uF para proteção contra spikes entre VCC e GND do motor. Acho que não é necessário falar sobre polaridade do capacitor, hum?
Step e Direction controlam o movimento do motor e esses pinos precisarão estar conectados a pinos de GPIO do Arduino.
Um "Ctrl+Chups mega-kibe nas naveganças pelo google" me ajudaram a encontrar esse wiring de exemplo usando um Nema 17 com um Arduino Mega.
Fazendo de "ouvido", reduza ao máximo o limitador de corrente e se necessário for, aumente um pouquinho ou então, veja a tolerância do motor em questão. A tolerância pode ser calculada assim:
current_limit = Vref * 2
Por exemplo, se a tensão de referência é de 0.6, você tem 0.6*2 = 1.2A. Para pegar esse sinal, coloque uma ponta do multimetro sobre o potenciômetro e a outra ponta no GND ao lado direito do potenciômetro, na base.
Baseado no wiring supracitado, um código de exemplo para esse teste pode ser esse (bastante semelhante ao código de teste do Artigo do EasyDriver):
// definicao de pinos
const int pin_step = 3;
const int pin_dir  = 4;
// configuracao dos pinos
//200 pulsos para uma volta completa em fullstep no Nema 17
Aguarde o próximo Artigo relaciona, que é o projeto de uma CNC feita de sucata de drive de DVD, onde todo seu custo será no driver e no shield CNC, ambos com um baixíssimo custo, vale muito a pena!