Résolu sur le forum : Borne Wallbox Pulsar Plus 7,4 kW sur abonnement 6 kVA : quel délestage avant accord copro (urgent)Ma panne diagnostiquée — réponse sous 48 h29 €

Arduino moteur DC : contrôle et pilotage

Arduinomis à jour le 16 février 2026

Un moteur à courant continu relié à une carte Arduino ouvre la porte à une large palette de projets : robot mobile, convoyeur, système de ventilation, maquette automatisée. La combinaison des signaux PWM, d’un driver adapté et d’une alimentation dimensionnée transforme une simple carte de prototypage en véritable module de pilotage moteur.

Pour obtenir une rotation régulière, une accélération maîtrisée et une inversion de sens fiable, plusieurs paramètres techniques entrent en jeu : tension, courant, rendement, choix du driver, structure du code. La manière dont ces éléments s’assemblent conditionne la robustesse de l’installation et la longévité des composants.

Élément clé Synthèse
Objectif 🎯 Piloter la vitesse et le sens d’un moteur DC via une carte Arduino.
Composants requis 🔧 Arduino, moteur DC, pilote type L298N ou L293D, alimentation séparée, diodes de protection.
Principes de contrôle ⚡ PWM pour gérer la vitesse ; signaux logiques pour changer la rotation.
Bonnes pratiques ✔️ Isoler l’alimentation moteur, utiliser une masse commune, éviter les surcharges.

Principes de base du moteur DC avec Arduino

Un moteur à courant continu, ou moteur DC, convertit une énergie électrique en énergie mécanique de rotation. La vitesse dépend principalement de la tension appliquée, tandis que le couple dépend du courant traversant les bobinages. Avec une carte Arduino, la gestion de ces deux grandeurs repose sur l’association de signaux PWM, d’un driver de puissance et d’une alimentation indépendante du microcontrôleur.

ArduinoArduino et domotique : automatiser sa maison pour pas cher

Un projet basé sur moteur DC se distingue d’un montage avec moteur pas à pas par un rapport poids/puissance en général environ 5 fois meilleur. Le moteur DC fournit un mouvement plus fluide, réagit vite aux consignes et ne consomme quasiment rien à l’arrêt, ce qui convient très bien aux robots mobiles ou aux systèmes alimentés par batterie.

Astuce pratique : pour un premier essai structuré, un montage simple décrit dans un projet Arduino pour débutant permet d’expérimenter la mise en route, l’arrêt et l’inversion d’un petit moteur DC en toute sécurité.

Caractéristiques électriques des moteurs DC courants

Les fiches techniques indiquent la plage de tension, le courant nominal et le courant de pointe au démarrage ou en blocage. Ces valeurs orientent directement le choix du driver et de l’alimentation. Pour un ensemble homogène, les ordres de grandeur suivants servent de base de réflexion :

  • Petits moteurs basse tension : 1,5 à 6,5 V
  • Moteurs DC standard pour robotique légère : 5 à 35 V
  • Plage complète de tension supportée par certains drivers : 4,3 à 36 V
  • Tension optimale fréquemment utilisée : 7,2 V pour un bon compromis couple/vitesse/rendement

Sur le plan du courant, un moteur DC typique pour petit robot présente :

  • Courant nominal : 0,6 à 1 A
  • Courant de pointe : jusqu’à 2 A au démarrage ou en blocage
  • Puissance continue fréquente : autour de 20 W

Les fiches constructeurs précisent aussi une plage globale de 0 à 2 A, avec parfois une mention de courant maximal théorique proche de 5 A sur certains ensembles haute puissance. Cette marge impose un choix de driver et d’alimentation dimensionnés pour absorber sans broncher les pointes de courant.

Rendement, point de fonctionnement et efficacité énergétique

Un moteur DC présente un rendement qui varie selon la charge, la tension et le régime. Autour d’un point de fonctionnement optimal, le rendement atteint en général environ 70 %. Par exemple, un couple tension/courant de 7,2 V et 0,8 A se situe souvent dans une zone efficace : le moteur ne chauffe pas exagérément, le couple reste exploitable et la consommation reste raisonnable.

Travailler près du point de fonctionnement optimal limite les pertes par effet Joule et par frottement. Un moteur suralimenté ou bridlé trop bas perd en rendement et en durée de vie. Une mesure régulière du courant permet d’ajuster le choix de la tension et le rapport cyclique PWM pour rester dans une zone confortable.

