



O Módulo Driver A4988 é bem versátil e tem sido muito usado no controle dos motores de passo de CNCs e Impressoras 3D. Com esse tutorial você aprenderá como usá-lo. Entenderá como funciona um motor de passo e o Driver A4988. Aprenderá como configurar o driver para permitir movimentos mais adequados para o seu projeto. A diferença desse tutorial para os outros sobre A4988, é que nele você terá um controle digital dos pinos de seleção do modo de passo. Nos outros tutoriais, esse controle é feito através de chaves ! Nada impede, que você despreze esse controle digital e use as chaves para selecionar o modo 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 imã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.



Existem atualmente três tipos de motores de passo:
- Relutância variável
- Imã permanente
- Híbrido
Os motores de passo de Relutância Variável são os menos comuns, pois não possuem imãs permanentes. O rotor é feito de ferro doce. Os campos magnéticos são formados por enrolamentos no estator alimentados com corrente contínua. São usados em aplicações especiais com tamanho reduzido ou em tamanho maior em aplicações industriais. O circuito driver é diferente dos outros mais comuns. Esse é um motor RV :
Os motores de passo com imã permanente são motores mais baratos e com menor precisão (resolução), com passos com ângulos de 7,5 a 15 graus (48 a 24 passos por volta). São os mais usados em periféricos de computadores, devido ao baixo preço e baixa velocidade. Como o nome já diz, tem imãs permanentes que produzem maior torque do que os motores com relutância variável. Os enrolamentos do rotor são magnetizados alternadamente com o polo norte e sul, permitindo uma maior intensidade no fluxo magnético.
Os motores de passo híbridos são os motores mais sofisticados e mais caros, pois produzem melhor performance e maior velocidade devido ao menor angulo por passo. Os ângulos por passo podem variar entre 3,6 a 0,9 graus (100 a 400 passos por volta !) Esse motor possui as melhores características dos outros dois tipos de motor , IP e RV. O rotor é multi-dentado como o motor de RV, e tem dois magnetos polarizados presos ao eixo. Essa estrutura permite melhores características de torque dinâmico e de travamento. Por terem maior precisão, são os mais usados em fresadoras, impressoras 3D, etc.
Referências :
http://www.solarbotics.net/library/pdflib/pdf/motorbas.pdf
https://www.astrosyn.com/wp-content/uploads/2015/10/Guide-to-Steppe...
http://www.geckodrive.com/support/step-motor-basics.html
Normalmente motores de passo tem duas fases, mas podem existir motores com três ou cinco fases também.
Dependendo do enrolamento dos motores de passo, podemos ter motores Unipolares ou Bipolares:
Motores de Passo - UNIPOLAR
Motores Unipolares tem fases (duas) com enrolamentos com um terminal central, por isso são consideradas por alguns, por terem quatro fases com um enrolamento para cada fase.
Nesse tipo de motor, cada fase é energizada por um circuito driver num único sentido de corrente somente. Isto é, uma extremidade do enrolamento será sempre positiva e a outra sempre negativa. O driver pode ser implementado com um transistor apenas. A desvantagem do motor unipolar é que tem menos torque do que o bipolar similar, pois sempre terá no máximo, a metade das fases energizadas. Daí pode-se concluir que tem 50% da eficiência em relação ao bipolar.
Motores de Passo - BIPOLAR
Motores bipolares, como o nome já diz tem duas fases, normalmente um enrolamento por fase.
A corrente no enrolamento precisa ser invertida para reverter um pólo magnético. Por isso , o circuito driver é mais complicado e geralmente utiliza-se de duas pontes-H. Pelo fato de serem melhores utilizados, eles são mais poderosos do que um motor unipolar do mesmo tamanho.
Tipos de Enrolamentos
Motores que tem quatro enrolamentos separados por fase podem existir. Desse tipo, eles podem ser usados tanto no modo Unipolar quanto no modo bipolar. Mas somente se os quatro enrolamentos estiverem isolados !
Dependendo das conexões dos enrolamentos os motores podem ter quatro fios (modo Bipolar), cinco, seis ou oito fios. Para motores com cinco fios, somente pode ser usado o modo Unipolar. Mas para seis e oito fios, temos algumas variações bem interessantes.





