Outils pour utilisateurs

Outils du site


les_exposes:robot_moteur

Ceci est une ancienne révision du document !


Pourquoi le robot ne va jamais tout droit?

Qu'est ce qu'un robot? Les robots, sont essentiellement des ordinateurs munis de capteurs et d’actionneurs.

Comme un ordinateur ou un téléphone, un robot est formé d’un processeur, d’une mémoire et de périphériques. Ces derniers se divisent en périphériques de sortie, ou actionneurs, qui permettent au robot de se mouvoir et d’agir sur son environnement, et ses périphériques d’entrée, ou capteurs, qui lui permettent d’analyser cet environnement. Le robot contient une batterie rechargeable qui le rend autonome, mais il peut dialoguer avec un ordinateur par radio ou par un réseau WiFi.

Tout d'abord nous allons voir comment fonctionne un tel robot:

Pour faire tourner un moteur à une vitesse déterminée, il ne suffit pas de fixer la tension d’alimentation du moteur, car la vitesse dépend aussi de la masse du robot, de la nature du terrain sur lequel le robot se déplace, des conditions climatiques si le robot est à l’extérieur, etc. La méthode appelée contrôle en boucle fermée utilise un capteur pour mesurer la vitesse du moteur, compare cette dernière à la vitesse souhaitée et réajuste la commande du moteur en fonction de l’écart constaté : si cette vitesse est inférieure à la vitesse souhaitée, on augmente la tension d’alimentation du moteur, si elle est supérieure, on la diminue. Mesurer en permanence la vitesse des moteurs et adapter leur tension d’alimentation en fonction de l’écart, par rapport à la consigne, est le rôle du micro-contrôleur secondaire.

Pour mesurer la vitesse de la roue du robot, on utilise un capteur de vitesse formé d’un disque qui alterne des zones opaques et transparentes, fixé sur l’axe du moteur et éclairé par une source de lumière. On calcule la vitesse du moteur en comptant le nombre de fois que la lumière est occultée par unité de temps. La fréquence de ce clignotement est proportionnelle à la vitesse. On utilise donc un circuit qui convertit cette fréquence en valeur de vitesse, de façon à pouvoir la contrôler.

On programme le robot mOway en chargeant dans sa mémoire un programme, depuis un ordinateur ordinaire. Comme on l’a vu, ce programme est ensuite exécuté par le microcontrôleur principal. Ce programme doit être écrit, non en Java, mais en C.

On commence donc par écrire un programme et le compiler. On utilise pour cela l’environnement de développement MPLAB. On le transmet ensuite au robot à l’aide d’un câble USB et du programme mOwayGUI.

Pour écrire un programme, on utilise des fonctions qui interrogent les capteurs et commandent les actionneurs. Ces fonctions ne font pas partie du langage C lui-même, mais d’une extension de C fournie par le fabricant du robot.

En revenant à notre problématique: Pourquoi le robot ne va jamais tout droit?

C'est en premier lieu du au fait que les 2 moteurs ne peuvent pas être parfaitement identiques. En conséquence, l'un des deux a un peu plus de puissance que l'autre et fait dévier la trajectoire, c'est quelque chose de très très courant. La dispersion de fabrication dans les moteurs est en général assez énorme.

Il y a bien évidement une foultitude de solutions techniques, des plus simples aux plus sophistiquées :

  • Réduire la puissance d'un des moteurs en introduisant une résistance de faible valeur en série. Impossible de dire combien : il faut tâtonner. En outre la résistance doit être suffisamment solide pour ne pas brûler…
  • On peut améliorer cette solution avec un générateur de courant constant : LM117 accompagné de 2 résistances,
  • Réduire la puissance d'un moteur par PWM (c'est à dire par logiciel). Cela veut dire, qu'on coupe le courant 800 fois par seconde pendant un bref laps de temps (réglable), le moteur “manque alors un peu de puissance”. On peut ajuster cette régulation par logiciel, ou ajouter un potentiomètre de réglage qui sera pris en compte par le Picaxe. A priori, on n'est déjà plus en Flowchart, mais plutôt en BASIC.
  • Utiliser un encodeur sur chaque moteur. L'idée est de mesurer précisément la distance parcourue par chaque roue. Si on constate qu'une roue prends de l'avance, on coupe son moteur un bref instant et on recommence tant que les deux roues ne tournent pas à la même vitesse.
  • Sur les robots de haute gamme il y a des systèmes de positionnement qui contrôlent la trajectoire du robot indépendamment de la vitesse des roues, y compris si une roue patine (plateformes à inertie, accéléromètres, GPS,…). C'est hors de portée pour un débutant.
  • MAIS, d'après certaines sources, tout cela n'est pas suffisant. Il faut donner un but au robot. Aller tout droit, n'a pas de sens pour un robot. Il faut donc asservir, c'est-à-dire de mesurer l'écart entre la valeur réelle de la grandeur à asservir et la valeur de consigne que l'on désire atteindre, et de calculer la commande appropriée à appliquer à un (ou des) actionneur(s) de façon à réduire cet écart.

Vocabulaire

* Flowchart: C’est un schéma de type diagramme qui représente de façon normalisée un processus, étape par étape.

* PWM: La modulation de largeur d'impulsions (MLI ; en anglais : Pulse Width Modulation, soit PWM), est une technique couramment utilisée pour synthétiser des signaux continus à l'aide de circuits à fonctionnement tout ou rien.

* Visual Basic: Il s'agit simplement d'un langage qui permet de communiquer avec l’ordinateur et de lui demander de faire et répéter un grand nombre de fois tout ce qu’on peut faire à la main.

les_exposes/robot_moteur.1427310637.txt.gz · Dernière modification: 25/03/2015 20:10 par haber