« Un moteur correctement dimensionné et alimenté à sa tension optimale fonctionne plus longtemps, chauffe moins et consomme moins pour la même quantité de travail mécanique. »

Pourquoi un Arduino ne pilote pas directement un moteur DC

La carte Arduino gère la logique, mais ne fournit pas l’énergie nécessaire aux enroulements du moteur. Chaque broche de sortie tolère un courant limité à 40 mA environ. Au-delà, le microcontrôleur risque une détérioration irréversible. En parallèle, la broche 5 V de la carte délivre autour de 200 mA disponibles, bien loin des 0,6 à 1 A requis par un moteur DC standard.

Ce contraste entre la capacité de sortie de la carte et les besoins du moteur impose un étage de puissance intermédiaire : driver, pont en H, module MOSFET ou shield moteur multicanal. Sans cette interface, le moteur induirait des chutes de tension, des redémarrages intempestifs de la carte et des risques de destruction du régulateur ou du microcontrôleur.

Attention : raccorder directement un moteur DC sur la broche 5 V ou une sortie numérique de l’Arduino provoque rapidement un échauffement, un reset inopiné ou une défaillance définitive des composants. Un driver ou un module de puissance reste indispensable pour tout montage moteur sérieux.

Panorama des drivers moteurs DC pour Arduino

Un driver moteur agit comme un interrupteur électronique piloté par l’Arduino. Il reçoit les signaux de commande (sens, PWM, freinage) et commute une tension d’alimentation plus élevée vers le moteur. Plusieurs familles de circuits et modules existent, adaptées à des niveaux de courant variés :

  • Circuits intégrés classiques de type pont en H (L293D, L298N)
  • Drivers MOSFET modernes (TB6612FNG, DRV8833)
  • Shields multicanaux haute intensité pour robots complexes

Le choix dépend du courant nominal du moteur, du courant de pointe, de la tension d’alimentation et du nombre de canaux requis. Un comparatif simplifie cette décision.

Comparatif des drivers courants pour moteurs DC

Driver Courant nominal / par canal Courant de pointe Puissance continue typique Utilisation recommandée
L293D ≈ 600 mA ≈ 1,2 A Faible à modérée Petits moteurs, prototypes éducatifs, projets très peu gourmands
L298N ≈ 1 A par canal. ≈ 2 A ≈ 20 W Robots légers, voitures RC DIY, mécanismes de taille moyenne
TB6612FNG ≈ 1,2 A par canal Supérieur à 1,2 A (courts instants) Modérée Robotique mobile, projets compacts, efficacité correcte
DRV8833 ≈ 1,2 A par canal Légèrement supérieur en pointe Modérée Applications basse tension, moteurs multiples, faible échauffement
Shields multicanaux Jusqu’à 18 A par canal Pointe élevée selon le modèle Élevée Robots lourds, plateformes multi-moteurs, systèmes embarqués puissants

Les circuits plus anciens comme le L293D affichent des pertes non négligeables et chauffent dès que le courant grimpe. Des drivers récents tels que TB6612FNG ou DRV8833 utilisent des transistors MOSFET à faible résistance interne et conviennent mieux aux alimentations sur batterie.

Conseil de sélection : pour un petit robot autonome ou un projet de régulation de vitesse, un driver moderne du type TB6612FNG associé à une tension d’environ 7,2 V fournit un compromis intéressant entre rendement, taille et simplicité de câblage.

Dimensionnement de l’alimentation moteur vs Arduino

Une architecture stable sépare clairement l’alimentation des moteurs de celle du microcontrôleur. L’Arduino fonctionne en 5 V ou 3,3 V selon le modèle, tandis que le moteur accepte une plage entre 1,5 et 35 V. L’alimentation moteur devra supporter :

  • Le courant nominal continu du moteur
  • Le double ou le triple de ce courant en phase de démarrage ou de blocage
  • Les pertes induites par le driver (chauffe, tension de saturation, etc.)

Une alimentation sous-dimensionnée provoque des baisses de tension au démarrage, des resets de la carte et des comportements erratiques. Une alimentation surdimensionnée, correctement protégée par fusible ou limitation de courant, garde une marge confortable pour absorber les demandes de pointe.

Isolation et masses communes

Dans la majorité des montages, l’alimentation des moteurs est indépendante de celle de l’Arduino, mais la masse reste commune. Le raccordement du GND du driver avec le GND de l’Arduino assure une référence de tension identique pour les signaux de commande.

