Programmer un Arduino avec un A4988 pour piloter un moteur pas à pas change complètement la façon de concevoir un prototype. Entre le câblage, le réglage du courant, la gestion du bruit et les limites thermiques, chaque choix influence directement la précision, la vitesse et la fiabilité de l’installation.
Certains montages tournent à 300 RPM en continu, d’autres s’arrêtent brutalement, chauffent à plus de 90 °C ou émettent un bourdonnement permanent. La différence ne tient pas au hasard, mais à quelques réglages clés sur le driver, le microstepping et l’alimentation qu’il vaut mieux maîtriser dès le départ.
| Élément | Rôle | Astuces d’utilisation |
|---|---|---|
| A4988 | Pilote permettant de contrôler un moteur pas à pas via STEP/DIR | Toujours régler le courant avec le potentiomètre pour éviter la surchauffe |
| Arduino | Génère les signaux STEP et DIR pour le mouvement | Utiliser des pins numériques classiques pour garantir une bonne stabilité du signal |
| Micro‑pas (MS1, MS2, MS3) | Affinent la précision du moteur | Commencer en 1/8 ou 1/16 pour trouver le bon compromis précision/vibration |
| Alimentation moteur | Puissance dédiée pour le moteur pas à pas | Toujours séparer la masse Arduino et alimentation moteur pour un fonctionnement stable |
| Dissipateur + ventilation | Protège le driver contre la surchauffe | Indispensable si le moteur consomme plus de 1A |
Principe de fonctionnement : Arduino, A4988 et moteur pas à pas
Un montage Arduino + A4988 pilote un moteur pas à pas en envoyant une succession d’impulsions précises. Chaque impulsion fait avancer le rotor d’un angle défini, par exemple 1,8° pour un moteur 200 pas/tour. Cette granularité offre un positionnement angulaire fiable pour une imprimante 3D, une CNC compacte ou un système de robotique légère.
Le driver A4988 se place entre l’Arduino et le moteur. Il reçoit des signaux logiques à faible courant de la carte (STEP, DIR, ENABLE) et gère la puissance nécessaire dans les enroulements. Ce rôle de pont entre logique et puissance impose un câblage propre, une alimentation adaptée et un réglage du courant cohérent avec le moteur utilisé.

Rappel sur les caractéristiques typiques des moteurs pas à pas
De nombreux moteurs adaptés au A4988 suivent un standard NEMA 17 ou NEMA 23. On rencontre souvent :
- Résolution de 200 pas/tour (1,8° par pas en full step).
- Courant nominal autour de 1,2 A à 1,33 A par phase.
- Tension nominale typique entre 2,8 V et 4 V (tension liée à la résistance de la bobine).
La tension nominale inscrite sur le moteur ne correspond pas à la tension d’alimentation du driver. Le A4988 fonctionne en mode haché (chopper) et limite le courant dans les enroulements, même si l’alimentation atteint 12 V ou 24 V. La valeur de courant définie par le potentiomètre Vref devient donc le paramètre central du dimensionnement.
« Un moteur 2,8 V – 1,33 A alimenté via un A4988 en 24 V fonctionne correctement si le courant est limité, alors qu’un branchement direct sans driver saturerait immédiatement l’enroulement. »
Schéma de câblage Arduino – A4988 – moteur pas à pas
Un câblage rigoureux évite les dysfonctionnements aléatoires. Le A4988 s’utilise généralement sur un shield ou un petit breakout avec broches déjà étiquetées. Le principe reste le même, que ce soit avec un Arduino Uno, Nano ou Mega.
Raccordement de l’alimentation et du moteur
Le driver possède deux sections distinctes : la partie logique (5 V) et la partie puissance (8–35 V). Elles doivent partager une masse commune pour que les niveaux logiques soient correctement interprétés.
- VMOT → alimentation moteur (12 à 24 V selon le besoin).
- GND (à côté de VMOT) → masse alimentation puissance.
- VDD → 5 V de l’Arduino.
- GND logique → GND de l’Arduino.
- Sorties moteur : 1A, 1B, 2A, 2B → les deux bobines du moteur bipolaire.
Pour un moteur bipolaire classique, on relie chaque paire de fils à une bobine :
- Bobine 1 : 1A / 1B.
- Bobine 2 : 2A / 2B.
Si le moteur vibre sans tourner ou saute des pas, l’ordre des fils doit être inversé sur une des bobines. Ce symptôme vient souvent d’un câblage croisé des enroulements.

