Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
les_exposes:robot_moteur [02/03/2015 14:04] haber |
les_exposes:robot_moteur [25/03/2015 20:09] haber [En revenant à notre problématique: Pourquoi le robot ne va jamais tout droit?] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | "Pour écrire un programme, on utilise des fonctions qui interrogent les | + | ====== Pourquoi le robot ne va jamais tout droit? ====== |
- | 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. | + | |
- | Pour faire avancer le robot, on utilise la fonction | + | {{:les_exposes:foto-moway.jpg?200 |}} |
- | MOT_STR. Par exemple, l’ins- | + | |
- | truction | + | |
- | MOT_STR(50,FWD,TIME,100); | + | |
- | fait avancer le robot à la vitesse 50, en | + | |
- | marche avant, pendant 10 secondes (100 dixièmes de seconde) | + | |
- | Le troisième argu- | + | Qu'est ce qu'un robot? |
- | ment indique si l’on souhaite spécifier une durée ou une distance. Dans ce | + | Les robots, sont essentiellement des ordinateurs munis de capteurs et d’actionneurs. |
- | chapitre, nous spécifierons toujours une durée et cet argument sera | + | |
- | TIME. | + | |
- | Le quatrième argument, compris entre | + | |
- | 0 et 255, est la durée du mouve- | + | |
- | ment exprimée en dixièmes de second | + | |
- | es. | + | |
- | SOLUTION 1: On peut aussi faire avancer le | + | 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. |
- | robot pendant un temps infini en donnant, conventionnellement, la | + | 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. |
- | valeur 0 comme durée. | + | |
- | Le robot continue | + | ===== Tout d'abord nous allons voir comment fonctionne un tel robot: ===== |
- | alors son mouvement jusqu’à la fin, | + | |
- | à moins que ce mouvement ne soit | + | |
- | interrompu par l’initiation | + | |
- | d’un autre mouvement. | + | |
- | En effet, si la poursuite de l’exéc | ||
- | ution du programme | ||
- | initie un second | ||
- | mouvement, alors le premier mouv | ||
- | ement est interrompu. | ||
- | Le mouvement rectiligne est interrompu quelques fractions de | + | 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. |
- | secondes seulement après avoir été initié. Il n’est donc pas effectué. | + | |
- | SOLUTION 2: | + | 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. |
- | Si on souhaite effectuer le mouvement rectiligne en entier, avant de | + | |
- | passer à la rotation, on doit utiliser la variable | + | |
- | MOT_END | + | |
- | qui prend la | + | |
- | valeur 0 (équivalent de | + | |
- | false | + | |
- | en C) quand le robot est en mouvement et | + | |
- | la valeur 1 (équivalent de | + | |
- | true | + | |
- | en C) quand le robot est immobile. Ainsi, | + | |
- | quand on exécute l’instruction : | + | |
- | MOT_STR(50,FWD,TIME,100); | + | |
- | while(!MOT_END){} | + | |
- | MOT_ROT(25,FWD,CENTER,LEFT,ANGLE,50) | + | |
- | " | + | |
+ | 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. | ||
- | EXPLICATION DES INTERRUPTIONS: | + | 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. |
- | "A | + | |
- | LLER | + | 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. |
- | PLUS | + | |
- | LOIN | + | |
- | Les interruptions | + | |
- | Organiser un programme en une grande boucle qui teste | + | ===== En revenant à notre problématique: Pourquoi le robot ne va jamais tout droit? ===== |
- | les capteurs en permanence est possible, mais souvent | + | |
- | malcommode. On a donc introduit dans les langages de | + | |
- | programmation des outils qui | + | |
- | permettent d’exprimer la | + | |
- | même chose de manière plus simple. Le programme | + | |
- | décrit d’une part ce qu’il faut faire quand tout se passe | + | 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. |
- | normalement, par exemple avance | + | |
- | r tout droit, et d’autre | + | |
- | part des conditions qui définissent des | + | Il y a bien évidement une foultitude de solutions techniques, des plus simples aux plus sophistiquées : |
- | interruptions | + | |
- | , par | + | * 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... |
- | exemple le fait qu’un détecteur signale un obstacle, et | + | |
- | des instructions à exécuter en cas d’interruption, par | + | * On peut améliorer cette solution avec un générateur de courant constant : LM117 accompagné de 2 résistances, |
- | exemple faire tourner le robot. Ces différentes instruc- | + | |
- | tions sont ensuite traduites | + | * 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. |
- | automatiquement en un pro- | + | |
- | gramme qui, de manière répé | + | * 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. |
- | tée, interroge les capteurs | + | |
- | et, selon qu’une interruption est déclenchée ou non, exé- | + | * 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. |
- | cute une instruction ou une autre. | + | |
- | Cette manière | + | * 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. |
- | réactive | + | |
- | de programmer, permet de | + | |
- | mieux prendre en compte le | + | |
- | s aléas de l’environnement : | + | |
- | d’une exécution d’un programme à une autre, un robot | + | //**Vocabulaire** |
- | rencontre rarement deux fois la même situation et il | + | |
- | doit s’adapter s’il rencontre une tache d’huil | + | |
- | e sur le sol, | + | |
- | des obstacles nouveaux, etc." | + | * 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.// | ||
- | A FAIRE/COMPLETER/REFORMULER |