Un câblage propre sépare physiquement les fils forts courants (moteurs, alimentation 7,2 V à 36 V) des nappes qui transportent les signaux logiques. Des condensateurs de découplage placés près du driver et du microcontrôleur limitent les perturbations électromagnétiques et évitent les fluctuations de tension rapides.

« Une bonne alimentation se conçoit en pensant d’abord aux pointes de courant, puis au régime continu. Les moteurs tirent le maximum d’énergie au démarrage, et non une fois lancés. »

Contrôle de la vitesse : PWM et Arduino

Le contrôle de la vitesse d’un moteur DC par Arduino repose sur la modulation de largeur d’impulsion, ou PWM (Pulse Width Modulation). La carte fournit un signal carré dont le rapport cyclique varie entre 0 % et 100 %, avec une plage numérique typique de 0 à 255 sur les fonctions Arduino standard.

Un rapport cyclique de 0 correspond à un arrêt, tandis que 255 fournit la tension maximale disponible sur le moteur. Les valeurs intermédiaires ajustent la vitesse moyenne, en combinant des phases ON et OFF sur une période suffisamment rapide pour que le moteur réagisse comme si la tension était analogique.

Paramètres PWM sur Arduino

Sur de nombreux modèles, la fréquence PWM par défaut se situe dans les quelques kilohertz. Pour des boucles de contrôle de courant, une fréquence de 10 kHz reste typique. La boucle de régulation de vitesse, elle, se met souvent à jour entre 100 Hz et 1000 Hz, selon la précision recherchée et les contraintes de calcul.

Pour mesurer une grandeur analogique associée au moteur, comme la tension sur un shunt de courant ou un potentiomètre de consigne, l’entrée analogique de l’Arduino propose une plage de 0 à 1023. Un simple mappage convertit cette valeur en rapport cyclique PWM ou en consigne de vitesse.

Astuce de codage : l’usage de la fonction map() ou d’un calcul direct pwm = (val_analog * 255) / 1023 permet d’ajuster rapidement la vitesse via un potentiomètre. Le guide dédié au PWM sur Arduino va plus loin sur la fréquence et la résolution.

Découplage entre contrôle de courant et contrôle de vitesse

Dans une architecture plus évoluée, deux boucles distinctes coexistent :

  • Une boucle de courant, rapide, aux alentours de 10 kHz, assure la limitation de courant pour protéger le driver et le moteur.
  • Une boucle de vitesse, plus lente, entre 100 Hz et 1000 Hz, ajuste la consigne PWM pour maintenir la rotation souhaitée malgré les variations de charge.

Ce découplage renforce la stabilité du système, en laissant la boucle rapide traiter les événements violents (démarrage, blocage furtif), tandis que la boucle lente s’occupe de la régulation fine de la vitesse. L’Arduino, même limité en ressources, gère ce schéma avec des interruptions bien configurées et une logique structurée.

Sens de rotation, pont en H et freinage

Pour inverser le sens de rotation, un simple transistor ne suffit pas. Le pont en H s’impose. Ce montage regroupe quatre interrupteurs électroniques qui permettent de faire circuler le courant dans un sens ou dans l’autre à travers le moteur.

Les drivers classiques s’articulent autour de ce principe et exposent deux broches de commande de sens (IN1, IN2) et une entrée PWM (EN). En activant l’un ou l’autre des sens avec un signal PWM, le moteur tourne dans un sens ou dans l’autre avec une vitesse régulée. Une configuration à niveaux logiques constants sur les deux entrées permet aussi de mettre le moteur en roue libre ou en freinage électronique.

Stratégies de freinage moteur

Plusieurs modes de freinage existent :

  • Roue libre : les sorties du pont en H sont laissées flottantes ou en haute impédance, le moteur décélère sous l’effet des frottements.
  • Freinage dynamique : les deux bornes du moteur sont reliées ensemble, le moteur se comporte comme un générateur court-circuité et s’arrête plus rapidement.
  • Freinage contrôlé : un PWM particulier applique un couple inverse limité, pour un arrêt plus progressif ou un repositionnement précis.

Le choix du mode de freinage dépend du type de projet. Un petit robot autonome préfère souvent la roue libre pour limiter la consommation et préserver la mécanique, tandis qu’un système de levage optera pour un freinage plus marqué afin d’éviter des mouvements imprévus.

Mesure de courant, de vitesse et rétroaction