Connexions de commande entre Arduino et A4988
Le driver se pilote par quelques broches logiques simples :
- STEP → entrée impulsions de pas.
- DIR → sens de rotation.
- ENABLE → activation / désactivation des ponts en H (actif à l’état bas).
- MS1, MS2, MS3 → configuration du microstepping.
- RESET et SLEEP → souvent reliées ensemble au +5 V pour rester actives.
Un exemple d’affectation de broches avec un Arduino Uno :
- STEP → D2
- DIR → D3
- ENABLE → D4
- MS1 → D5
- MS2 → D6
- MS3 → D7
Cette répartition simplifie l’écriture du code tout en gardant la compatibilité avec d’éventuelles bibliothèques d’axes (par exemple pour de petites machines CNC).
Tableau de microstepping du A4988
Le A4988 offre jusqu’à 1/16 de pas. Le tableau suivant résume la configuration des broches MS1 à MS3 :
| MS1 | MS2 | MS3 | Mode | Pas par tour (moteur 200 pas/tour) |
|---|---|---|---|---|
| 0 | 0 | 0 | Full step | 200 |
| 1 | 0 | 0 | 1/2 pas | 400 |
| 0 | 1 | 0 | 1/4 pas | 800 |
| 1 | 1 | 0 | 1/8 pas | 1600 |
| 1 | 1 | 1 | 1/16 pas | 3200 |
Le mode quarter-step (1/4 pas) offre un compromis intéressant entre fluidité, couple et bruit. De nombreux essais terrains montrent une nette réduction des vibrations audibles par rapport au full step, sans nécessiter des fréquences d’impulsions STEP trop élevées.

