Tutoriel · Débutant · 18 min de lecture
Commander des moteurs CC avec PWM et pont en H
Apprenez à commander un moteur CC à balais avec PWM et un pont en H, y compris sens, freinage, limites de courant, câblage et choix sûr du pilote.
Une broche de microcontrôleur peut décrire comment un moteur doit bouger, mais elle ne peut pas fournir le courant moteur en sécurité. Un moteur à courant continu (CC) à balais peut appeler plusieurs fois son courant normal au démarrage ou à l’arrêt bloqué. Un pilote à pont en H s’intercale entre le contrôleur et le moteur, commute ce courant depuis une alimentation séparée, et laisse le contrôleur choisir vitesse et sens.
Ce tutoriel construit l’étage moteur utilisé par les suiveurs de ligne, les robots de labyrinthe et les petites plateformes d’évitement d’obstacles. Les noms exacts des broches varient selon le pilote, mais les décisions électriques restent les mêmes.
Comprendre ce que change le pont en H
Un moteur CC s’inverse quand le courant qui le traverse s’inverse. Un pont en H utilise quatre interrupteurs électroniques autour du moteur. Une paire diagonale fait passer le courant en avant ; l’autre en arrière. Les cartes pilotes exposent cette commutation via des broches logiques comme IN1 et IN2 :
| IN1 | IN2 | État moteur |
|---|---|---|
| Bas | Bas | Roue libre ou frein, selon le pilote |
| Haut | Bas | Avant |
| Bas | Haut | Arrière |
| Haut | Haut | Frein ou roue libre, selon le pilote |
Ne supposez jamais ce que signifient les deux états bas et haut. Lisez la table de vérité du pilote précis. Certaines puces possèdent aussi une broche ENABLE, STANDBY ou SLEEP à activer avant que les sorties fonctionnent.
La modulation de largeur d’impulsion (PWM) règle la tension moyenne en commutant rapidement la commande. Un rapport cyclique de 25 % signifie alimenté pendant un quart de chaque période ; cela ne garantit pas un quart de la vitesse d’arbre, car le résultat dépend aussi de la charge, de la tension d’alimentation, des frottements et de la force contre-électromotrice du moteur.
Choisir le pilote d’après le courant, pas la taille du moteur
Retrouvez la tension nominale du moteur, son courant à vide et son courant de blocage. Le courant de blocage est la valeur importante pour dimensionner le pilote, car c’est ce que le moteur demande quand l’arbre ne peut pas tourner. Si la fiche technique est indisponible, mesurez la résistance d’enroulement moteur déconnecté et estimez courant de blocage = tension d'alimentation / résistance d'enroulement. La résistance des cordons de mesure rend ceci approximatif.
Choisissez un pilote dont la plage de tension moteur inclut l’alimentation et dont le courant de pointe survit au démarrage. Vérifiez ensuite le courant continu et les conditions thermiques. Une carte annoncée avec un grand nombre de pointe peut ne le tenir que brièvement ou avec un refroidissement important.
Tenez compte aussi de la chute de tension. Les pilotes anciens à transistors bipolaires peuvent perdre une tension importante dans le pont ; les pilotes modernes à MOSFET gaspillent généralement moins de puissance. Pour un robot sur batterie, cette différence joue sur le couple et l’autonomie.
Câbler un moteur en sécurité
Suivez cet ordre avant de mettre sous tension :
- Connectez l’alimentation moteur à l’entrée de puissance du pilote et à la masse.
- Connectez le moteur aux deux sorties du pilote, pas à une broche du microcontrôleur.
- Reliez la masse du contrôleur à celle du pilote pour partager la référence des signaux logiques.
- Connectez
IN1,IN2et toute broche d’activation à des broches numériques adaptées. - Gardez le câblage moteur court et éloigné des fils de capteurs analogiques.
- Vérifiez les exigences en tension logique du pilote avant de connecter un ESP32 ou un Raspberry Pi en 3,3 V.
Utilisez un fusible ou une alimentation d’établi limitée en courant à la première mise sous tension. Ajoutez le découplage local recommandé par la fiche technique du pilote. N’alimentez jamais un moteur en charge via le régulateur 5 V de l’Arduino ou le connecteur USB — c’est le brunissement qui ressemble à un plantage logiciel.
Écrire une petite fonction moteur
L’interface la plus propre accepte une commande signée : positive en avant, négative en arrière, zéro à l’arrêt. Sur une carte de style Arduino, une implémentation minimale ressemble à ceci :
const int IN1 = 7;
const int IN2 = 8;
const int PWM_PIN = 5;
void setMotor(int command) {
command = constrain(command, -255, 255);
digitalWrite(IN1, command >= 0 ? HIGH : LOW);
digitalWrite(IN2, command >= 0 ? LOW : HIGH);
analogWrite(PWM_PIN, abs(command));
}
Cet exemple suppose un pilote avec une entrée PWM/activation séparée. Un pilote à deux entrées peut attendre la PWM sur une entrée pendant que l’autre maintient l’état de direction. Suivez sa table de vérité plutôt que de copier aveuglément la logique des broches.
En inversion, passez brièvement par zéro avant de changer de sens. Une inversion instantanée à pleine vitesse produit un fort transitoire de courant et un choc mécanique. Une simple rampe améliore aussi la traction :
for (int command = 0; command <= 180; command += 5) {
setMotor(command);
delay(15);
}
Dans une vraie boucle de commande, rendez cette rampe temporelle au lieu d’utiliser des appels bloquants à delay().
Tester sens, vitesse, roue libre et frein
Soulevez les roues de la table pour le premier essai. Commencez avec un faible rapport cyclique, vérifiez le sens commandé, puis augmentez progressivement. Notez la commande la plus basse qui démarre le moteur de façon fiable. Le frottement statique crée une zone morte, donc les commandes sous ce seuil peuvent bourdonner sans bouger.
Ensuite, comparez les modes d’arrêt. La roue libre déconnecte ou relâche le pont et laisse l’élan ralentir le moteur. Le freinage dynamique court-circuite les bornes du moteur via le pont pour que le moteur en rotation dissipe son énergie et s’arrête plus vite. Le freinage produit plus de contraintes électriques et mécaniques, utilisez-le à dessein.
Enfin, posez le robot au sol et recommencez. Un moteur qui tourne à vide peut faire chuter l’alimentation du contrôleur en charge réelle. Surveillez la tension d’alimentation au démarrage et vérifiez que le pilote ne surchauffe pas.
Diagnostiquer les pannes courantes
- Le contrôleur redémarre au démarrage du moteur : l’alimentation s’affaisse ou le bruit moteur atteint le rail logique. Prévoyez une batterie au courant suffisant, un découplage local, une masse propre, et une régulation séparée pour la logique si besoin.
- Le moteur ne tourne que dans un sens : vérifiez les deux entrées logiques au pilote et confirmez que la mise en veille ou l’activation est bien assurée.
- La vitesse varie à peine avec la PWM : vérifiez que la broche choisie supporte vraiment la PWM et que le pilote accepte la PWM sur cette entrée.
- Le pilote chauffe : comparez charge et courant de blocage avec le calibre continu, vérifiez la chute de tension, et cherchez une transmission mécaniquement bloquée.
- Les capteurs deviennent bruités : séparez câblages moteur et capteur, ajoutez l’antiparasitage recommandé par le fabricant du moteur/pilote, et ne filtrez les mesures qu’après avoir corrigé le chemin électrique.
Une fois qu’un moteur fonctionne de façon prévisible, dupliquez le canal pour un robot à propulsion différentielle. Le simulateur de suiveur de ligne montre comment deux commandes de roues signées deviennent un braquage, tandis que le simulateur de contrôleur PID montre comment la rétroaction peut réguler la vitesse au lieu de s’en remettre au rapport cyclique brut.
Garder les réglages matériels en logiciel
Deux moteurs nominalement identiques produisent rarement la même vitesse. Conservez un facteur d’échelle par roue et la commande minimale de démarrage dans le logiciel. Mesurez plutôt que de masquer l’écart avec un décalage fixe inexpliqué. Plus tard, des encodeurs en quadrature pourront boucler et corriger la vitesse quand la tension batterie et la charge changent.
Explorer le graphe
Fait partie de ces réalisations
Les projets et parcours d'apprentissage qui incluent ce tutoriel.
- ProjetConstruire un robot éviteur d'obstacles : capter, balayer
- ProjetConstruire un robot piloté au téléphone en Bluetooth ou Wi-Fi
- ProjetConstruire un robot suiveur de ligne avec un microcontrôleur 8051
- ProjetConstruire un suiveur de ligne : du simulateur à la piste
- Parcours d'apprentissageCommande des moteurs pour robots : un parcours d'apprentissage
Pour aller plus loin