Pour un pilotage réellement maîtrisé, l’Arduino ne se contente pas d’envoyer des consignes. Il mesure et ajuste. La mise en œuvre d’une boucle de rétroaction repose sur quelques capteurs simples :

  • Shunt de courant pour suivre l’intensité consommée
  • Capteur de courant Hall isolé pour les courants élevés
  • Encodeur incrémental ou capteur à effet Hall sur l’axe pour mesurer la vitesse

La lecture régulière de ces grandeurs permet un pilotage plus robuste, notamment en présence de variations de charge ou de frottement. L’Arduino ajuste alors le duty cycle PWM pour maintenir une vitesse cible, ou limite le courant en cas de surcharge.

« Un moteur piloté en boucle ouverte tourne, un moteur piloté en boucle fermée travaille vraiment pour l’application. La différence se voit dès que la charge varie ou que le couple résistant augmente. »

Pilotage en courant et en couple

Pour certains usages, le courant devient la grandeur prioritaire. Comme le couple du moteur DC est proportionnel au courant, la régulation de courant permet d’approcher une régulation de couple. Cette approche intervient, par exemple, dans :

  • Les systèmes de traction où l’adhérence varie (robot, véhicule autonome).
  • Les mécanismes de serrage où l’effort doit rester limité.
  • Les bancs de test où l’on simule une charge mécanique prédéfinie.

L’Arduino, couplé à un driver prévu pour la mesure de courant, ajuste le PWM pour plafonner la valeur mesurée. Un filtrage numérique et une fréquence de boucle suffisante (proche de 10 kHz) stabilisent ce contrôle.

Rendement, échauffement et sécurité du montage

Sur un moteur DC, le rendement réel dépend de la qualité du driver, de la section des câbles et du type d’alimentation. Un rendement moteur autour de 70 % reste courant à une tension optimale de 7,2 V et un courant de 0,8 A, en supposant un câblage propre et un driver adapté.

ArduinoPiloter un relais 230 V avec Arduino en sécurité : 5 erreurs à éviter

Des pertes supplémentaires apparaissent dans le driver, surtout si celui-ci utilise des transistors bipolaires avec une chute de tension marquée. Les drivers MOSFET récents limitent ces pertes, ce qui réduit l’échauffement et améliore l’autonomie des montages sur batterie.

Gestion thermique et protections

Une conception soignée pense aux protections :

  • Radiateur sur le driver lorsque le courant frôle la limite nominale.
  • Fusible ou disjoncteur électronique sur la ligne moteur.
  • Coupure d’urgence via un bouton ou une entrée spécifique de l’Arduino.
  • Surveillance de la température des composants les plus sollicités.

Les shields multicanaux annoncent parfois 18 A par canal. Cette valeur suppose un refroidissement correct, un câblage généreux et un montage étudié pour supporter une telle intensité. Un robot lourd ou un rover motorisé profite directement de ces capacités, mais requiert une approche rigoureuse en matière de sécurité.

Point de vigilance : lorsqu’un moteur reste bloqué mécaniquement, le courant grimpe immédiatement vers la valeur de pointe, jusqu’à 2 A voire plus selon le modèle. Une surveillance logicielle avec arrêt automatique au-delà d’un seuil se révèle précieuse pour protéger le driver et l’alimentation.

Choix du moteur DC et adéquation avec l’application

Le choix du moteur ne se résume pas à une simple question de tension. La combinaison couple, vitesse, rendement et dimensions influence directement la pertinence du montage. Un moteur rapide mais peu coupleux conviendra à un ventilateur ou à une hélice, alors qu’un moteur plus lent, associé à un réducteur, gérera mieux un robot ou un bras articulé.

En pratique, un moteur présentant un courant nominal entre 0,6 et 1 A et une tension d’alimentation autour de 7,2 V convient à une large palette de projets de robotique légère. Une alimentation capable de fournir au moins le double de ce courant en pointe garantit un comportement stable au démarrage.

Moteur DC vs moteur pas à pas

Face à un moteur pas à pas, le moteur DC se distingue par :

  • Un rapport poids/puissance souvent 5 fois meilleur, utile pour la mobilité.
  • Une consommation quasi nulle à l’arrêt, avantageuse pour les systèmes sur batterie.
  • Une réactivité agréable, avec une gestion fine de la vitesse par PWM.

Le moteur pas à pas garde un intérêt pour le positionnement très précis à basse vitesse, mais un moteur DC, éventuellement associé à un encodeur, prend une place solide pour la plupart des projets dynamiques. Un guide dédié au moteur DC avec Arduino aide à approfondir les aspects spécifiques du dimensionnement et des stratégies de contrôle.

