Tout savoir sur la commande de moteurs avec Arduino : techniques et innovations

Tuto Arduino · Électronique
Piloter un moteur Arduino ne se résume jamais à brancher le moteur sur la carte : il faut une interface de puissance. Ce guide détaille, étape par étape, comment réussir une commande moteur Arduino fiable — du choix du composant au code, en passant par la sécurité électrique.
L’essentiel en bref
Pour piloter un moteur avec Arduino, on n’alimente jamais le moteur depuis une broche de la carte : on insère un driver (pont en H type L293D ou module L298N) entre l’Arduino et le moteur, alimenté par une source externe. L’Arduino se contente d’envoyer la logique : digitalWrite() pour le sens, analogWrite() (PWM) pour la vitesse.
  • Sens de rotation → deux broches de direction du pont en H (HIGH/LOW inversés).
  • Vitesse → signal PWM sur la broche Enable via analogWrite (0–255).
  • Alimentation moteur séparée de l’Arduino, masses reliées (GND commun).
  • Protection : diode de roue libre ou driver intégrant cette protection.

Comprendre les limites de l’Arduino pour la gestion de moteurs #

Programmer un Arduino pour piloter un moteur n’implique pas de relier directement ce dernier à la carte, car le courant délivré par les sorties Arduino est limité à quelques dizaines de milliampères, bien en deçà des besoins d’un moteur standard. La capacité de sortie restreinte protège la carte, mais exige l’ajout d’une interface de puissance entre la logique de commande et le moteur. C’est le point de départ de toute commande moteur Arduino réussie.

Les conséquences sont immédiates : une liaison directe endommagerait rapidement l’Arduino, ou ne permettrait pas au moteur de tourner correctement. Pour préserver l’intégrité de la carte et obtenir une commande fiable, il s’avère impératif d’utiliser, selon la puissance requise, des drivers, transistors ou modules dédiés.

⚠️ Sécurité Ne tirez jamais le courant moteur sur une broche Arduino. Une broche numérique de l’Uno délivre au maximum 40 mA — assez pour piloter la logique d’un driver, jamais la puissance d’un moteur.
01

Courant par broche

Le courant maximal par broche d’un Arduino Uno ne dépasse pas 40 mA, insuffisant pour le moindre moteur, même miniature.
02

Modules de puissance

Des modules de puissance tels que le L298N, relais ou MOSFET font office d’intermédiaires incontournables.
03

Risque de destruction

Le non-respect de cette limite engendre une chauffe excessive, voire la destruction du microcontrôleur.

Choisir le bon type de moteur pour votre projet Arduino #

Sélectionner le moteur adapté à une application précise repose sur une analyse comparative des caractéristiques des trois grandes familles. Les moteurs à courant continu (DC) s’illustrent par leur simplicité d’usage, idéaux pour l’automatisation de base et les déplacements continus : un moteur CC Arduino est souvent le premier que l’on motorise. À l’opposé, le moteur pas à pas Arduino s’impose pour les projets nécessitant une précision angulaire élevée, tels que les imprimantes 3D ou les systèmes de positionnement automatisés.

À lire Dessiner manga facile : la méthode pas à pas pour débuter

Les servomoteurs combinent, quant à eux, commande précise et facilité de programmation, souvent utilisés pour l’orientation de bras robotiques ou l’ouverture automatisée de portes. Lorsque la charge à entraîner est importante mais lente, on s’oriente vers un motoréducteur Arduino, qui combine moteur CC et réduction mécanique pour gagner en couple. Les besoins réels du projet, l’encombrement, la tension d’alimentation et la robustesse déterminent le choix final.

Type de moteurAtout principalCas d’usage typique
Moteur DCSimplicité, déplacement continuMotorisation de roues sur un robot mobile autonome
Moteur pas à pasPrécision angulaire, répétabilitéAxes X/Y de machine CNC où la répétabilité est cruciale
ServomoteurRetour de position intégréBras articulés en compétition de robotique

Architecture de circuit : le rôle central du driver de moteur #

