Componente · Driver

Driver per motore passo-passo A4988

A4988 regola la corrente del motore passo-passo: imposta il limite con un multimetro, scopri la trappola delle resistenze di senso e valuta quando usare un TMC.

Che cos’è

Una scheda portante A4988 è una scheda piccola come un francobollo che si colloca tra un microcontrollore e un motore passo-passo bipolare. Le dai due segnali, un impulso e una direzione, e fa il resto: eccita le bobine nella sequenza giusta e, soprattutto, regola quanta corrente fluisce in esse.

Questo secondo compito è quello importante, ed è quello che le persone saltano. Un avvolgimento di un motore passo-passo è un induttore a bassa resistenza, tipicamente da 2 a 4 ohm. Colleghi 24 V a 2.8 Ω e la legge di Ohm dà 8.6 A, che distrugge in pochi secondi un motore da 1.7 A. A4988 lo evita attivando e disattivando l’alimentazione decine di migliaia di volte al secondo e mantenendo la corrente media al valore impostato.

Quindi la scheda ha esattamente una regolazione: un trimmer che imposta il limite di corrente. Se è corretta, il driver è invisibile. Se è sbagliata, hai un motore debole che perde passi oppure uno caldo che si rovina.

Una scheda portante A4988 disegnata dall'alto con otto pad dorati su ciascun lato. La colonna sinistra di pad riporta ENABLE, MS1, MS2, MS3, RESET, SLEEP, STEP e DIR, con STEP e DIR evidenziati. La colonna destra riporta VMOT, GND, 2B, 2A, 1A, 1B, VDD e GND, con VMOT evidenziato in rosso. In alto, un potenziometro trimmer è indicato come trimmer VREF da sondare con un multimetro e un dissipatore a alette copre il chip del driver. In basso, due piccole resistenze di sensore sono evidenziate come R100 = 0.1 ohm oppure R050 = 0.05 ohm, con un avviso di leggere la propria prima di calcolare qualsiasi cosa.
Sedici pad, un trimmer, due minuscole resistenze che cambiano il calcolo. STEP e DIR sono gli unici pin che lo sketch tocca durante l'esecuzione. Scarica SVG

Piedinatura

Pin Direzione Funzione
VMOT Ingresso di alimentazione Alimentazione motore 8–35 V. Richiede 100 µF ai suoi capi, vicino.
GND (lato motore) Alimentazione Ritorno ad alta corrente
VDD Ingresso di alimentazione Alimentazione logica 3–5.5 V, pochi mA
GND (lato logica) Alimentazione Deve avere la massa in comune con l’alimentazione del motore
1A, 1B Uscita Una bobina del motore
2A, 2B Uscita L’altra bobina del motore
STEP Ingresso Un fronte di salita = un micro-passo
DIR Ingresso Alto o basso seleziona la direzione
ENABLE Ingresso Attivo a livello basso. Collega a massa per eccitare.
RESET Ingresso Deve essere alto. Collegalo a SLEEP.
SLEEP Ingresso Deve essere alto perché il driver sia attivo
MS1, MS2, MS3 Ingresso Risoluzione del micro-passo; portati internamente a massa

Due pin spiegano la maggior parte dei report «non fa nulla»: ENABLE lasciato flottante o alto (è attivo a livello basso, quindi deve essere portato verso massa) e RESET lasciato flottante (deve essere alto, motivo per cui ogni guida al cablaggio dice di collegare RESET a SLEEP).

Cablaggio ad 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

Requisiti non negoziabili:

  • 100 µF elettrolitico tra VMOT e GND, fisicamente vicino alla scheda. È la causa più comune della morte di una scheda all’accensione.
  • Massa in comune tra Arduino e alimentazione del motore. Senza di essa il segnale STEP non ha riferimento e il driver vede rumore.
  • Non scollegare mai il motore mentre è alimentato. Un’interruzione di una bobina eccitata produce un picco senza destinazione.
  • L’accoppiamento delle bobine conta; la polarità all’interno di una coppia no. Se il motore ronzza senza girare, le coppie sono sbagliate. Se gira nel verso opposto, scambia due fili di una coppia.

Impostazione del limite di corrente: i numeri

Vref = I_phase × R_sense × 8

Misura Vref tra la vite metallica del trimmer e un pin di massa, con VMOT alimentato e il motore scollegato. Punta al 70–85% della corrente nominale del motore: l’ultimo quinto aggiunge pochissima coppia e molto calore.

