logo sheen.bot

Perspectives

Pourquoi votre robot à deux roues ne roule pas droit

20 août 2026·Sheen Robotics
Pourquoi votre robot à deux roues ne roule pas droit

Deux moteurs identiques ne tournent pas à la même vitesse. Voici pourquoi les corrections de puissance codées en dur échouent et comment utiliser des encodeurs de roue pour tenir vraiment la ligne droite.

Lorsque vous envoyez un signal à 100 % de rapport cyclique à deux moteurs à courant continu identiques sur un robot à entraînement différentiel, le robot part presque toujours en courbe vers la gauche ou vers la droite. Cela tient au fait que deux moteurs à courant continu produits en série ne sont jamais identiques, ni électriquement ni mécaniquement : de petits écarts de frottement interne, de force magnétique et d'adhérence des roues produisent des vitesses de rotation différentes pour exactement la même entrée électrique.

En classe ou en atelier de compétition, cette dérive est l'un des premiers obstacles frustrants que rencontrent les élèves. Comprendre pourquoi elle se produit — et pourquoi les bricolages logiciels rapides ne la résolvent pas — est le pont entre la robotique-jouet et l'ingénierie véritable.

Anatomie de la dispersion des moteurs

Les petits motoréducteurs à courant continu, en particulier les moteurs de loisir à carter jaune répandus dans les kits éducatifs, sont fabriqués avec des tolérances larges. Plusieurs différences microscopiques garantissent que le moteur A se comportera autrement que le moteur B :

  • Bobinage et résistance interne : le fil de cuivre enroulé autour de l'induit varie légèrement en longueur et en tension, créant de petits écarts de résistance et de force contre-électromotrice (FCEM).
  • Force des aimants permanents : les aimants en ferrite frittée présentent de petites variations de densité de flux magnétique, ce qui modifie le couple délivré.
  • Frottement des balais : les balais mécaniques appuient sur le collecteur avec une tension de ressort variable, ce qui ajoute un frein irrégulier.
  • Tolérances du réducteur : les réducteurs à engrenages droits multi-étages fixés à ces moteurs connaissent des niveaux de frottement variables selon la régularité du profil des dents, l'alignement des arbres et la répartition du lubrifiant interne.

Même en dehors du moteur, des facteurs mécaniques aggravent le problème. Si un pneu en caoutchouc est enfoncé 0,5 mm plus loin sur une jante, son rayon de roulement effectif change. Si le pack de batteries du robot est décalé de 10 mm à gauche de l'axe médian, la roue gauche subit une force normale plus élevée et une résistance au roulement plus forte. Résultat : une base roulante asymétrique.

Pourquoi les « corrections » codées en dur échouent toujours

La réaction intuitive de l'élève est d'équilibrer les moteurs à la main dans le code :

// La solution de contournement classique du débutant
motorLeft.setSpeed(255);
motorRight.setSpeed(238); // on réduit le moteur le plus rapide

C'est ce qu'on appelle la commande en boucle ouverte : on envoie une consigne en supposant que le résultat réel correspond à la demande, sans vérifier. Une correction manuelle peut faire rouler le robot droit sur trois mètres, sur un sol en linoléum lisse et avec des piles neuves, mais elle s'effondre immanquablement en conditions réelles :

  • Courbes de décharge des batteries : à mesure que la tension chute au fil d'un cours de 45 minutes, les moteurs à courant continu ne perdent pas de la vitesse de façon linéaire. Une correction calibrée à 8,2 V tirera d'un côté dès que le pack descendra à 7,4 V.
  • Changements de frottement du sol : passer d'un carrelage de salle lisse à une moquette rase de bureau modifie la résistance au roulement de manière inégale sur les deux pneus.
  • Effets thermiques : quand les réducteurs et les bobinages chauffent en fonctionnement continu, le frottement interne diminue, ce qui déplace le rapport de vitesse entre les deux côtés.

La solution : la boucle fermée avec des encodeurs

Pour qu'un robot roule droit quels que soient la tension de la batterie ou la texture du sol, le microcontrôleur doit mesurer en temps réel ce que font réellement les roues. Cela suppose une commande en boucle fermée.

Le moyen le plus simple d'y parvenir est l'encodeur rotatif de roue. Un encodeur se compose d'un capteur (généralement une fourche optique ou un capteur magnétique à effet Hall) et d'un élément tournant fixé à l'arbre moteur ou à la roue (un disque à fentes ou une bague magnétique multipôle). À chaque rotation de la roue, le capteur émet des impulsions.

Approche de commandeMécanismeComportement à batterie faibleComportement sur un nouveau sol
Boucle ouverte (PWM fixe)Suppose des moteurs identiquesDérive de façon imprévisibleDérive de façon imprévisible
Boucle ouverte (correction codée en dur)Décale manuellement un moteurPerd son calibragePerd son calibrage
Boucle fermée (retour d'encodeur)Ajuste dynamiquement la puissance à partir des tops de roue mesurésConserve un cap rectiligneConserve un cap rectiligne

Mettre en œuvre une commande proportionnelle de vitesse

Nul besoin d'un bagage avancé en analyse pour implémenter un régulateur en boucle fermée qui fonctionne. Une simple boucle de commande proportionnelle (P) exécutée toutes les 50 à 100 millisecondes suffit pour la robotique scolaire.

Au lieu de commander une puissance moteur brute, votre programme mesure les rotations des roues sur un intervalle de temps fixe et ajuste la puissance pour annuler l'écart :

  1. Comptez les impulsions d'encodeur des deux roues sur une fenêtre fixe (par exemple, toutes les 50 ms).
  2. Calculez l'erreur : error = leftTicks - rightTicks.
  3. Si error > 0, la roue gauche tourne plus vite que la roue droite. Diminuez légèrement le PWM du moteur gauche, augmentez légèrement celui du moteur droit, ou appliquez un facteur de correction proportionnel à l'amplitude de l'erreur : correction = error * Kp (où Kp est un gain à régler).
  4. Remettez les compteurs d'impulsions à zéro et recommencez.

Si vous construisez votre propre programme de classe ou choisissez des plateformes matérielles, opter pour des kits dotés de microcontrôleurs capables de gérer les interruptions matérielles et d'encodeurs magnétiques intégrés — comme les écosystèmes modulaires pris en charge sur des plateformes telles que Sheen Canvas ou les plateformes de robotique regroupées sous Infinity — épargne des dizaines d'heures de frustration aux élèves. Cela déplace l'apprentissage : on ne se bat plus contre des défauts mécaniques, on maîtrise le retour capteur et la théorie de la commande.

L'essentiel

Les imperfections mécaniques ne sont pas des défauts à masquer avec des pansements logiciels provisoires ; elles sont la réalité fondamentale de l'informatique physique. Apprendre aux élèves à mesurer la sortie réelle des moteurs avec des encodeurs et des algorithmes en boucle fermée transforme une source courante de frustration en atelier en une leçon accessible et concrète sur les systèmes de commande du monde réel.

#robotique#moteurs#régulation pid#enseignement des sciences#électronique

Plus de Perspectives