Le driver agit comme une interface de puissance : il reçoit les signaux de faible intensité issus de la carte Arduino et pilote le moteur en utilisant une alimentation externe adaptée. Le pont en H figure parmi les solutions standards pour les moteurs DC, favorisant le contrôle du sens et de la vitesse par modulation électronique. Le shield moteur Arduino le plus répandu, le module L298N, concentre en un boîtier unique la gestion de deux moteurs et la dissipation des pertes énergétiques. Pour les petits projets, le L293D Arduino (circuit intégré à double pont en H) joue exactement le même rôle au format puce.

Les transistors MOSFET offrent une alternative performante pour les charges plus élevées, tout en maximisant l’efficacité énergétique du circuit. L’usage d’un driver sécurise également l’Arduino contre les retours de tension et les pics de courant générés par l’inductance du moteur lors des phases de commutation.

L298N

Module robot éducatif

Couramment intégré dans les plateformes de robots éducatifs pilotés par Arduino, pour contrôler deux moteurs DC indépendamment.
DIY

Pont en H discret

Pont en H à transistors, installé dans des modules DIY custom, lorsque la compacité et le coût sont recherchés.
MOS

MOSFET IRF540N

Largement utilisé pour la commande de moteurs de grande puissance, par exemple pour des volets roulants domestiques motorisés.

Utiliser un pont en H pour piloter la direction et la vitesse #

Le pont en H constitue une structure électronique permettant d’inverser le sens de rotation d’un moteur à courant continu. Son architecture à quatre transistors, ou relais, autorise la permutation du flux de courant à travers le moteur et donc son inversion de marche. L’asservissement de la vitesse s’effectue via un signal PWM généré par l’Arduino, agissant sur la tension moyenne appliquée.

À lire Sorties manga, tests de jeux : écrire pour les fans et pour Google, l’équation de Julien Jimenez

Cette technique trouve une application directe sur des robots suiveurs de ligne, où la navigation exige des changements rapides de direction et des ajustements de vitesse précis. La combinaison d’un driver L298N et du contrôle PWM, par exemple, permet la gestion fine de petits véhicules automatisés de compétition en 2024.

Faire tourner le moteur dans les deux sens

Concrètement, le sens dépend de l’état des deux broches de direction du pont en H : pour inverser la marche, on inverse simplement les niveaux logiques. Voici un exemple minimal et standard avec un L293D Arduino (ou un L298N câblé sur les mêmes broches IN1/IN2/Enable).

moteur_deux_sens.ino
// Pilotage sens + vitesse d'un moteur CC via pont en H (L293D / L298N) const int IN1 = 7; // entrée direction 1 du driver const int IN2 = 8; // entrée direction 2 du driver const int ENA = 9; // broche Enable, compatible PWM (~) void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); } void loop() { // Marche avant a mi-vitesse digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, 150); // vitesse 0-255 (PWM) delay(2000); // Marche arriere a pleine vitesse digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); analogWrite(ENA, 255); delay(2000); // Arret analogWrite(ENA, 0); delay(1000); }
A

Robot suiveur de ligne

En lycée : alternance rapide de direction grâce au pilotage du pont en H via Arduino.
B

Plateforme motorisée

Variation fluide de la vitesse pour le transport de charges légères en industrie.
C

Voiture open-source

Réversibilité et accélération progressive grâce à la modulation PWM et au pont en H L298N.

Maîtriser la programmation : générer des signaux PWM et séquences de commande #

La gestion logicielle du moteur passe par la génération de signaux PWM (Pulse Width Modulation) sur des broches spécifiques de l’Arduino. En ajustant le rapport cyclique de ces impulsions, il devient possible de contrôler, à la volée, la vitesse de rotation du moteur. Coder la commande implique de définir les broches d’activation du driver, puis de moduler la largeur des impulsions selon les besoins dynamiques de l’application.

L’élaboration de séquences complexes, comme l’inversion périodique de marche ou le ralentissement progressif, offre une infinité de scénarios automatisés. La robustesse du code s’obtient en combinant des fonctions natives d’Arduino telles que digitalWrite() pour la direction et analogWrite() pour la vitesse, en intégrant des sécurités logicielles limitant les faux contacts ou les inversions intempestives.

