Le driver A4988 est le petit module 16 broches qui transforme un signal de commande en courant pour un moteur pas à pas bipolaire. C’est lui qui se trouve sur presque toutes les imprimantes 3D et les CNC de loisir, simplement clippé dans un support de la carte mère. Une impulsion sur la broche STEP vaut un pas, un niveau sur la broche DIR décide du sens : le microcontrôleur n’a rien d’autre à faire, le décodeur de pas est intégré au circuit.
Sous le dissipateur se trouve un circuit Allegro A4988 : un pont complet à transistors DMOS, un régulateur de courant à hacheur et un traducteur de pas. Ce module se reconnaît à sa carte de couleur, à ses deux rangées de 8 broches au pas de 2,54 mm et au petit potentiomètre cruciforme marqué « Vref » qui règle la limite de courant.
Ce que ce module apporte
- Deux broches suffisent à faire tourner un moteur — STEP et DIR : plus besoin de générer quatre séquences de bobines dans le programme.
- Régulation de courant par hacheur — le module limite lui-même le courant dans les bobines, ce qui autorise une tension d’alimentation très supérieure à celle du moteur, donc du couple à haute vitesse.
- Micro-pas jusqu’au 1/16 — un moteur de 200 pas par tour peut être commandé en 3200 micro-pas, avec un mouvement plus doux et moins bruyant.
- Encombrement d’un port USB — le module se clippe dans un support de carte mère, sans soudure sur celle-ci.
Caractéristiques techniques
| Circuit intégré | Allegro A4988 — pont complet DMOS avec traducteur de pas et limiteur de courant |
|---|---|
| Module | Carte 16 broches au format « stepstick », 2 rangées de 8 broches au pas de 2,54 mm |
| Tension logique (VDD) | 3 à 5,5 V — se raccorde au 5 V de l’Arduino |
| Tension moteur (VMOT) | 8 à 35 V en continu — en dessous de 8 V le moteur ne démarre pas correctement |
| Courant de sortie | jusqu’à 2 A en pointe par bobine, environ 1 A en continu sans ventilation forcée |
| Résolutions | pas entier, 1/2, 1/4, 1/8, 1/16 — soit 200, 400, 800, 1600 ou 3200 micro-pas par tour pour un moteur de 200 pas |
| Réglage du courant | Potentiomètre « Vref » ; la limite vaut Vref divisé par 8 fois la résistance de détection |
| Protections | Limitation de courant, protection thermique, coupure sur sous-tension |
| Type de moteur | Bipolaire uniquement — un moteur 4 fils convient, un moteur unipolaire 5 fils ne se pilote pas ici |
| Découplage | Un condensateur électrolytique de 100 µF sur VMOT est indispensable, non fourni avec le module |
| Dissipateur | Petit radiateur à ailettes collé sur le circuit de puissance, livré avec le module |
Brochage : les 16 broches, rangée par rangée
Vu de dessus, le module présente deux rangées qui n’ont pas la même fonction. D’un côté la logique, de l’autre la puissance : les confondre est la seule erreur vraiment coûteuse de ce montage.
| ENABLE | Actif à l’état bas : mis à la masse, le moteur est alimenté ; au niveau haut, le module se met en veille et laisse le moteur libre. Laisser en l’air si l’on veut un moteur toujours bloqué. |
|---|---|
| MS1 | Sélection de micro-pas. Résistance de rappel interne de 100 kΩ vers la masse. |
| MS2 | Sélection de micro-pas. Résistance de rappel interne de 50 kΩ. |
| MS3 | Sélection de micro-pas. Résistance de rappel interne de 100 kΩ. |
| RESET | Remise à zéro interne. À relier à SLEEP : un module dont RESET flotte reste inactif. |
| SLEEP | Veille. Relié à RESET, le module fonctionne normalement. |
| STEP | L’impulsion. Un front montant fait avancer d’un micro-pas. |
| DIR | Le sens. Un niveau suffit, il est relu à chaque impulsion de STEP. |
| VMOT | Alimentation du moteur, 8 à 35 V, avec son condensateur de découplage au plus près. |
| GND (côté puissance) | Masse de l’alimentation moteur, à relier à la masse du microcontrôleur. |
| 2B et 2A | Deuxième bobine du moteur (B). |
| 1A et 1B | Première bobine du moteur (A). |
| VDD | Alimentation logique, 3 à 5,5 V. |
| GND (côté logique) | Masse logique, commune avec celle du microcontrôleur et celle de l’alimentation moteur. |
Choisir la résolution : les trois broches MS
Sans aucune liaison, les trois broches MS restent tirées à la masse en interne : le module travaille en pas entier. Pour un autre mode, relier les broches correspondantes au 5 V (par un cavalier ou une sortie du microcontrôleur) selon le tableau :
| Pas entier | MS1, MS2 et MS3 au niveau bas — 200 pas par tour, le plus de couple, le plus bruyant. |
|---|---|
| 1/2 pas | MS1 au niveau haut — 400 pas par tour. |
| 1/4 de pas | MS2 au niveau haut — 800 pas par tour. |
| 1/8 de pas | MS1 et MS2 au niveau haut — 1600 pas par tour. |
| 1/16 de pas | MS1, MS2 et MS3 au niveau haut — 3200 pas par tour, le mouvement le plus fluide. |
Un détail qui se paie : le micro-pas ne divise pas la consommation du moteur, il ne fait que découper le mouvement. Monter en résolution augmente donc la fréquence d’impulsions à fournir par le microcontrôleur pour une même vitesse, sans réduire le courant réglé.
Régler la limite de courant avant de brancher le moteur
C’est l’étape que l’on saute et qui coûte un moteur ou un module. La limite de courant se calcule à partir de la tension lue sur la broche Vref et de la valeur des résistances de détection de courant soudées sur la carte, notées Rcs :
| Formule | Courant maximum par bobine = Vref divisé par 8 fois Rcs |
|---|---|
| Si Rcs vaut 0,05 Ω | Régler Vref à environ 0,40 V pour une limite d’environ 1 A |
| Si Rcs vaut 0,1 Ω | Régler Vref à environ 0,80 V pour la même limite d’environ 1 A |
La valeur des résistances de détection change d’une série de cartes à l’autre : elle se lit sur le marquage des deux grosses résistances de la carte, ou se mesure à l’ohmmètre. Le multimètre se pose entre le fil du potentiomètre et une masse GND ; on tourne dans le sens des aiguilles d’une montre, par très petits mouvements, pour augmenter la tension. Régler ensuite la limite à environ 70 % du courant nominal du moteur : un moteur annoncé pour 1,5 A se règle un peu au-dessus de 1 A, ce qui suffit au couple et laisse de la marge en température.
Mini-projet : faire tourner un moteur NEMA 17 en aller-retour
Un seul moteur, un seul module, un tour dans chaque sens, à vitesse modérée. Comptez un quart d’heure et aucune soudure — le module se pose sur une plaque d’essai.
Ce qu’il faut
| Le cerveau | Arduino Uno R3 et son câble USB |
|---|---|
| Le module | Le driver A4988 — celui de cette page |
| Le moteur | Moteur pas à pas NEMA 17, 4 fils, bipolaire |
| L’alimentation moteur | Alimentation 12 V 2 A et son condensateur de 100 µF |
| Les liaisons | 10 fils Dupont, plus deux fils pour le moteur |
| Le support | Plaque d’essai 830 points |
Le câblage
Module VDD | → Arduino 5V |
|---|---|
Module GND (logique) | → Arduino GND |
Module DIR | → Arduino D2 |
Module STEP | → Arduino D3 |
Module ENABLE | → Arduino D4 |
Module RESET | → relié à SLEEP du même module |
Module MS1, MS2, MS3 | → masse : mode pas entier, 200 pas par tour |
Module VMOT | → alimentation +12V, avec le condensateur de 100 µF entre VMOT et la masse du module |
Module GND (puissance) | → alimentation 0V et → Arduino GND : les deux masses doivent être communes |
Module 1A et 1B | → première bobine du moteur |
Module 2A et 2B | → deuxième bobine du moteur |
Pour reconnaître les deux bobines, l’ohmmètre suffit : les deux fils d’une même bobine se mesurent à quelques ohms l’un de l’autre, alors que la résistance entre deux bobines différentes reste très élevée. Peu importe le sens de chaque paire ; si le moteur tourne dans le mauvais sens à la fin du montage, il suffit d’inverser deux fils d’une même bobine, ou de permuter la valeur envoyée sur DIR dans le programme.
Le programme
À copier dans l’IDE Arduino puis à téléverser :
/*
* Aller-retour d'un moteur pas a pas NEMA 17 - driver A4988
* Carte : Arduino Uno R3
* Cablage : STEP sur D3, DIR sur D2, ENABLE sur D4, alimentation moteur 12 V sur VMOT
* Micro-pas : MS1, MS2 et MS3 a la masse, donc 200 pas par tour
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
const byte PIN_DIR = 2;
const byte PIN_STEP = 3;
const byte PIN_ENABLE = 4;
const int PAS_PAR_TOUR = 200; // moteur de 200 pas en mode pas entier
void setup() {
pinMode(PIN_DIR, OUTPUT);
pinMode(PIN_STEP, OUTPUT);
pinMode(PIN_ENABLE, OUTPUT);
digitalWrite(PIN_ENABLE, LOW); // ENABLE est actif a l'etat bas
digitalWrite(PIN_STEP, LOW);
Serial.begin(9600);
}
// Envoie un nombre de pas, dans le sens demande.
// Un niveau bas suit un sens, un niveau haut suit l'autre.
void avancer(long nbPas, byte sens) {
digitalWrite(PIN_DIR, sens);
for (long i = 0; i != nbPas; i++) {
digitalWrite(PIN_STEP, HIGH);
delayMicroseconds(5);
digitalWrite(PIN_STEP, LOW);
delayMicroseconds(2000); // cadence d'environ 500 pas par seconde
}
}
void loop() {
Serial.println("Un tour dans un sens...");
avancer(PAS_PAR_TOUR, LOW);
delay(1000);
Serial.println("Un tour dans l'autre sens...");
avancer(PAS_PAR_TOUR, HIGH);
delay(1000);
}Comment ça marche
- Chaque impulsion sur
STEPfait avancer le moteur d’un micro-pas : ici, avec les trois broches MS à la masse, d’un pas complet, soit 1,8 degré. - Le traducteur interne du A4988 se charge de distribuer le courant dans les deux bobines dans le bon ordre. Le programme n’a aucune séquence à connaître.
- La pause de 2 ms entre deux impulsions fixe la cadence autour de 500 pas par seconde, soit environ deux tours et demi par seconde. Au-delà, le moteur peut décrocher et perdre du couple.
DIRpeut être changé à tout moment : le niveau est relu à chaque impulsion, donc le moteur change de sens sans à-coup à la fin d’un mouvement.
Les erreurs qui coûtent un module
| Sans condensateur sur VMOT | Le module meurt à la première mise sous tension. Un électrolytique de 100 µF au plus près des broches VMOT et GND est obligatoire. |
|---|---|
| Débrancher le moteur sous tension | Retirer un fil de bobine alors que le module est alimenté détruit l’étage de puissance. Toujours couper l’alimentation avant de toucher au moteur. |
| Potentiomètre laissé au maximum | Un module livré avec Vref réglé haut peut dépasser le courant du moteur : le moteur chauffe anormalement, puis les bobines lâchent. Régler avant de brancher. |
| RESET laissé en l’air | Rien ne tourne et aucun composant n’est en cause. Relier RESET à SLEEP. |
| Alimentation moteur en 5 V | Le module a besoin de 8 V au minimum sur VMOT. Le 5 V d’une carte fait tourner le moteur à vide, pas sous charge. |
| Les deux rangées confondues | Injecter du 12 V sur une broche logique détruit le circuit. Vérifier la rangée du VDD avant de mettre sous tension. |
Où ce module se clippe
Le format 16 broches est un standard de fait : le module se pose dans les supports à driver de la CNC Shield V3 pour les machines de gravure, et de la carte RAMPS 1.4 pour les imprimantes 3D. Dans les deux cas il est important de relever le module de son support avant de débrancher un moteur, et de l’orienter dans le bon sens : les broches de puissance se placent côté alimentation, marqué sur la sérigraphie de la carte mère.
Questions fréquentes
Quelle différence avec un DRV8825 ?
Le DRV8825 est le remplaçant direct du A4988 : mêmes 16 broches, même brochage, mais il accepte jusqu’à 45 V et descend au 1/32 de pas. Il chauffe aussi davantage et demande un réglage de Vref plus fin. Pour une imprimante 3D d’entrée de gamme ou une petite CNC, l’A4988 reste le choix sûr, et souvent plus tolérant à la tension d’alimentation qu’on lui donne.
Mon moteur vibre mais ne tourne pas, pourquoi ?
Trois causes, dans cet ordre. Les deux fils d’une même bobine ne sont peut-être pas sur la bonne paire de broches : refaire la mesure à l’ohmmètre. Le courant réglé est peut-être trop faible pour la charge, auquel cas le moteur siffle sans démarrer — tourner le potentiomètre par petits pas. Enfin la cadence d’impulsions est peut-être trop élevée pour la masse entraînée : ralentir le programme avant de chercher ailleurs.
Le module et le moteur chauffent beaucoup, est-ce normal ?
Tiède est normal, brûlant ne l’est pas. Le A4988 dissipe passablement, et son dissipateur sert à cela. Au-delà d’une centaine de degrés, la protection interne coupe le courant par intermittence : le symptôme est un moteur qui s’arrête et repart. La réponse est de baisser la limite de courant, pas d’ajouter un ventilateur sur le module. Au-delà de 1 A en continu, un driver externe de puissance comme le TB6600 5 A est plus à sa place qu’un module 16 broches.
Puis-je alimenter le moteur en 24 V ?
Oui, le module accepte jusqu’à 35 V sur VMOT, et une tension plus élevée fait grimper le couple aux vitesses rapides. Cela ne dispense pas de régler la limite de courant : c’est justement parce que le régulateur hache le courant que l’on peut monter la tension sans griller le moteur. Vérifier aussi que le condensateur de découplage supporte cette tension.
Peut-on piloter deux moteurs avec un seul module ?
Non. Un module commande un seul moteur bipolaire. Deux moteurs demandent deux modules et deux jeux de broches STEP et DIR sur le microcontrôleur. Une carte à trois supports alignés en accueille trois d’un coup, chacun avec ses propres commandes : c’est la façon la plus nette de faire fonctionner les trois axes d’une machine.
Le moteur siffle à l’arrêt, est-ce un défaut ?
Non, c’est le hacheur qui maintient le courant dans les bobines pour tenir la position : le module hache à quelques dizaines de kilohertz, et cette fréquence s’entend dans les bobines. Le sifflement disparaît si l’on place ENABLE au niveau haut, mais le moteur devient alors libre et la machine peut bouger sous la charge.
À combiner avec
Une fois l’axe en mouvement, ce sont les accessoires mécaniques qui font la machine : le coupleur d’axe relie l’arbre du moteur à une tige filetée, la courroie GT2 transmet le mouvement à une poulie sans jeu notable, et le KIT Arduino Uno Starter rassemble carte, plaque d’essai, fils et composants de base pour monter le premier essai de cette page sans rien acheter d’autre.