Corrente obiettivo 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

Leggi la marcatura sulle due resistenze SMD nere vicino al bordo inferiore prima di calcolare. Impostare 1.2 V su una scheda R050 chiede 3 A attraverso un motore nominale da 1.7 A.

Usa un cacciavite ceramico. Uno metallico che collega il trimmer a qualcos’altro su una scheda alimentata è un modo ordinario di distruggere un driver.

Quello che stai impostando fisicamente è la coppia di picco che il motore può produrre, il T_peak nella legge del seno che governa tutto ciò che fa un motore passo-passo. Troppo bassa e il rotore ritarda ulteriormente rispetto allo stesso carico e scivola prima; troppo alta e ottieni calore inutile.

Micro-passi

MS1 MS2 MS3 Risoluzione Passi/giro
low low low Passo intero 200
high low low Mezzo passo 400
low high low Quarto di passo 800
high high low Ottavo di passo 1600
high high high Sedicesimo di passo 3200

Tutti e tre a livello alto è la scelta normale. Vale la pena chiarire il perché: i micro-passi non rendono la macchina più precisa sotto carico; l’errore causato dal carico non cambia con la finezza della divisione del passo. Evita invece che il rotore risuoni a ogni passo: è la differenza fra una macchina che urla e una che ronzia, e fra una superficie con ondulazioni di passo visibili e una senza.

Il costo è la frequenza degli impulsi. A 1/16 su un asse da 80 passi/mm, 100 mm/s richiedono 8 000 impulsi al secondo. Un Arduino Uno che genera i passi manipolando direttamente i bit esaurisce la capacità intorno ai 10 000–15 000 al secondo, un limite reale per un asse a vite senza fine a 400 passi/mm.

Corrente, calore e budget di alimentazione

La dissipazione propria dell’A4988 è modesta: il problema è la densità termica, non il totale in watt. Circa 0.5 W per fase a 1 A in un contenitore con quasi nessun rame su cui diffonderlo. I limiti pratici:

Raffreddamento Corrente continua sicura
Chip nudo, aria ferma ~1.0 A
Dissipatore autoadesivo ~1.2 A
Dissipatore più aria in movimento ~1.5 A
Qualsiasi valore superiore Usa un DRV8825 o un TMC2209

La protezione termica non si annuncia. Il driver si ferma, il motore si ferma a metà movimento, il driver si raffredda e riparte, e ciò che osservi è un asse che perde apparentemente a caso un tratto di posizione. Un asse che fallisce più spesso verso la fine di un lavoro lungo, o in una stanza calda, è un problema termico finché non viene dimostrato il contrario.

Sul lato dell’alimentazione, ricorda che il chopper si comporta come un convertitore buck: la corrente prelevata da un’alimentazione a 24 V è ben inferiore alla corrente di fase, quindi dimensiona in base alla potenza, non sommando le correnti di fase. Ogni motore con avvolgimenti da 2.8 Ω e limite di 1.2 A dissipa circa 8 W, e lo fa ogni volta che è eccitato, anche da fermo. Vedi il budget di alimentazione del robot.

Codice funzionale minimo

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);
}

Ottimo per un test sul banco, sbagliato per una macchina: la frequenza dei passi sale direttamente al massimo e, sopra la velocità di richiamo del motore, produce un ronzio senza movimento. Usa AccelStepper o il tuo profilo di movimento per qualsiasi cosa che debba arrivare da qualche parte. Puoi osservare esattamente che cosa fa al rotore quel comando senza rampa nel simulatore di motori passo-passo.

Quale corrente impostare davvero

La corrente nominale sull’etichetta del motore presuppone le condizioni di raffreddamento di un banco di prova: bloccato su una grande piastra di alluminio, in aria ferma a 25 °C. La tua macchina è una staffa stampata in una stanza calda.

Una regola operativa, con il ragionamento e non soltanto il numero:

Situazione Imposta il limite a Perché
Molto margine di coppia, serve silenzio 60–70% del valore nominale La coppia diminuisce linearmente, il calore con il quadrato
Macchina normale 70–85% del valore nominale La risposta abituale
Effettivamente limitata dalla coppia 90–100% del valore nominale Solo con dissipatore e flusso d’aria
Sopra il valore nominale Mai Non stai comprando coppia, solo calore