À lire Cartes Pokémon Rares : Guide d’Investissement 2025

Faire varier progressivement la vitesse d’un moteur CC

Pour accélérer ou ralentir en douceur un moteur CC Arduino, on incrémente le rapport cyclique PWM dans une boucle. Cette rampe protège la mécanique et limite l’appel de courant au démarrage.

rampe_pwm.ino
// Acceleration puis deceleration progressive via PWM const int ENA = 9; // broche PWM Enable du driver void setup() { pinMode(ENA, OUTPUT); } void loop() { // Montee en vitesse for (int v = 0; v <= 255; v++) { analogWrite(ENA, v); delay(15); } // Descente en vitesse for (int v = 255; v >= 0; v--) { analogWrite(ENA, v); delay(15); } }

Pour un moteur pas à pas Arduino, la logique diffère : on raisonne en pas plutôt qu’en vitesse continue. La bibliothèque AccelStepper gère nativement l’accélération et le positionnement précis.

pas_a_pas_accelstepper.ino
// Moteur pas a pas avec acceleration (driver type A4988/DRV8825) #include <AccelStepper.h> // Mode STEP/DIR : pin STEP = 3, pin DIR = 4 AccelStepper moteur(AccelStepper::DRIVER, 3, 4); void setup() { moteur.setMaxSpeed(1000); moteur.setAcceleration(500); moteur.moveTo(2000); // position cible en pas } void loop() { if (moteur.distanceToGo() == 0) { moteur.moveTo(-moteur.currentPosition()); } moteur.run(); // a appeler en continu, sans delay() }
01

PWM sur Enable

Utilisation de analogWrite() pour transmettre le signal PWM à la pin d’activation (Enable) du driver L298N.
02

Séquences tempo

Alterner marche avant/arrière lors de cycles de nettoyage automatisés dans un robot aspirateur open-source.
03

Arrêt d’urgence

Programmation d’un arrêt d’urgence via un bouton et gestion logicielle des transitions pour préserver les composants.

Sécuriser l’installation électrique : diodes de roue libre et alimentation adaptée #

Lorsqu’un moteur cesse brusquement de tourner, son inertie génère des surtensions induites potentiellement destructrices pour l’électronique de commande. L’ajout d’une diode de roue libre, montée en parallèle sur le moteur, permet de canaliser ces pics d’énergie et de préserver les composants. Les constructeurs de modules moteur intègrent systématiquement cette protection, à retrouver lors des opérations de maintenance ou sur des schémas DIY sur mesure.

Le choix de l’alimentation se révèle déterminant : elle doit délivrer la tension et le courant requis par le moteur, tout en évitant toute surcharge de l’Arduino. C’est précisément le sujet d’une commande en Arduino commande moteur 12V, où l’alimentation moteur reste strictement séparée du 5 V logique. L’autonomie de robots mobiles, tels les robots de livraison de campus universitaire, dépend directement de la pertinence de la source d’énergie sélectionnée.

À lire Jeux de bar en 2025 : découvrez les incontournables pour s’amuser et gagner

⚠️ Bonnes pratiques Alimentez toujours le moteur par une source dédiée, reliez la masse (GND) de cette alimentation à celle de l’Arduino, et conservez la diode de roue libre — sauf si votre driver l’intègre déjà.
D

Diode Schottky 1N5822

Installée sur les modules de motorisation d’ascenseurs miniatures pilotés par Arduino, pour éliminer les surtensions lors de l’arrêt moteur.
B

Batterie Li-Ion 18650

Adoptée comme alimentation principale sur les robots éducatifs à moteurs DC, offrant une réserve de puissance stable et rechargeable.
12V

Alim stabilisée 12V/2A

Utilisée pour alimenter, en toute sécurité, des plateformes robotisées d’expérimentation en laboratoire universitaire.

Applications pratiques : robotique, domotique et objets connectés utilisant un moteur Arduino #

