Componente · Driver
Driver de motor de passo A4988
A placa adaptadora que regula a corrente do motor de passo. Como definir o limite com um multímetro, a armadilha do resistor de detecção e quando usar um TMC.
O que é
A placa adaptadora A4988 tem o tamanho de um selo postal e fica entre um microcontrolador e um motor de passo bipolar. Você fornece dois sinais—um pulso e uma direção—e ela cuida do resto: energizar os enrolamentos na sequência correta e, o que é essencial, regular a quantidade de corrente que entra neles.
Esse segundo trabalho é o que importa e também é o que as pessoas ignoram. Um enrolamento de motor de passo é um indutor de baixa resistência, normalmente de 2 a 4 Ω. Aplicar 24 V a 2,8 Ω resulta, pela lei de Ohm, em 8,6 A, que destruirá um motor especificado para 1,7 A em segundos. O A4988 evita isso comutando a alimentação dezenas de milhares de vezes por segundo e mantendo a corrente média no valor definido.
Portanto, a placa tem exatamente um ajuste: um potenciômetro que define o limite de corrente. Se o ajuste estiver correto, o driver fica invisível. Se estiver errado, você terá um motor fraco que perde passos ou um motor que aquece e queima.
Pinagem
| Pino | Direção | O que faz |
|---|---|---|
| VMOT | Entrada de alimentação | Alimentação dos motores de 8–35 V. Precisa de 100 µF em paralelo, por perto. |
| GND (lado do motor) | Alimentação | Retorno de corrente elevada |
| VDD | Entrada de alimentação | Alimentação lógica de 3–5,5 V, alguns mA |
| GND (lado da lógica) | Alimentação | Deve compartilhar a massa com a alimentação dos motores |
| 1A, 1B | Saída | Um enrolamento do motor |
| 2A, 2B | Saída | O outro enrolamento do motor |
| STEP | Entrada | Um flanco de subida = um micropasso |
| DIR | Entrada | HIGH ou LOW seleciona a direção |
| ENABLE | Entrada | Ativo em nível baixo. Conecte à massa para energizar. |
| RESET | Entrada | Deve estar em HIGH. Ligue-o por um jumper ao SLEEP. |
| SLEEP | Entrada | Deve estar em HIGH para o driver funcionar |
| MS1, MS2, MS3 | Entrada | Resolução de micropasso; com pull-down interno |
Dois pinos explicam a maioria dos relatos de “não faz nada”: ENABLE flutuante ou em HIGH (ele é ativo em nível baixo, portanto precisa ser puxado para baixo) e RESET flutuante (precisa estar em HIGH, razão pela qual todo guia de conexão manda ligar RESET a SLEEP por um jumper).
Conectando a um Arduino
Arduino 5V ──── VDD
Arduino GND ──── GND (logic) ──┬── GND (motor)
└── PSU −
PSU + (12–24 V) ──── VMOT ──┬── 100 µF electrolytic ──┘
Pin 3 ──── STEP RESET ──┬── SLEEP
Pin 4 ──── DIR
Pin 5 ──── ENABLE MS1, MS2, MS3 ──── 5 V (1/16 stepping)
Motor coil A ──── 1A, 1B
Motor coil B ──── 2A, 2B
Inegociáveis:
- 100 µF eletrolítico entre VMOT e GND, fisicamente próximo à placa. Esta é a causa mais comum de uma placa que morre na energização.
- Massa comum entre o Arduino e a alimentação dos motores. Sem ela, o sinal STEP não tem referência e o driver vê ruído.
- Nunca desconecte o motor com a placa ligada. Um enrolamento energizado interrompido produz um pico sem destino.
- O pareamento dos enrolamentos importa; a polaridade dentro de um par não. Se o motor zunar sem girar, os pares estão errados. Se girar ao contrário, troque dois fios de um par.
Definindo o limite de corrente — os números
Vref = I_phase × R_sense × 8
Meça o Vref entre o parafuso metálico do potenciômetro e um pino de massa, com VMOT alimentado e o motor desconectado. Ajuste para 70–85% da corrente nominal do motor: o último quinto de corrente acrescenta pouco torque e muito calor.
| Corrente desejada | R_sense = 0,1 Ω (R100) |
R_sense = 0,05 Ω (R050) |
|---|---|---|
| 0,6 A | 0,48 V | 0,24 V |
| 1,0 A | 0,80 V | 0,40 V |
| 1,2 A | 0,96 V | 0,48 V |
| 1,5 A | 1,20 V | 0,60 V |
| 1,7 A | 1,36 V | 0,68 V |
Leia a marcação dos dois resistores SMD pretos próximos à borda inferior antes de calcular. Definir
1,2 V em uma placa R050 faz o driver solicitar 3 A a um motor especificado para 1,7 A.
Use uma chave de fenda cerâmica. Uma metálica que faz ponte entre o potenciômetro e outro ponto da placa energizada é uma maneira rotineira de destruir um driver.
Na prática, você está definindo o torque de pico que o motor pode produzir—o T_peak na
lei do seno que governa tudo o que um motor de passo faz.
Se for baixo demais, o rotor fica mais defasado para a mesma carga e patina antes; se for alto
demais, você obtém calor desnecessário.
Micropassos
| MS1 | MS2 | MS3 | Resolução | Passos/volta |
|---|---|---|---|---|
| baixo | baixo | baixo | Passo completo | 200 |
| alto | baixo | baixo | Meio passo | 400 |
| baixo | alto | baixo | Quarto de passo | 800 |
| alto | alto | baixo | Oitavo de passo | 1600 |
| alto | alto | alto | Dezesseis avos de passo | 3200 |
Os três em HIGH são a escolha normal. Vale deixar claro o motivo: micropassos não tornam a máquina mais precisa sob carga—o erro causado pela carga não muda com a divisão do passo. O que eles fazem é impedir que o rotor ressoe a cada passo, a diferença entre uma máquina que zumbe de forma aguda e outra que zumba, e entre uma superfície com ondulação visível dos passos e outra sem.
O custo é a taxa de pulsos. Com 1/16 em um eixo de 80 passos/mm, 100 mm/s exigem 8 000 pulsos por segundo. Um Arduino Uno gerando os pulsos por software esgota a capacidade em torno de 10 000–15 000 por segundo, o que é um limite real para um eixo de fuso a 400 passos/mm.
Corrente, calor e orçamento de potência
O próprio A4988 dissipa pouca potência—o problema é a densidade térmica, não a potência total. Aproximadamente 0,5 W por fase a 1 A em um encapsulamento com quase nenhum cobre para conduzir o calor. Na prática, os limites são:
| Resfriamento | Corrente contínua segura |
|---|---|
| Chip sem dissipador, ar parado | ~1,0 A |
| Dissipador colado | ~1,2 A |
| Dissipador mais ar em movimento | ~1,5 A |
| Qualquer valor acima disso | Use um DRV8825 ou um TMC2209 |
O desligamento térmico não se anuncia. O driver para, o motor para no meio do movimento, o driver esfria e reinicia, e o que se observa é um eixo que perde aleatoriamente um trecho da posição. Um eixo que falha com mais frequência no fim de um trabalho longo, ou em uma sala quente, é um problema térmico, a menos que se prove o contrário.
Na alimentação, lembre-se de que o circuito de comutação se comporta como um conversor abaixador: a corrente consumida de uma fonte de 24 V fica bem abaixo da corrente de fase; portanto, dimensione o conjunto pela potência, não somando as correntes de fase. Cada motor com limite de 1,2 A em enrolamentos de 2,8 Ω dissipa cerca de 8 W, e faz isso sempre que está energizado—inclusive parado. Veja o orçamento de potência do robô.
Código mínimo funcional
const int STEP_PIN = 3, DIR_PIN = 4, EN_PIN = 5;
void setup() {
pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(EN_PIN, OUTPUT);
digitalWrite(EN_PIN, LOW); // active low — energise the coils
digitalWrite(DIR_PIN, HIGH);
}
void loop() {
for (int i = 0; i < 3200; i++) { // one revolution at 1/16
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(2); // datasheet minimum is 1 us
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(300); // this delay is the speed
}
delay(1000);
}
Bom para um teste na bancada, errado para uma máquina: a taxa de passos salta diretamente para o máximo e, acima da frequência de partida do motor, produz zumbido sem movimento. Use AccelStepper ou seu próprio perfil de movimento para qualquer movimento que precise chegar a algum ponto. Você pode ver exatamente o que esse comando sem rampa faz no rotor no simulador de motores de passo.
Que corrente definir de fato
A corrente nominal na etiqueta de um motor pressupõe as condições de resfriamento de um banco de testes—fixado a uma grande placa de alumínio, em ar parado a 25 °C. Sua montagem é um suporte impresso em uma sala morna.
Uma regra prática, com o raciocínio e não apenas o número:
| Situação | Defina o limite em | Por quê |
|---|---|---|
| Muita margem de torque e silêncio desejado | 60–70% do nominal | O torque cai linearmente; o calor cai com o quadrado da corrente |
| Máquina normal | 70–85% do nominal | A resposta usual |
| Realmente limitada por torque | 90–100% do nominal | Somente com dissipador e ventilação |
| Acima da nominal | Nunca | Você não está comprando torque, apenas calor |
O motivo para o limite inferior custar menos do que parece está na segunda coluna. O torque é proporcional à corrente, mas o calor é proporcional ao quadrado da corrente. Reduzir de 1,7 A para 1,2 A reduz o torque em 29% e elimina metade do calor:
1.7 A: P = 2 × 1.7² × 2.8 = 16.2 W per motor
1.2 A: P = 2 × 1.2² × 2.8 = 8.1 W per motor
Se a aritmética de dimensionamento diz que você está usando 12% do torque disponível, os 29% de torque que você reduziu nunca contribuíam para nada.
Desenergizando e o pino que a maioria das montagens ignora
ENABLE existe porque um motor de passo consome toda a corrente nominal mesmo parado. Isso é diferente de todo outro motor que um iniciante conhece, e tem consequências:
// Two energised NEMA 17s at 1.2 A dissipate ~16 W doing nothing at all.
digitalWrite(EN_PIN, HIGH); // active low, so HIGH = coils off
Quando usar:
- Entre trabalhos nos eixos X e Y. Um plotter ou pórtico de laser não tem motivo para manter a posição enquanto está ocioso, e 16 W de calor em uma estrutura impressa durante uma hora são suficientes para importar.
- Nunca em um eixo Z que sustenta peso, a menos que o mecanismo seja autobloqueante. Um fuso T8 não gira sob a ação da carga, portanto desenergizar é seguro. Um eixo Z com correia cairá no instante em que a corrente for cortada.
- Nunca no meio de um movimento. O rotor continua girando, o campo não; você descartou a posição sem saber de quanto. Pare e só então desabilite.
A surpresa é que, depois de desenergizar, o rotor se acomoda no detente mais próximo—a posição de repouso magnético que ele tem sem corrente alguma—que pode estar até um passo completo de onde estava sendo mantido. Em um eixo de correia a 80 passos/mm, isso representa 0,2 mm de movimento não anunciado; portanto, redefina a posição inicial após cada desenergização ou aceite que desenergização ociosa e precisão abaixo de décimos de milímetro não combinam.
SLEEP é uma opção ainda mais completa: desliga também o regulador interno, consumindo microamperes em vez de miliamperes, mas leva cerca de 1 ms para acordar e redefine a posição interna de passo do driver para o micropasso inicial. Esse último detalhe é a armadilha—acordar de SLEEP pode deslocar o motor até um passo completo. Para quase toda máquina de iniciação, ENABLE é o pino que você quer e SLEEP é o pino que você mantém em HIGH e do qual se esquece.
Solução de problemas
| Sintoma | Causa | Solução |
|---|---|---|
| Nada acontece | ENABLE em HIGH ou RESET flutuante | Conecte ENABLE à massa; faça um jumper de RESET para SLEEP |
| O motor vibra, mas não gira | Pares de enrolamento conectados entre si | Refaça o pareamento com um multímetro no modo de resistência |
| A placa morreu na inicialização | Sem capacitor de reservatório em VMOT | Capacitor eletrolítico de 100 µF, próximo aos pinos |
| Para no meio do movimento e reinicia depois | Desligamento térmico | Reduza o Vref; adicione dissipador e ventilação |
| Fraco e perde passos sob carga leve | Vref baixo demais | Meça novamente; verifique a marcação do resistor de detecção |
| O motor zumbe e fica muito quente | Vref alto demais | Recalcule — você usou o R_sense correto? |
| Perde passos apenas em alta velocidade | Tensão de alimentação baixa demais | Aumente VMOT; corrente não ajudará |
| Perde passos apenas na aceleração | Rampa muito agressiva | Reduza a aceleração ou aumente o Vref |
| Faz muito barulho a cada passo | Passo completo — pinos MS flutuantes | Conecte MS1–MS3 em HIGH |
| Funciona na bancada, mas falha na estrutura | Fim de curso ou fio STEP captando ruído | Afaste os fios de sinal dos cabos dos motores |
A4988 ou as alternativas?
| Driver de motor | Corrente | Micropasso | Ruído | Escolha quando |
|---|---|---|---|---|
| A4988 | 1 A / 1,5 A resfriado | 1/16 | Audível | Barato, onipresente e bem documentado |
| DRV8825 | 1,5 A / 2,2 A resfriado | 1/32 | Audível | Precisa de mais corrente ou passos mais finos |
| TMC2208 | ~1,2 A | 1/256 | Quase silencioso | O ruído importa |
| TMC2209 | ~1,7 A | 1/256 | Quase silencioso | O ruído importa e você quer posicionamento inicial sem sensor |
| L298N | 2 A | — | — | Motores CC. Sem regulação de corrente. |
| TB6612FNG | 1,2 A | — | — | Motores CC, com eficiência |
As linhas do L298N e do TB6612FNG estão aí porque ambas as folhas de dados mencionam motores de passo, e ambos realmente conseguem girar um motor de passo. Nenhum regula corrente; portanto, você obtém uma fração do torque e muito calor desperdiçado. São drivers de motores CC; use-os para acionar rodas.
Os drivers TMC valem o dinheiro extra assim que a máquina estiver em um lugar onde você possa ouvi-la. Mesma função, forma de onda de corrente mais suave, e uma impressora equipada com eles faz ruído de ventilador em vez de ruído de motor.
Onde é usado
Este driver alimenta os dois eixos da montagem do plotter de caneta, e configurá-lo corretamente é um ponto de verificação no roteiro de movimento de precisão. O guia completo de conexão e Vref cobre o procedimento passo a passo.
Explore o grafo
Usado nestas montagens
Projetos, caminhos de aprendizagem e simuladores que incluem Driver de motor de passo A4988.
Comparar
Alternativas
Perguntas
Perguntas frequentes sobre Driver de motor de passo A4988
Como calculo o Vref de um A4988?
O Vref é igual à corrente de fase desejada, multiplicada pelo valor do resistor de detecção, multiplicada por oito. Para uma corrente-alvo de 1,2 A em uma placa com resistores de 0,1 Ω, isso dá 1.2 × 0.1 × 8 = 0.96 V, medido entre o cursor do potenciômetro e a massa com a placa alimentada em VMOT e o motor desconectado. O detalhe crítico é o resistor: as placas vêm com 0,1 Ω identificado como R100 ou 0,05 Ω identificado como R050, e usar o valor errado faz exatamente o dobro da corrente passar pelo motor.
Por que meu A4988 fica tão quente que desliga?
Quase sempre o limite de corrente está alto demais. Um A4988 sem dissipador suporta cerca de 1 A continuamente; com dissipador e ar em movimento, chega a cerca de 1,5 A. Acima disso, o desligamento térmico é acionado, o motor para no meio do movimento e depois reinicia quando resfria—o que parece perda aleatória de passos. Meça novamente o Vref de acordo com o resistor que você realmente tem, instale o dissipador e direcione um ventilador para ele. Se precisar de fato de mais de 1,5 A, o A4988 não é a peça certa.
Qual é a diferença entre um A4988 e um DRV8825?
O DRV8825 suporta mais corrente (cerca de 1,5 A sem dissipador e 2,2 A com resfriamento), vai até 1/32 de micropasso em vez de 1/16 e aceita uma tensão de motor maior, de 45 V. Ele é compatível com os pinos, portanto encaixa no mesmo soquete—mas sua fórmula de Vref é diferente, Vref é igual à corrente vezes 0,5, e o potenciômetro gira no sentido oposto. Trocar um pelo outro sem reler a fórmula é uma maneira comum de queimar um motor.
Preciso mesmo do capacitor em paralelo com VMOT?
Sim. Um capacitor eletrolítico de 100 µF entre VMOT e a massa, fisicamente próximo à placa, é obrigatório, não apenas recomendado. O circuito de comutação consome corrente em rajadas agudas e, sem capacitância de reservatório por perto, a indutância dos fios da fonte transforma essas rajadas em picos de tensão que excedem o limite de 35 V do chip. Placas que morrem no instante em que são ligadas normalmente morrem por causa disso.
O que MS1, MS2 e MS3 fazem se eu os deixar desconectados?
Eles têm pull-downs internos; portanto, deixá-los flutuantes seleciona passo completo—200 passos por volta e um motor que emite um ressoamento audível a cada passo. Conecte os três em nível alto para 1/16 de passo, que é o que a maioria das montagens usa. Isso não torna a máquina mais precisa sob carga, mas elimina a ressonância, deixando-a mais silenciosa e melhorando o acabamento da superfície. O custo é dezesseis vezes mais pulsos por milímetro para o microcontrolador emitir.
Um A4988 pode acionar um motor CC ou um servomotor?
Não. É um driver de motor de passo bipolar: espera dois enrolamentos e os aciona com uma sequência específica de corrente. Um motor CC precisa de uma ponte H como a L298N ou a TB6612FNG; um servomotor de iniciação precisa de um sinal PWM de 50 Hz e de nenhum driver. A interface STEP e DIR do A4988 não se aplica a nenhum dos dois.
Leitura complementar