Il motivo per cui l’estremo inferiore costa meno di quanto sembra è nella seconda colonna. La coppia è proporzionale alla corrente, ma il calore è proporzionale al quadrato della corrente. Passare da 1.7 A a 1.2 A sacrifica il 29% della coppia ed elimina metà del calore:

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 il calcolo di dimensionamento dice che stai usando il 12% della coppia disponibile, il 29% cui hai rinunciato non stava facendo nulla.

De-eccitazione e il pin che quasi tutte le costruzioni ignorano

ENABLE esiste perché un motore passo-passo consuma la propria corrente nominale anche da perfettamente fermo. A differenza di ogni altro motore che un principiante incontra, questo comporta conseguenze:

// 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 usarlo:

  • Tra un lavoro e l’altro sugli assi X e Y. Un plotter o un portale laser non ha motivo di mantenere la posizione mentre è inattivo, e 16 W di calore in una struttura stampata per un’ora sono sufficienti.
  • Mai su un asse Z che sostiene un peso, a meno che il meccanismo non sia autorecante. Una vite senza fine T8 non consente il movimento in senso inverso, quindi la de-eccitazione è sicura. Un asse Z a cinghia cade appena interrompi la corrente.
  • Mai a metà movimento. Il rotore continua a girare, il campo no, e hai perso la posizione senza sapere di quanto. Fermati, poi disabilita.

La particolarità che colpisce è che dopo la de-eccitazione il rotore si assesta sul dente di riposo più vicino, la posizione magnetica che ha senza alcuna corrente, che può essere fino a un passo intero di distanza da dove veniva trattenuto. Su un asse a cinghia da 80 passi/mm sono 0.2 mm di movimento non annunciato, quindi o esegui di nuovo l’azzeramento dopo ogni disabilitazione oppure accetta che disabilitazione a riposo e accuratezza sub-decimale non convivono.

SLEEP è la versione più profonda: spegne anche il regolatore interno, assorbendo microampere anziché milliampere, ma richiede circa 1 ms per svegliarsi e ripristina la posizione interna del driver rispetto al micro-passo di riferimento. Quest’ultima parte è la trappola: risvegliarsi da SLEEP può spostare il motore fino a un passo intero. Per quasi ogni macchina hobbistica vuoi ENABLE e SLEEP è il pin che porti a livello alto con un ponticello e dimentichi.

Risoluzione dei problemi

Sintomo Causa Soluzione
Non succede assolutamente nulla ENABLE alto oppure RESET flottante Collega ENABLE a massa; collega RESET a SLEEP
Il motore vibra ma non ruota Coppie di bobine collegate in croce Ricoppiale misurando la resistenza
La scheda è morta all’accensione Nessun condensatore di massa su VMOT 100 µF elettrolitico, vicino ai pin
Si ferma a metà movimento e riparte dopo Protezione termica Abbassa Vref; aggiungi dissipatore e flusso d’aria
Debole, salta sotto carico leggero Vref troppo bassa Rimisura; controlla la marcatura della resistenza di sensore
Il motore urla ed è rovente Vref troppo alta Ricalcola: hai usato la R_sense giusta?
Perde passi solo ad alta velocità Tensione di alimentazione troppo bassa Alza VMOT; la corrente non aiuta
Perde passi solo in accelerazione Rampa troppo aggressiva Riduci l’accelerazione oppure alza Vref
Molto rumoroso a ogni passo Passo intero: pin MS flottanti Collega MS1–MS3 a livello alto
Funziona sul banco, non nella struttura Il cavo del finecorsa o il cavo STEP che raccolgono rumore Passa i cavi di segnale lontano da quelli dei motori

A4988 o le alternative?

Driver Corrente Micro-passo Rumore Sceglilo quando
A4988 1 A / 1.5 A raffreddato 1/16 Udibile È economico, diffuso e ben documentato
DRV8825 1.5 A / 2.2 A raffreddato 1/32 Udibile Ti serve più corrente o passi più fini
TMC2208 ~1.2 A 1/256 Quasi silenzioso Il rumore è importante
TMC2209 ~1.7 A 1/256 Quasi silenzioso Il rumore è importante, più il ritorno a zero senza sensore
L298N 2 A — — Motori DC. Nessuna regolazione della corrente.
TB6612FNG 1.2 A — — Motori DC, in modo efficiente

