- 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.
Courant par broche
Modules de puissance
Risque de destruction
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 moteur | Atout principal | Cas d’usage typique |
|---|---|---|
| Moteur DC | Simplicité, déplacement continu | Motorisation de roues sur un robot mobile autonome |
| Moteur pas à pas | Précision angulaire, répétabilité | Axes X/Y de machine CNC où la répétabilité est cruciale |
| Servomoteur | Retour 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.
Module robot éducatif
Pont en H discret
MOSFET IRF540N
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.
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).
// 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);
}Robot suiveur de ligne
Plateforme motorisée
Voiture open-source
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.
// 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.
// 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()
}PWM sur Enable
Séquences tempo
Arrêt d’urgence
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
Diode Schottky 1N5822
Batterie Li-Ion 18650
Alim stabilisée 12V/2A
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.
Robot aspirateur open-source
Serres agricoles
Banc d’essai IoT
- ✓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 ?+
Comment faire tourner un moteur dans les deux sens Arduino ?+
Comment faire varier la vitesse d’un moteur à courant continu Arduino ?+
Quel moteur pour Arduino ?+
C’est quoi le L293D ?+
Comment coder un moteur sur Arduino ?+
À lire aussi
Les points :
- Comprendre les limites de l’Arduino pour la gestion de moteurs
- Choisir le bon type de moteur pour votre projet Arduino
- Architecture de circuit : le rôle central du driver de moteur
- Utiliser un pont en H pour piloter la direction et la vitesse
- Maîtriser la programmation : générer des signaux PWM et séquences de commande
- Sécuriser l’installation électrique : diodes de roue libre et alimentation adaptée
- Applications pratiques : robotique, domotique et objets connectés utilisant un moteur Arduino
- Questions fréquentes
Certains liens de cet encart sont affiliés — WorldGeek touche une commission sans surcoût pour vous.