Les solutions d’automatisation et d’intelligence embarquée s’appuient très souvent sur la commande de moteurs par Arduino. En 2024, le robot suiveur de ligne conçu par l’équipe du lycée Louis-le-Grand a remporté le concours national de robotique grâce à une gestion maîtresse du pont en H couplée à des routines de calibration PWM. Les volets roulants connectés de la société HomeIoT embarquent un microcontrôleur Arduino Nano pour piloter discrètement les moteurs tubulaires via des drivers MOSFET, tout en intégrant la commande radio pour l’utilisateur final.

Les plateformes robotisées conçues pour la livraison de colis sur les campus universitaires, telles que testées à l’Université de Bordeaux en 2023, illustrent la robustesse des architectures à base d’Arduino et de moteurs DC, combinées à des batteries Li-Po et systèmes de recharge automatiques.

01

Robot aspirateur open-source

2024 — cartographie pièce par pièce grâce à la gestion des moteurs pas à pas alimentés et synchronisés via Arduino Mega.
02

Serres agricoles

Ouverture automatisée : crémaillères motorisées reliées à des servo-contrôleurs Arduino pour ajuster ventilation et humidité.
03

Banc d’essai IoT

Intégration de moteurs à courant continu sur des bancs robotisés pour simuler l’usure et la répétabilité des cycles de vie.
À retenir
  • Jamais de moteur directement sur une broche Arduino (40 mA max) : il faut un driver de puissance.
  • Pont en H (L293D, module L298N) = inversion de sens ; PWM via analogWrite = contrôle de vitesse.
  • DC pour le continu, pas à pas pour la précision, servo pour le positionnement, motoréducteur pour le couple.
  • Alimentation moteur séparée, GND commun, diode de roue libre contre les surtensions.
  • digitalWrite() pour le sens, analogWrite() pour la vitesse, AccelStepper pour le pas à pas.

Questions fréquentes #

Comment piloter un moteur avec Arduino ?+
On n’alimente jamais le moteur depuis la carte. On insère un driver (pont en H type L293D ou module L298N) entre l’Arduino et le moteur, avec une alimentation externe. L’Arduino envoie le sens via digitalWrite() sur les broches de direction et la vitesse via analogWrite() (PWM) sur la broche Enable.
Comment faire tourner un moteur dans les deux sens Arduino ?+
En inversant l’état des deux broches de direction du pont en H. Pour la marche avant : IN1 à HIGH, IN2 à LOW. Pour la marche arrière : IN1 à LOW, IN2 à HIGH. Mettre les deux à LOW (ou Enable à 0) arrête le moteur.
Comment faire varier la vitesse d’un moteur à courant continu Arduino ?+
Avec un signal PWM appliqué sur la broche Enable du driver via analogWrite(broche, valeur), où la valeur va de 0 (arrêt) à 255 (pleine vitesse). En incrémentant cette valeur dans une boucle, on obtient une rampe d’accélération douce qui ménage la mécanique.
Quel moteur pour Arduino ?+
Cela dépend du besoin : moteur CC pour un déplacement continu simple (roues de robot), moteur pas à pas pour la précision et la répétabilité (CNC, imprimante 3D), servomoteur pour un positionnement angulaire avec retour de position (bras articulé), et motoréducteur quand il faut beaucoup de couple à basse vitesse.
C’est quoi le L293D ?+
Le L293D est un circuit intégré à double pont en H : il permet de piloter deux moteurs CC en sens et en vitesse, ou un moteur pas à pas, à partir des signaux logiques de l’Arduino. Il fait l’interface de puissance entre la carte et le moteur, alimenté par une source externe. Le module L298N remplit le même rôle pour des courants plus élevés.
Comment coder un moteur sur Arduino ?+
On déclare les broches du driver en OUTPUT dans setup(), puis dans loop() on règle le sens avec digitalWrite() sur les broches de direction et la vitesse avec analogWrite() sur la broche Enable (PWM). Pour un moteur pas à pas, la bibliothèque AccelStepper gère accélération et positionnement précis.
Cet article est informatif. Manipulez l’électronique de puissance avec prudence : alimentation moteur séparée, masses reliées, et vérifiez vos branchements hors tension.

Partagez votre avis

Selection : agence web en Seine-et-MarneSofiane Boumedine, consultant SEO