Le righe L298N e TB6612FNG ci sono perché entrambe le schede tecniche menzionano i motori passo-passo e entrambe tecnicamente riescono a girarne uno. Nessuna regola la corrente, quindi ottieni una frazione della coppia e molto calore sprecato. Sono driver per motori DC; usali per pilotare ruote.

I driver TMC valgono i soldi in più appena la macchina vive in un luogo in cui puoi sentirla. Stesso compito, forma d’onda di corrente più uniforme e una stampante che li usa produce il rumore della ventola anziché quello del motore.

Dove viene usato

Questo driver alimenta entrambi gli assi della costruzione del plotter a penna e configurarlo correttamente è un punto di controllo nel percorso di apprendimento sul movimento di precisione. Il cablaggio completo e la procedura per Vref illustrano ogni passaggio.

Esplora il grafo

Usato in queste costruzioni

Progetti, percorsi di apprendimento e simulatori che includono Driver per motore passo-passo A4988.

Confronto

Alternative

Domande

FAQ su Driver per motore passo-passo A4988

Come calcolo Vref per un A4988?

Vref è uguale alla corrente di fase desiderata, moltiplicata per il valore della resistenza di sensore, moltiplicato per otto. Per un obiettivo di 1.2 A su una scheda con resistenze da 0.1 ohm sono 1.2 × 0.1 × 8 = 0.96 V, misurati tra il cursore del trimmer e massa con la scheda alimentata su VMOT e il motore scollegato. Il dettaglio fondamentale è la resistenza di sensore: le schede portanti arrivano con resistenze da 0.1 ohm marcate R100 oppure da 0.05 ohm marcate R050, e usare quella sbagliata fa passare esattamente il doppio della corrente nel motore.

Perché il mio A4988 si scalda così tanto da spegnersi?

Quasi sempre il limite di corrente è impostato troppo in alto. Un A4988 nudo gestisce circa 1 A in modo continuo; con un dissipatore e aria in movimento arriva circa a 1.5 A. Oltre, la protezione termica interviene, il motore si ferma a metà movimento e poi riparte quando si raffredda: sembra una perdita casuale di passi. Rimisura Vref rispetto alla resistenza di sensore che hai davvero, monta il dissipatore e puntagli un ventilatore. Se ti servono davvero più di 1.5 A, A4988 è il componente sbagliato.

Qual è la differenza tra A4988 e DRV8825?

DRV8825 gestisce più corrente (circa 1.5 A nudo, 2.2 A raffreddato), arriva a micro-passi 1/32 anziché 1/16 e accetta una tensione motore più alta, 45 V. È compatibile pin per pin, quindi si inserisce nello stesso zoccolo, ma la formula per Vref è diversa: Vref è uguale alla corrente per 0.5 e il trimmer ruota nel verso opposto. Sostituirlo senza rileggere la formula è un modo comune di rovinare un motore.

Serve davvero il condensatore tra VMOT e massa?

Sì. Un elettrolitico da 100 µF tra VMOT e massa, fisicamente vicino alla scheda, è necessario anziché soltanto consigliato. Il chopper assorbe corrente a impulsi netti e, senza una capacità di massa nelle vicinanze, l'induttanza dei cavi dell'alimentatore trasforma quegli impulsi in picchi di tensione che superano il limite di 35 V del chip. Le schede che muoiono all'istante dell'accensione di solito muoiono per questo.

Che cosa fanno MS1, MS2 e MS3 se li lascio scollegati?

Hanno resistenze interne di pull-down, quindi lasciarle flottanti seleziona il passo intero: 200 passi per giro e un motore che risuona in modo udibile a ogni passo. Collega tutti e tre a livello alto per il passo 1/16, usato dalla maggior parte delle costruzioni. Non rende la macchina più precisa sotto carico, ma elimina il risuonamento, la rende più silenziosa e migliora la finitura superficiale. Il costo è sedici volte più impulsi per millimetro da emettere al microcontrollore.

Può un A4988 pilotare un motore DC o un servomotore?

No. È un driver per motore passo-passo bipolare: prevede due bobine e le pilota con una specifica sequenza di corrente. Un motore DC richiede un ponte H come L298N o TB6612FNG; un servomotore hobbistico richiede un segnale PWM a 50 Hz e non serve alcun driver. L'interfaccia STEP e DIR dell'A4988 non ha alcun significato per nessuno dei due.

Per approfondire

Fonti