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.
Referências :
https://learn.adafruit.com/all-about-stepper-motors/types-of-steppers
http://www.kocomotion.de/fileadmin/pages/10_PRODUKTE/Dings/Dings_hy…
http://www.ece.mtu.edu/labs/EElabs/EE2304/EE2304_website_2008/Stepp…
http://www.nmbtc.com/pm-step-motors/engineering/pdf/pm_select.pdf
É 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)
Holding Torque = O torque máximo que pode ser aplicado a um motor energizado, sem causar rotação contínua.
Detent Torque = O torque necessário para girar um motor de passo não energizado. Este torque resulta do ímã do rotor de um motor híbrido ou de imã permanente.
Esse Gráfico abaixo representa a variação do Torque do motor em relação à frequência dos pulsos do Driver e RPM do motor. Veja que quanto menor a frequência, maior será o Torque. Importante saber, que todo motor de passo tem uma frequência máxima. Se ultrapassar essa frequência, o motor irá vibrar e parar de girar!
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:
Algumas informações adicionais sobre o chip A4988:
O pinos MS1, MS2 e MS3 tem resistores conectados no terra (pull down). Portanto se não conectar esses pinos em alguma porta de um microcontrolador, o modo que será usado é o Passo completo ( Full Step).
O pino -ENABLE também tem um resistor conectado no terra (pull down) , portanto se não conectar no microcontrolador, o módulo ficará sempre ativo.
Já o pino -SLEEP tem um resistor conectado no VDD (pull up). Portanto se estiver isolado ele nunca irá dormir ..
Esses são os cinco Modos de Passo do Motor, selecionados através dos pinos MS1, MS2 e MS3:
Os motores de passo mais comuns, são os motores que cada passo corresponde à 1,8 graus. Como uma revolução completa tem 360 graus, portanto esse motor precisa de 200 passos para completar uma volta. Sabemos que para o avanço de cada passo é necessário um pulso, portanto:
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.
Referências sobre Micro-Stepping :
https://www.zaber.com/applications/technotes_documents/microstepping_tutorial.pdf
http://users.ece.utexas.edu/~valvano/Datasheets/StepperMicrostep.pdf
http://homepage.cs.uiowa.edu/~jones/step/micro.html
(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 chip A4988 tem recursos de proteção contra excesso de temperatura ( temperatura de Shutdown é de 165 graus Celsius), proteção contra excesso de corrente nos FETs de potência e ainda proteção contra curto-circuitos nos pinos conectados nas bobinas.
A corrente máxima do Driver deverá ser ajustada para o mesmo valor da corrente máxima do motor (datasheet). A verificação das correntes nas bobinas do motor é realizada através da medição das tensões sobre os resistores RS1 e RS2 do módulo. Essas tensões são comparadas com a tensão de referência (V REF) do chip A4988.
Essa tensão de referência é ajustada através do trimpot (POT), marcado com uma seta vermelha. Use uma chave de fenda de relojoeiro para ajustar – gire com delicadeza.
Carregue o programa A4988_ajusteCorrente , pois o módulo deve ser configurado para o modo de Passo Completo (FULL) para esse ajuste de corrente. Não ligue a fonte de 12V ainda. Não é necessário ligá-la, para fazer esse ajuste. Conecte a ponta negativa (preta) do seu Voltímetro no pino GND do Módulo A4988. E a ponta positiva (vermelha) pode colocá-la sobre a parte superior metálica do potenciômetro. Muito cuidado para não provocar um curto-circuito. A tensão de Referência (do POT) deve ser ajustada de acordo com os cálculos 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 )
(não ultrapasse esse limite !)
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 :
Permite também que configure a frequência dos pulsos (passos) e o RPM, a quantidade de passos,o sentido de rotação, etc.
Carregue o Sketch na IDE Arduino. Compile-o e grave-o no Arduino. Abra o Monitor Serial (Console) com a velocidade de 9600 Bps. Pronto, agora pode ligar a fonte de 12V . Acompanhe os testes através da Console.
Faça as alterações necessárias no programa, se quiser fazer outro tipo de teste. Se o sentido da rotação não corresponde ao Monitor, inverta as ligações das bobinas. Onde esta ligada a bobina A, conecte a bobina B. E a bobina B conecte na ligação da A.
Arquivo do Sketch : A4988_teste.ino
// 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.
|
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!