« Dans bien des projets de robotique amateur, un moteur DC bien piloté remplace avantageusement un pas à pas, en offrant un meilleur rapport couple/masse et une consommation plus maîtrisée en mouvement comme à l’arrêt. »

Câblage type d’un moteur DC avec Arduino

Un schéma type de connexion rassemble :

  • L’Arduino, qui fournit les signaux de commande (PWM + sens).
  • Le driver, alimenté par une tension adaptée au moteur (4,3 à 36 V selon le module).
  • Le moteur DC, branché sur les sorties du driver.
  • Une alimentation externe pour le moteur, parfois commune avec celle du driver.

La masse de l’Arduino et celle du driver doivent être reliées. Les lignes d’alimentation moteur bénéficient de condensateurs électrolytiques de capacité suffisante, placés proche du driver, afin d’amortir les pointes de courant et les chutes de tension brèves.

Conseil de montage : guetter les signes de perturbations (clignotement de la LED de reset, reboot spontané de l’Arduino) permet de détecter un câblage d’alimentation insuffisant. Dans ce cas, améliorer le découplage et séparer plus nettement les masses de puissance et de logique.

Architecture logicielle du pilotage moteur

Sur le plan logiciel, un pilotage moteur structuré repose sur quelques briques :

  • Une couche bas niveau pour gérer les broches, la PWM et le sens.
  • Une couche de service pour traduire une consigne de vitesse en rapport cyclique.
  • Une éventuelle couche de régulation pour ajuster la vitesse ou le courant.

Cette organisation simplifie la maintenance et l’évolution du code. Ajouter un second moteur ou passer à un driver plus puissant ne impose pas une réécriture complète. Seule la couche la plus proche du matériel évolue.

Gestion multi-moteurs et shields 18 A

Les shields multicanaux supportant jusqu’à 18 A par canal permettent d’envisager des architectures plus lourdes : robot d’exploration, véhicule autonome de gabarit intermédiaire, convoyeur multi-axes. L’Arduino pilote alors plusieurs canaux PWM, parfois complétés par un microcontrôleur additionnel ou un bus de communication avec un contrôleur de moteurs dédié.

Dans ce contexte, le code gagne à être modulable. Chaque moteur se voit attribuer une structure de données qui regroupe la consigne de vitesse, l’état de rotation, les mesures de courant et de température. Un système d’événements gère les dépassements de seuil, les blocages mécaniques et les arrêts d’urgence.

Limites, contraintes et bonnes pratiques

Un montage Arduino + moteur DC offre une bonne flexibilité, mais certaines limites méritent une attention particulière :

  • Limite de courant des drivers, à respecter strictement.
  • Capacité de calcul de l’Arduino pour des boucles de régulation rapides.
  • Qualité de l’alimentation en environnement perturbé (atelier, robot extérieur).
  • Gestion logicielle des erreurs et des défauts (blocage, surchauffe, etc.).

Un projet conçu en pensant à ces contraintes dès le départ atteint un fonctionnement stable sans ajustements incessants. Un calibrage méthodique, quelques mesures de courant et de vitesse, puis une validation sous différentes charges rassurent sur la robustesse globale du système.

Limite d’utilisation à garder en tête : la carte Arduino ne remplace pas un variateur industriel pour les grosses puissances. Au-delà de quelques dizaines de watts et de courants proches de 5 A ou plus, des solutions dédiées, dotées de protections avancées, deviennent plus adaptées, quitte à les piloter par Arduino via une liaison série ou un bus de terrain.

Donnez votre avis

Soyez le 1er à noter cet article


Partagez cet article maintenant !


Ça ne règle pas votre cas ?

Décrivez la panne sur le forum, avec une photo si vous pouvez : les membres qui ont eu la même répondent, et le sujet reste pour les suivants.

Avatar photoAvatar photoAvatar photoAvatar photoAvatar photoRejoindre les 54 membres — gratuit, 44 pannes résolues

Dans le même tiroir

La lettre du club

Une lettre par mois, accrochée au panneau

Les sujets du forum résolus dans le mois, un guide, un chiffre qu’on peut vérifier chez soi. Rien d’autre, jamais plus souvent — et on se désabonne d’un clic.

Ce qu’il y a dedans

Votre adresse

Une lettre par mois. Désabonnement en un clic.