Choix de l’alimentation : tension, courant et marge thermique
Le couple Arduino – A4988 supporte une large plage de tension sur VMOT, mais certains seuils changent fortement le comportement du moteur : vitesse accessible, bruit, stabilité et montée en température.
Tension d’alimentation recommandée pour un A4988
Les essais sur moteurs NEMA 17 typiques montrent les tendances suivantes :
- Minimum réaliste : 12 V, pour garantir un couple suffisant à vitesse moyenne.
- Tension idéale pour des vitesses jusqu’à 300–360 RPM : 24 V.
- Maximum A4988 : 35 V (à respecter strictement).
- Contexte automobile : 14 V environ, tension plus limitée pour des applications embarquées.
Un fonctionnement vers 24 V autorise des rampes d’accélération plus dynamiques et des vitesses de pointe plus élevées. Par exemple, des mesures de terrain indiquent une vitesse maximale stable autour de 360 RPM pour un moteur 200 pas/tour avec un stepDelay de 500 µs puis une optimisation jusqu’à 1200 pas/s, contre une limite plus basse avec 12 V.
Intensité disponible sur l’alimentation
Le bloc d’alimentation doit fournir le courant total nécessaire à l’ensemble du système :
- Courant de chaque moteur (en général 0,95–1,2 A par phase, modulé par le microstepping).
- Courant consommé par l’Arduino et les périphériques (capteurs, écrans, relais).
Une réserve d’au moins 2 A reste adaptée pour un montage avec un seul moteur. Pour plusieurs axes, la marge en intensité doit être revue à la hausse, notamment en cas de démarrages simultanés ou de charges mécaniques irrégulières.
Réglage du courant sur le A4988 : Vref, couple et température
Le réglage du courant limite constitue le cœur de la configuration. Un courant trop faible provoque des pertes de pas, un couple insuffisant et des arrêts imprévus. Un courant trop fort amène le moteur et le driver vers des températures trop élevées, avec un risque d’endommagement.
Relation entre Vref et courant limite
Sur la plupart des modules A4988, le courant maximum par phase se calcule à partir de la tension de référence Vref et de la résistance de shunt, souvent de 0,1 Ω. Une relation courante est :
Imax ≈ Vref × 2 / (8 × Rshunt)
Sur certains montages, la formule simplifiée utilisée sur des exemples concrets donne :
Vref ≈ Ilim × 8 × Rshunt
Ainsi, pour un courant limite souhaité de 0,95 A et Rshunt = 0,1 Ω, on obtient :
- Vref = 0,95 × 8 × 0,1 = 0,76 V.
Dans ce régime, le moteur fonctionne avec un couple correct, sans dépasser une température déraisonnable, à condition d’assurer une ventilation minimale autour du driver.
Courant en full step et en microstepping
En full step, de nombreux essais montrent que le moteur utilise environ 70 % du courant limite réglé sur le driver. En microstepping, la distribution du courant dans les phases varie sinusoïdalement, mais le courant maximal reste contrôlé par Vref.
ArduinoArduino et domotique : automatiser sa maison pour pas cherQuelques constats tirés de mesures pratiques :
- Un moteur donné pour 1,2 A fonctionne correctement avec un réglage entre 0,95 et 1,2 A.
- Un courant mesuré autour de 0,5 A en full step sur un moteur nominal 1,2 A reste insuffisant pour des mouvements exigeants.
- La montée en température du moteur peut atteindre 90 °C en fonctionnement continu si le courant est poussé près du maximum sans refroidissement.
Comparatif : réglage prudent vs réglage agressif
| Paramètre | Réglage prudent (0,8–0,95 A) | Réglage agressif (1,1–1,2 A) |
|---|---|---|
| Couple | Bon pour la plupart des charges | Plus élevé, utile sur charge lourde |
| Température moteur | Modérée, compatible longue durée | Élevée, atteint facilement 80–90 °C |
| Durée de vie | Préservée | Sollicitée, risque de vieillissement anticipé |
| Stabilité à haute vitesse | Correcte jusqu’à quelques centaines de RPM | Légère réserve de couple en plus |
Performances en vitesse : pas par seconde, RPM et stepDelay
La vitesse d’un moteur pas à pas se déduit directement de la fréquence des impulsions STEP. Pour un moteur 200 pas/tour en full step, la relation entre fréquence et rotation par minute (RPM) devient très simple.
Conversion fréquence – RPM
Pour un moteur 200 pas/tour :
RPM = (fréquence des pas en pas/s) × 60 / 200
Exemples concrets :
- 600 pas/s → 600 × 60 / 200 = 180 RPM.
- 1200 pas/s → 1200 × 60 / 200 = 360 RPM.
Avec un stepDelay de 500 µs, on génère 1/0,0005 s = 2000 pas/s en théorie. En pratique, le temps d’exécution du code réduit légèrement cette valeur effective, mais on reste dans une plage de quelques centaines de RPM. Des essais indiquent une stabilité proche de 360 RPM avec une bonne alimentation et un courant correctement réglé.
Limite pratique du stepDelay
Plus le stepDelay diminue, plus la fréquence des pas augmente. À partir d’un certain seuil, le moteur ne suit plus correctement, perd du couple et commence à décrocher. Les tests montrent une instabilité marquée à 300 µs de delay, avec des phénomènes de résonance et de pertes de pas.
Une plage typique de fonctionnement stable se situe autour de :
- stepDelay ≈ 500 µs pour une vitesse élevée mais contrôlée.
- stepDelay > 700–800 µs pour des déplacements plus doux et un couple renforcé.
Gestion du bruit et des vibrations avec un A4988
Un moteur pas à pas piloté en full step à moyenne vitesse génère souvent un bruit mécanique perceptible. Le spectre sonore dépend à la fois du courant, de la tension d’alimentation, du mode de microstepping et de la structure mécanique liée au moteur.
Niveau sonore typique et influence de la tension
Des mesures à vitesse moyenne et élevée montrent des niveaux sonores autour de 74 dB, clairement audibles dans un atelier ou un bureau calme. En mode maintien (moteur immobile mais alimenté), un gémissement persistant se fait entendre à proximité.
Lorsque la tension d’alimentation dépasse 10 V, les bruits de commutation et les vibrations augmentent. En revanche, l’utilisation du microstepping adoucit les transitions de courant dans les bobines et limite les effets de résonance mécanique.
Réduction du bruit par le microstepping
Le mode quarter-step (1/4 pas) s’illustre comme un compromis efficace. Il réduit nettement le bruit par rapport au full step, tout en conservant un couple utilisable pour la plupart des montages. Les modes 1/8 et 1/16 pas offrent encore plus de finesse, mais sollicitent fortement la fréquence de commande et rendent le code plus exigeant en timing.
ArduinoPiloter un relais 230 V avec Arduino en sécurité : 5 erreurs à éviterÀ vitesse de maintien, un léger bourdonnement persiste, lié au courant de maintien dans les bobines. On peut le réduire en abaissant le courant limite ou en désactivant le driver via la broche ENABLE lorsqu’aucun couple n’est nécessaire, en tenant compte du risque de déplacement mécanique intempestif.
Code Arduino de base pour piloter un moteur pas à pas avec A4988
Le contrôle d’un moteur pas à pas via A4988 ne réclame pas de bibliothèque complexe. Quelques lignes suffisent pour générer des impulsions STEP correctes. On peut ensuite enrichir ce socle pour gérer les rampes, les entrées utilisateur ou la communication série.
Exemple de code minimal en full step
Voici un exemple de code Arduino pour faire tourner un moteur dans les deux sens en full step, avec un delay programmable entre les pas.
// Broches de commande A4988
const int pinStep = 2;
const int pinDir = 3;
const int pinEn = 4;
// Paramètres moteur
const int stepsPerRev = 200; // 200 pas/tour (1,8°) en full step
unsigned int stepDelay = 500; // en microsecondes (500 µs ≈ vitesse élevée stable)
void setup() {
pinMode(pinStep, OUTPUT);
pinMode(pinDir, OUTPUT);
pinMode(pinEn, OUTPUT);
// Active le driver (ENABLE est actif à l'état bas sur la plupart des A4988)
digitalWrite(pinEn, LOW);
}
void loop() {
// Rotation sens 1
digitalWrite(pinDir, HIGH);
tournerMoteur(stepsPerRev); // 1 tour
delay(1000);
// Rotation sens 2
digitalWrite(pinDir, LOW);
tournerMoteur(stepsPerRev); // 1 tour
delay(1000);
}
void tournerMoteur(long nbPas) {
for (long i = 0; i < nbPas; i++) {
digitalWrite(pinStep, HIGH);
delayMicroseconds(stepDelay);
digitalWrite(pinStep, LOW);
delayMicroseconds(stepDelay);
}
}
Ce code produit une vitesse voisine de quelques centaines de RPM, compatible avec des essais de validation. Un stepDelay inférieur à 300 µs devient instable sur de nombreux montages, surtout sans rampe d’accélération.
Intégration du microstepping dans le code
Pour profiter du microstepping, il suffit de piloter les broches MS1, MS2, MS3. Exemple pour un fonctionnement en 1/4 de pas :
const int pinMS1 = 5;
const int pinMS2 = 6;
const int pinMS3 = 7;
void setup() {
pinMode(pinStep, OUTPUT);
pinMode(pinDir, OUTPUT);
pinMode(pinEn, OUTPUT);
pinMode(pinMS1, OUTPUT);
pinMode(pinMS2, OUTPUT);
pinMode(pinMS3, OUTPUT);
// Mode 1/4 de pas : MS1=0, MS2=1, MS3=0
digitalWrite(pinMS1, LOW);
digitalWrite(pinMS2, HIGH);
digitalWrite(pinMS3, LOW);
digitalWrite(pinEn, LOW); // active le driver
}
En 1/4 de pas, un tour complet nécessite désormais 800 micro-pas. Pour conserver la même vitesse angulaire qu’en full step, la fréquence des impulsions STEP doit être multipliée par quatre, ou bien le stepDelay divisé par quatre.
Gestion de l’accélération et de la décélération
Un changement brutal de vitesse (passer instantanément de l’arrêt à une fréquence élevée) provoque souvent des pertes de pas sur les moteurs pas à pas. Le couple chute au démarrage, le rotor n’a pas le temps de synchroniser sa position, et le système décroche mécaniquement.
Principe de la rampe d’accélération
Une stratégie fréquente consiste à gérer une rampe linéaire ou en S-curve du stepDelay :
- On démarre avec un stepDelay large (par exemple 1500–2000 µs).
- On réduit progressivement le stepDelay jusqu’à la valeur cible (par exemple 500 µs).
- On inverse la rampe en fin de mouvement pour revenir vers un stepDelay élevé avant l’arrêt.
Des bibliothèques comme AccelStepper intègrent ce comportement et simplifient l’écriture de ces profils de vitesse. Le principe reste toutefois le même pour un code maison : modifier dynamiquement le temps entre deux impulsions STEP en fonction de la distance déjà parcourue.
Impact sur le couple et la stabilité
Avec une rampe bien dimensionnée, un montage Arduino + A4988 atteint facilement des vitesses de l’ordre de 300 RPM, voire 360 RPM sur des moteurs NEMA 17 correctement alimentés en 24 V. Sans rampe, les pertes de pas surviennent bien plus tôt, parfois dès 150–200 RPM selon la charge et le courant disponible.
Chauffe, sécurité et bonnes pratiques de montage
Le moteur pas à pas et le driver dissipent tous deux de la chaleur. Une utilisation prolongée à pleine charge impose de prendre en compte les limites thermiques. Des relevés sur le terrain indiquent des températures de moteur proches de 90 °C en fonctionnement continu avec un courant élevé.
Gestion thermique du moteur et du driver
Quelques règles simples améliorent nettement la tenue dans le temps :
- Installer un radiateur sur le circuit intégré du A4988.
- Prévoir une ventilation minimale (flux d’air) si le courant dépasse 1 A par phase.
- Éviter de fixer le moteur directement sur un support isolant thermique sans dissipation.
- Limiter le courant à une valeur légèrement inférieure au nominal du moteur en régime continu.
Le boîtier du driver dispose d’une protection thermique interne, mais s’appuyer sur cette protection comme stratégie de fonctionnement reste une mauvaise idée. Un déclenchement fréquent provoque un fonctionnement erratique, difficile à diagnostiquer sans instrumentation.
Surveillance et entretien du système
Une approche simple consiste à intégrer ponctuellement des vérifications manuelles :
- Contact rapide du doigt sur le moteur : s’il devient intouchable plus d’une seconde, la température approche des valeurs critiques.
- Observation des vibrations ou bruits inhabituels.
- Vérification périodique du serrage des borniers de puissance.
Sur des installations fixes, cette logique de vigilance rejoint la démarche adoptée en électricité domestique avec la vérification et le diagnostic réguliers des installations électriques, pour prévenir plutôt que subir.
Compatibilité mécanique et dimensionnement de l’axe
Le couple réellement disponible dépend non seulement du courant, mais aussi du type de moteur (NEMA 17, NEMA 23), de la démultiplication mécanique et de la charge entraînée. Une conception cohérente prend en compte le rapport inertie charge / inertie rotor.
Choix entre NEMA 17 et NEMA 23 avec A4988
Le A4988 pilote sans difficulté de nombreux moteurs NEMA 17 dans une plage de courant de 0,95–1,2 A. Pour des moteurs NEMA 23, souvent plus gourmands en courant, la compatibilité reste possible si le courant nominal ne dépasse pas les capacités du driver, mais la marge de sécurité se réduit.
Pour des axes lourds, l’association A4988 + NEMA 23 montre vite ses limites : échauffement rapide, nécessité de réduire le courant, vitesse maximale réduite. Dans ces cas, des drivers plus robustes ou un changement de stratégie mécanique (réduction par courroie ou vis sans fin) apportent une solution plus sereine.
Prise en compte de la charge et de la sécurité
Une inertie importante génère des efforts élevés lors des phases d’accélération et de freinage. Une suralimentation du système pour compenser un sous-dimensionnement mécanique revient à reporter le problème sur le moteur et le driver. La démarche adoptée au niveau du bricolage devrait s’inspirer des réflexes présents dans la mise en conformité des circuits d’habitation (répartition des charges, calibre des protections, etc.), comme on le rencontre pour la norme électrique NF C 15-100.
Bruit de maintien, courant de repos et économie d’énergie
Lorsque le moteur reste immobile mais que le driver maintient le couple, un courant de repos circule dans les bobines. Des mesures montrent un courant de maintien autour de 0,7 A, soit environ 90 % du courant limite réglé, avec pour effet un maintien de couple et une dissipation thermique non négligeable.
Stratégies pour réduire le courant de maintien
Plusieurs approches limitent le bruit de maintien et la chauffe en stationnaire :
- Réduire Vref lorsque le système passe en mode veille prolongée.
- Désactiver temporairement le driver via la broche ENABLE lorsque la charge n’exige plus de couple.
- Mettre en place un mode « économie » dans le code, qui abaisse progressivement la fréquence des pas puis le courant après une période d’inactivité.
Ces stratégies apportent un gain sensible sur la température globale de l’installation, en particulier dans des environnements peu ventilés.
Dépannage : symptômes fréquents et pistes de résolution
Certains comportements reviennent régulièrement lors de la mise en route d’un ensemble Arduino – A4988 – moteur pas à pas. Une approche méthodique permet de corriger la plupart des défauts sans instrumentation lourde.
Le moteur vibre sans tourner
Ce symptôme pointe souvent vers un problème de câblage des bobines ou de sens de connexion :
- Vérifier que chaque bobine du moteur relie bien 1A/1B et 2A/2B.
- Inverser les fils d’une seule bobine pour corriger une inversion de phase.
- Tester le moteur à une vitesse plus basse (stepDelay plus long).
Le moteur chauffe fortement
Une température moteur élevée révèle :
- Un réglage de courant trop agressif (Vref trop haute).
- Une absence de refroidissement sur le driver ou autour du moteur.
- Une charge mécanique trop importante, qui oblige le moteur à travailler à la limite de ses capacités.
Un abaissement de Vref, une légère réduction de la vitesse maximale, ou une révision de la mécanique améliorent rapidement la situation.
Des pertes de pas à haute vitesse
Des pertes de pas au-delà de quelques centaines de RPM indiquent souvent :
- Absence de rampe d’accélération correcte.
- Tension d’alimentation insuffisante (12 V au lieu de 24 V, par exemple).
- Câblage de puissance trop fin ou alimentation sous-dimensionnée.
En réduisant légèrement la vitesse, en renforçant l’alimentation et en ajoutant une rampe, on retrouve un fonctionnement fluide. La logique rappelle celle suivie lorsqu’on met une installation électrique aux normes : respecter les limites des composants évite les déclenchements et les pannes répétitives.
« Un moteur pas à pas bien piloté ne se juge pas uniquement à sa vitesse de pointe, mais à sa capacité à répéter le même mouvement des milliers de fois sans perte de pas, sans échauffement excessif et sans bruit intrusif. »




