Composant · Pilote
A4988 Stepper Driver
La carte porteuse qui régule le courant dans une bobine de pas-à-pas. Limite au multimètre, le piège des résistances de mesure, et quand passer à un TMC.
Présentation
Une carte A4988 est une carte grand comme un timbre-poste entre un microcontrôleur et un moteur pas-à-pas bipolaire. Vous lui donnez deux signaux — une impulsion et une direction — et elle gère tout le reste : alimenter les bobines dans le bon ordre, et surtout réguler le courant qui y entre.
Ce second travail est celui qui compte et celui que l’on saute. Un enroulement de pas-à-pas est une inductance de faible résistance, typiquement 2 à 4 ohms. Brancher 24 V sur 2,8 Ω donne selon la loi d’Ohm 8,6 A, ce qui détruit un moteur 1,7 A en quelques secondes. L’A4988 l’évite en hachant l’alimentation des dizaines de milliers de fois par seconde, maintenant le courant moyen à la valeur réglée.
La carte n’a donc qu’un seul réglage : un potentiomètre qui fixe la limite de courant. Bien réglé, le pilote est invisible. Mal réglé, vous avez soit un moteur faible qui perd des pas soit un moteur chaud qui cuit.
Brochage
| Broche | Sens | Rôle |
|---|---|---|
| VMOT | Alimentation | 8–35 V moteur. Exige 100 µF en parallèle, à proximité. |
| GND (côté moteur) | Alimentation | Retour fort courant |
| VDD | Alimentation | 3–5,5 V logique, quelques mA |
| GND (côté logique) | Alimentation | Doit partager la masse avec l’alimentation moteur |
| 1A, 1B | Sortie | Une bobine du moteur |
| 2A, 2B | Sortie | L’autre bobine du moteur |
| STEP | Entrée | Un front montant = un micro-pas |
| DIR | Entrée | Haut ou bas choisit la direction |
| ENABLE | Entrée | Actif au bas. À la masse pour alimenter. |
| RESET | Entrée | Doit être au haut. Pontez-le vers SLEEP. |
| SLEEP | Entrée | Doit être au haut pour que le pilote tourne |
| MS1, MS2, MS3 | Entrée | Résolution de micro-pas ; rappelées au bas en interne |
Deux broches expliquent la plupart des rapports « ça ne fait rien » : ENABLE laissée en l’air ou au haut (elle est active au bas, donc à tirer vers le bas), et RESET laissée en l’air (elle doit être au haut, d’où la consigne de ponter RESET vers SLEEP dans chaque guide).
Câblage vers un 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
Non-négociables :
- Électrolytique 100 µF entre VMOT et GND, physiquement proche de la carte. C’est la cause la plus fréquente d’une carte qui meurt à la mise sous tension.
- Masse commune entre l’Arduino et l’alimentation moteur. Sans elle, le signal STEP n’a pas de référence et le pilote ne voit que du bruit.
- Ne débranchez jamais le moteur sous tension. Une bobine alimentée interrompue produit un pic sans nulle part où aller.
- L’appariement des bobines compte ; la polarité dans une paire non. Si le moteur vibre sans tourner, les paires sont fausses. S’il tourne à l’envers, inversez deux fils d’une paire.
Régler la limite de courant — les nombres
Vref = I_phase × R_sense × 8
Mesurez Vref entre la vis métallique du potentiomètre et une broche de masse, avec VMOT alimenté et le moteur déconnecté. Visez 70–85 % du courant nominal du moteur : le dernier cinquième apporte très peu de couple et beaucoup de chaleur.
| Courant cible | R_mesure = 0,1 Ω (R100) |
R_mesure = 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 |
Lisez le marquage sur les deux résistances CMS noires près du bord inférieur avant de calculer. Régler 1,2 V sur une carte R050 demande 3 A dans un moteur prévu pour 1,7 A.
Utilisez un tournevis céramique. Un tournevis métallique qui ponte le potentiomètre vers autre chose sur une carte sous tension est une façon classique de détruire un pilote.
Ce que vous réglez, physiquement, est le couple crête que le moteur peut produire — le T_peak dans la loi en sinus qui gouverne tout ce que fait un pas-à-pas. Trop bas et le rotor traîne davantage pour la même charge et décroche plus tôt ; trop haut et vous avez de la chaleur inutile.
Micro-pas
| MS1 | MS2 | MS3 | Résolution | Pas/tour |
|---|---|---|---|---|
| bas | bas | bas | Pas entier | 200 |
| haut | bas | bas | Demi | 400 |
| bas | haut | bas | Quart | 800 |
| haut | haut | bas | Huitième | 1600 |
| haut | haut | haut | Seizième | 3200 |
Les trois au haut est le choix normal. Il faut être clair sur le pourquoi : le micro-pas ne rend pas la machine plus précise en charge — l’erreur causée par une charge est inchangée quelle que soit la finesse du pas. Ce qu’il fait, c’est empêcher le rotor de résonner à chaque pas, ce qui fait la différence entre une machine qui hurle et une qui ronronne, et entre une surface à ondulation visible et une sans.
Le coût est la fréquence d’impulsions. En 1/16 sur un axe à 80 pas/mm, 100 mm/s exigent 8 000 impulsions par seconde. Un Arduino Uno générant les pas en logiciel s’essouffle vers 10 000–15 000 par seconde, ce qui est un vrai plafond sur un axe à vis à 400 pas/mm.
Courant, chaleur et budget d’alimentation
La dissipation propre de l’A4988 est modeste — le problème est la densité thermique, pas les watts totaux. Environ 0,5 W par phase à 1 A dans un boîtier sans presque aucun cuivre pour diffuser. Les limites en pratique :
| Refroidissement | Courant continu sûr |
|---|---|
| Puce nue, air calme | ~1,0 A |
| Radiateur collé | ~1,2 A |
| Radiateur plus air en mouvement | ~1,5 A |
| Au-delà | Utilisez un DRV8825 ou un TMC2209 |
La protection thermique ne s’annonce pas. Le pilote s’arrête, le moteur s’arrête en plein mouvement, le pilote refroidit et redémarre, et ce que vous observez est un axe qui perd « aléatoirement » un bout de position. Un axe qui échoue plus souvent en fin de long travail, ou dans une pièce chaude, est thermique jusqu’à preuve du contraire.
Côté alimentation, rappelez-vous que le hacheur se comporte comme un convertisseur abaisseur : le courant tiré d’une alimentation 24 V est bien inférieur au courant de phase, alors budgetez en puissance plutôt qu’en additionnant les courants de phase. Chaque moteur à une limite de 1,2 A sur des enroulements 2,8 Ω dissipe environ 8 W, et cela quand il est alimenté — y compris à l’arrêt. Voir le budget d’alimentation du robot.
Code minimal fonctionnel
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);
}
Bon pour un essai sur table, faux pour une machine : le rythme des pas passe directement à fond, ce qui au-delà du taux d’accrochage du moteur produit un bourdonnement sans mouvement. Utilisez AccelStepper ou votre propre profil de mouvement pour tout ce qui doit arriver quelque part. Vous pouvez voir exactement ce que cette commande non rampée fait au rotor dans le simulateur pas-à-pas.
Quel courant régler réellement
Le courant nominal sur l’étiquette d’un moteur suppose les conditions de refroidissement d’un banc d’essai — boulonné sur une grande plaque d’aluminium, dans de l’air calme à 25 °C. Votre machine est un support imprimé dans une pièce chaude.
Une règle pratique, avec le raisonnement plutôt que juste le nombre :
| Situation | Réglez la limite à | Pourquoi |
|---|---|---|
| Large marge de couple, silence voulu | 60–70 % du nominal | Le couple chute linéairement, la chaleur chute au carré |
| Machine normale | 70–85 % du nominal | La réponse habituelle |
| Vraiment limité en couple | 90–100 % du nominal | Seulement avec radiateur et ventilation |
| Au-delà du nominal | Jamais | Vous n’achetez pas du couple, seulement de la chaleur |
La raison pour laquelle le bas de gamme coûte moins cher qu’il n’y paraît est dans la seconde colonne. Le couple est proportionnel au courant, mais la chaleur est proportionnelle au courant au carré. Passer de 1,7 A à 1,2 A abandonne 29 % du couple et supprime la moitié de la chaleur :
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
Si le calcul de dimensionnement dit que vous utilisez 12 % du couple disponible, les 29 % abandonnés ne faisaient jamais rien.
Désalimenter, et la broche que la plupart des montages ignorent
ENABLE existe parce qu’un pas-à-pas brûle tout son courant réglé en restant parfaitement immobile. C’est le contraire de tout autre moteur rencontré par un débutant, et cela a des conséquences :
// 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
Quand l’utiliser :
- Entre les travaux sur X et Y. Un traceur ou un portique laser n’a aucune raison de tenir sa position au repos, et 16 W de chaleur dans un cadre imprimé pendant une heure comptent.
- Jamais sur un axe Z portant une charge, sauf si le mécanisme est autobloquant. Une vis trapézoïdale T8 ne reculera pas, donc couper est sûr. Un Z par courroie chutera dès que vous coupez le courant.
- Jamais en plein mouvement. Le rotor continue, le champ non, et vous avez jeté la position sans moyen de savoir de combien. Arrêtez, puis désactivez.
Le piège qui surprend : après coupure, le rotor se cale sur le détent le plus proche — la position de repos magnétique sans courant — qui peut être jusqu’à un pas entier de là où il était tenu. Sur un axe courroie à 80 pas/mm cela fait 0,2 mm de mouvement non annoncé, donc soit refaites la prise d’origine après chaque coupure, soit acceptez que coupure au repos et précision sub-dixième ne vont pas ensemble.
SLEEP est la version plus profonde : elle coupe aussi le régulateur interne, tirant des microampères au lieu des milliampères, mais il lui faut environ 1 ms pour se réveiller et elle réinitialise la position de micro-pas interne du pilote au micro-pas d’origine. Ce dernier point est le piège — sortir de SLEEP peut décaler le moteur jusqu’à un plein pas. Pour presque toute machine loisir, ENABLE est la broche voulue et SLEEP est celle à ponter au haut et oublier.
Dépannage
| Symptôme | Cause | Solution |
|---|---|---|
| Rien ne se passe du tout | ENABLE au haut, ou RESET en l’air | Attachez ENABLE au bas ; pontez RESET vers SLEEP |
| Le moteur vibre, ne tourne pas | Paires de bobines câblées croisées | Ré-appariez à l’ohmmètre |
| Carte morte à la mise sous tension | Pas de condensateur réservoir sur VMOT | Électrolytique 100 µF, proche des broches |
| S’arrête en plein mouvement, redémarre ensuite | Protection thermique | Baissez Vref ; ajoutez radiateur et ventilation |
| Faible, décroche sous légère charge | Vref trop bas | Mesurez de nouveau ; vérifiez le marquage des résistances de mesure |
| Moteur brûlant | Vref trop haut | Recalculez — avez-vous pris la bonne R_mesure ? |
| Pas manqués seulement à haute vitesse | Tension d’alimentation trop basse | Augmentez VMOT ; le courant n’aidera pas |
| Pas manqués seulement en accélération | Rampe trop agressive | Baissez l’accélération, ou augmentez Vref |
| Bruyant à chaque pas | Pas entier — broches MS en l’air | Attachez MS1–MS3 au haut |
| Marche sur table, échoue dans le cadre | Fil de fin de course ou STEP captant du bruit | Éloignez les fils de signal des câbles moteur |
A4988, ou les alternatives ?
| Pilote | Courant | Micro-pas | Bruit | Choisissez-le quand |
|---|---|---|---|---|
| A4988 | 1 A / 1,5 A refroidi | 1/16 | Audible | Bon marché, omniprésent, bien documenté |
| DRV8825 | 1,5 A / 2,2 A refroidi | 1/32 | Audible | Il faut plus de courant ou des pas plus fins |
| TMC2208 | ~1,2 A | 1/256 | Quasi silencieux | Le bruit compte |
| TMC2209 | ~1,7 A | 1/256 | Quasi silencieux | Le bruit compte, plus prise d’origine sans capteur |
| L298N | 2 A | — | — | Moteurs CC. Pas de régulation de courant. |
| TB6612FNG | 1,2 A | — | — | Moteurs CC, efficacement |
Les lignes L298N et TB6612FNG figurent parce que les deux fiches techniques mentionnent les pas-à-pas, et les deux en feront techniquement tourner un. Ni l’un ni l’autre ne régule le courant, donc une fraction du couple et beaucoup de chaleur perdue. Ce sont des pilotes de moteurs CC ; utilisez-les pour entraîner des roues.
Les pilotes TMC valent le surcoût dès que la machine vit quelque part où on peut l’entendre. Même travail, forme de courant plus douce, et une imprimante équipée fait du bruit de ventilateur au lieu du bruit moteur.
Où il est utilisé
Ce pilote entraîne les deux axes de la construction traceur, et bien le régler est une étape du parcours mouvement de précision. Le guide complet de câblage et Vref détaille la procédure pas à pas.
Explorer le graphe
Utilisé dans ces réalisations
Projets, parcours d'apprentissage et simulateurs qui intègrent le composant A4988 Stepper Driver.
Comparer
Alternatives
Questions
FAQ : A4988 Stepper Driver
Comment calculer Vref pour un A4988 ?
Vref égale le courant de phase voulu, fois la valeur des résistances de mesure, fois huit. Pour une cible de 1,2 A sur une carte à résistances 0,1 ohm, cela fait 1,2 × 0,1 × 8 = 0,96 V, mesuré entre le curseur du potentiomètre et la masse avec la carte alimentée en VMOT et le moteur déconnecté. Le détail critique est la résistance de mesure : les cartes sont livrées soit en 0,1 ohm marquées R100 soit en 0,05 ohm marquées R050, et se tromper double exactement le courant dans votre moteur.
Pourquoi mon A4988 chauffe au point de couper ?
Presque toujours la limite de courant est réglée trop haut. Un A4988 nu tient environ 1 A en continu ; avec radiateur et air en mouvement il gère autour de 1,5 A. Au-delà, sa protection thermique déclenche, le moteur s'arrête en plein mouvement, puis redémarre une fois refroidi — ce qui ressemble à des pertes de pas aléatoires. Mesurez de nouveau Vref avec la résistance de mesure réellement présente, collez le radiateur, et ventilez. S'il faut vraiment plus de 1,5 A, l'A4988 n'est pas la bonne pièce.
Quelle est la différence entre un A4988 et un DRV8825 ?
Le DRV8825 supporte plus de courant (environ 1,5 A nu, 2,2 A refroidi), va jusqu'au 1/32 de pas au lieu du 1/16, et accepte une tension moteur plus élevée à 45 V. Il est compatible broche à broche, donc il se monte dans le même support — mais sa formule Vref est différente, Vref égale courant fois 0,5, et son potentiomètre tourne dans le sens inverse. L'échanger sans relire la formule est une façon courante de détruire un moteur.
Faut-il vraiment le condensateur sur VMOT ?
Oui. Un électrolytique de 100 µF entre VMOT et la masse, physiquement proche de la carte, est exigé plutôt que recommandé. Le hacheur tire le courant par à-coups violents, et sans capacité réservoir proche, l'inductance de vos fils d'alimentation transforme ces à-coups en pics de tension qui dépassent la limite de 35 V de la puce. Les cartes qui meurent dès la mise sous tension en sont généralement mortes.
Que font MS1, MS2 et MS3 si on les laisse en l'air ?
Elles ont des rappels internes vers le bas, donc les laisser flottantes sélectionne le pas entier — 200 pas par tour et un moteur qui résonne à chaque pas. Attachez les trois au haut pour le 1/16 de pas, ce qu'utilisent la plupart des montages. Cela ne rend pas la machine plus précise en charge, mais cela stoppe la résonance, donc moins de bruit et un meilleur état de surface. Le coût est seize fois plus d'impulsions par millimètre à émettre pour votre microcontrôleur.
Un A4988 peut-il piloter un moteur CC ou un servomoteur ?
Non. C'est un pilote de pas-à-pas bipolaire : il attend deux bobines et les pilote avec une séquence de courant spécifique. Un moteur CC exige un pont en H comme le L298N ou le TB6612FNG ; un servomoteur loisir exige un signal PWM 50 Hz et aucun pilote. L'interface STEP et DIR de l'A4988 n'a aucun sens pour l'un ou l'autre.
Pour aller plus loin