É importante entender as especificações de um Motor de Passo, para que possa fazer uma escolha correta para um Driver de Motor. Nunca exceda as limitações de um Motor ou de um Driver, pois assim poderá danificá-los. Esse é o link de um dos maiores e mais antigos fabricantes de Motores de Passo do Japão: Link de Motores de Passo Minebea Especificações de um Motor Minebea 17PM-K053B : (exemplo)
O módulo Driver A4988 possui um chip A4988, resistores e capacitores. O chip A4988 possui duas pontes H com transistores FET DMOS para fazer o controle de motores de passo Bipolares. (motores com quatro, seis ou oito fios). Esse chip não pode controlar motores de passo Unipolares ! Devido ao uso de FETs para os drivers do motor, a resistência interna da Ponte H é baixa. Isso é muito bom, pois diminui bastante a potência despendida e portanto, o calor dissipado é bem menor. O chip é bem versátil, tem proteção contra curto-circuitos nas saídas e proteção contra excesso de temperatura. Ele permite cinco modos de controle dos passos - Passo completo(full step), meio passo, um quarto de passo, um oitavo de passo e um dezesseis-avos de passo, os quais chamamos de micro-stepping. A capacidade máxima de controle na saída é de até 35 Volts e +-2 amperes. O chip tem um sofisticado controle de corrente nos motores, que permite o uso, com barulho reduzido, precisão apurada e dissipação reduzida de potência. Não aprofundarei na explicação do circuitos internos do motor, pois são bem complexos. Essas são as informações (datasheet) do chip A4988: http://www.allegromicro.com/en/Products/Motor-Driver-And-Interface-... No chip, de um lado temos as portas de controle do motor e do outro lado , as conexões com o motor e os pinos de monitoramento de corrente. Todas as entradas de controle do motor são compatíveis com os níveis de 3,3V e 5V, adequadas tanto para os Arduinos quanto para os ESP8266, ESP32 e Raspberry PIs. O fabricante do chip é a Allegromicro. É uma empresa bastante experiente em drivers de motores. E tem muitos outros chips específicos para controle de motor. Pinos do Módulo Driver A4988:
Esses são os cinco Modos de Passo do Motor, selecionados através dos pinos MS1, MS2 e MS3:

PPR = 360º / 1,8º = 200 passos (ou pulsos)
Esse parâmetro chama-se PPR - pulsos por revolução. Veja que quanto menor o modo de passo, maior é o número PPR, permitindo uma maior precisão no controle do motor. Mas saiba, que o modo micro-passo produz um torque menor do que o modo passo completo, devido à redução de corrente usada nesse modo.(para evitar danificá-lo)
Para testes, montei um circuito do Módulo Driver A4988 conectado à um motor de passo NEMA17, sendo controlado por um Arduino Nano (ou outro modelo de Arduino). Normalmente encontra-se na WEB, inúmeros circuitos desses, mas somente controlando os pinos de sentido de rotação (DIR) e dos pulsos dos passos (STEP). Para permitir um controle total do Driver A4988, na minha montagem todos os pinos de controle estão conectados às portas digitais do Arduino. Materiais necessários para o projeto com Arduino Nano, Driver A4988 e NEMA17
Observações importantes :
O Módulo Driver A4988 tem um potenciometro (POT) de ajuste de corrente máxima. Se a corrente ultrapassar o limite, o chip será desativado para proteção dos circuitos. Antes de rodar o programa de teste, o ajuste de corrente deverá ser realizado ! Veja o procedimento abaixo.
O cálculo da corrente máxima é esse ( retirado das especificações do fabricante do chip A4988) :
I max = V REF / ( 8 x RS ) ou V REF = I max x ( 8 x RS )
No meu módulo RS = 0,1 ohm e a tensão Vref = 1,25 V ( veio ajustado com essa tensão)
Portanto :
I max = 1,25 / ( 8 x 0,1 ) = 1,56 Ampéres
Fazendo alguns cálculos como exemplo :
( S1 e S2 = 0,1 ohms - codigo R100 no resistor)
I max = Vref / ( 8 x 0,1 )
Criei um Sketch para permitir o teste de todos os pinos de controle / funções do Módulo A4988. Usei as oito portas digitais do Arduino. A designação de cada porta foi escolha minha. Nada impede que você utilize outras portas, desde que altere as ligações e o seu sketch de acordo com o novo circuito. O Sketch permite o uso de todos os modos de passo :
// Controle de Motor de Passo com Modulo driver A4988
//
// Modulo A4988 / Motor de Passo Bipolar / Arduino Nano / IDE 1.8.5
// Gustavo Murta 29/mar/2018
// Definiçoes das Portas Digitais do Arduino
int RST = 8; // Porta digital D08 - reset do A4988
int SLP = 9; // Porta digital D09 - dormir (sleep) A4988
int ENA = 7; // Porta digital D07 - ativa (enable) A4988
int MS1 = 4; // Porta digital D04 - MS1 do A4988
int MS2 = 5; // Porta digital D05 - MS2 do A4988
int MS3 = 6; // Porta digital D06 - MS3 do A4988
int DIR = 3; // Porta digital D03 - direção (direction) do A4988
int STP = 2; // Porta digital D02 - passo(step) do A4988
int MeioPeriodo = 1000; // MeioPeriodo do pulso STEP em microsegundos F= 1/T = 1/2000 uS = 500 Hz
float PPS = 0; // Pulsos por segundo
boolean sentido = true; // Variavel de sentido
long PPR = 200; // Número de passos por volta
long Pulsos; // Pulsos para o driver do motor
int Voltas; // voltas do motor
float RPM; // Rotacoes por minuto
void setup()
{
Serial.begin(9600);
DDRD = DDRD | B11111100; // Configura Portas D02 até D07 como saída
disa_A4988(); // Desativa o chip A4988
DDRB = 0x0F; // Configura Portas D08,D09,D10 e D11 como saída
digitalWrite(SLP, HIGH); // Desativa modo sleep do A4988
rst_A4988(); // Reseta o chip A4988
ena_A4988(); // Ativa o chip A4988
}
void rst_A4988()
{
digitalWrite(RST, LOW); // Realiza o reset do A4988
delay (10); // Atraso de 10 milisegundos
digitalWrite(RST, HIGH); // Libera o reset do A4988
delay (10); // Atraso de 10 milisegundos
}
void disa_A4988()
{
digitalWrite(ENA, HIGH); // Desativa o chip A4988
delay (10); // Atraso de 10 milisegundos
}
void ena_A4988()
{
digitalWrite(ENA, LOW); // Ativa o chip A4988
delay (10); // Atraso de 10 milisegundos
}
void HOR() // Configura o sentido de rotação do Motor
{
Serial.println(" Sentido Horario ");
digitalWrite(DIR, HIGH); // Configura o sentido HORÁRIO
}
void AHR() // Configura o sentido de rotação do Motor
{
Serial.println(" Sentido anti-Horario ");
digitalWrite(DIR, LOW); // Configura o sentido ANTI-HORÁRIO
}
void PASSO() // Pulso do passo do Motor
{
digitalWrite(STP, LOW); // Pulso nível baixo
delayMicroseconds (MeioPeriodo); // MeioPeriodo de X microsegundos
digitalWrite(STP, HIGH); // Pulso nível alto
delayMicroseconds (MeioPeriodo); // MeioPeriodo de X microsegundos
}
void FREQUENCIA() // calcula Pulsos, PPS e RPM
{
Pulsos = PPR * Voltas; // Quantidade total de Pulsos (PPR = pulsos por volta)
PPS = 1000000 / (2 * MeioPeriodo); // Frequencia Pulsos por segundo
RPM = (PPS * 60) / PPR; // Calculo do RPM
}
void FULL()
{
Serial.println(" Passo Completo PPR = 200 ");
PPR = 200; // PPR = pulsos por volta
digitalWrite(MS1, LOW); // Configura modo Passo completo (Full step)
digitalWrite(MS2, LOW);
digitalWrite(MS3, LOW);
}
void HALF()
{
Serial.println(" Meio Passo PPR = 400 ");
PPR = 400; // PPR = pulsos por volta
digitalWrite(MS1, HIGH); // Configura modo Meio Passo (Half step)
digitalWrite(MS2, LOW);
digitalWrite(MS3, LOW);
}
void P1_4()
{
Serial.println(" Micro-passo 1/4 PPR = 800 ");
PPR = 800; // PPR = pulsos por volta
digitalWrite(MS1, LOW); // Configura modo Micro Passo 1/4
digitalWrite(MS2, HIGH);
digitalWrite(MS3, LOW);
}
void P1_8()
{
Serial.println(" Micro-passo 1/8 PPR = 1600 ");
PPR = 1600; // PPR = pulsos por volta
digitalWrite(MS1, HIGH); // Configura modo Micro Passo 1/8
digitalWrite(MS2, HIGH);
digitalWrite(MS3, LOW);
}
void P1_16()
{
Serial.println(" Micro-passo 1/16 PPR = 3200 ");
PPR = 3200; // PPR = pulsos por volta
digitalWrite(MS1, HIGH); // Configura modo Micro Passo 1/16
digitalWrite(MS2, HIGH);
digitalWrite(MS3, HIGH);
}
void TesteMotor()
{
Print_RPM (); // Print Voltas, PPS e RPM
HOR(); // Gira sentido Horario
for (int i = 0; i <= Pulsos; i++) // Incrementa o Contador
{
PASSO(); // Avança um passo no Motor
}
disa_A4988(); // Desativa o chip A4988
delay (1000) ; // Atraso de 1 segundo
ena_A4988(); // Ativa o chip A4988
AHR(); // Gira sentido anti-Horario
for (int i = 0; i <= Pulsos; i++) // Incrementa o Contador
{
PASSO(); // Avança um passo no Motor
}
disa_A4988(); // Desativa o chip A4988
delay (1000) ; // Atraso de 1 segundo
ena_A4988(); // Ativa o chip A4988
}
void Print_RPM ()
{
FREQUENCIA(); // calcula Pulsos, PPS e RPM
Serial.print(" Voltas= ");
Serial.print(Voltas);
Serial.print(" Pulsos= ");
Serial.print(Pulsos);
Serial.print(" PPS= ");
Serial.print(PPS, 2);
Serial.print(" RPM= ");
Serial.println(RPM, 2);
}
void loop()
{
Serial.println();
FULL(); // Selecione aqui o modo de passo
//HALF(); // desmarque o comentario somente da opcao desejada
//P1_4();
//P1_8();
//P1_16();
Voltas = 3; // Selecione o numero de Voltas
TesteMotor(); // Inicia teste do motor
}
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
O Módulo Driver A4988 é bem versátil e tem sido muito usado no controle dos motores de passo de CNCs e Impressoras 3D. Com esse tutorial você aprenderá como usá-lo. Entenderá como funciona um motor de passo e o Driver A4988. Aprenderá como configurar o driver para permitir movimentos mais adequados para o seu projeto.
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200