mardi 25 septembre 2007

Cours et méthode. Leçon n°4: L'électronique Lego(première partie)

Allez hop, cette semaine, la première partie d'un loooong chapitre :o, sur l'électronique dans la brique :o
Pas de Nxt au programme, juste du RCX :o

4 L'électronique Lego

4.1 La brique RCX
Le RCX est le cerveau de votre robot, un petit ordinateur en forme de brique Lego. Au coeur du RCX il y a un microcontrôleur Hitachi H8 de technologie 8 bits, avec une fréquence de 16 MHz et 32Ko de RAM. Cela peut sembler anémique si on le compare aux ordinateurs de bureau modernes avec des microprocesseurs 32 ou 64 bits à 2/3GHz et 2048 Mo de mémoire, mais c’est aussi puissant que l’Apple II et significativement plus puissant que les ordinateurs qui ont envoyé l’homme sur la lune.

Le microcontrôleur est employé dans la gestion des trois sorties moteurs, des trois entrées détecteurs et du port de communication infrarouge. Les câbles électriques sont utilisés
pour relier le RCX aux moteurs, lampes, détecteur de contact, de lumière, de rotation, etc. Le port de communication est utilisé pour charger les programmes en provenance du PC et peut servir à la communication entre deux RCX.

Le RCX est alimenté par 6 piles AA. Les versions plus anciennes possédaient aussi une prise 9V pour y brancher un transformateur adaptateur électrique optionnel. Si vous avez ce type de RCX, le transformateur est vite amorti par l’économie de piles qu’il permet de faire. Un bon réflexe est d’avoir toujours un jeu de piles rechargeables d’avance. Les piles alcalines rechargeables fonctionnent bien avec le RCX(Les accumulateurs NiMH fontionnent également, mais la puissance disponible sur les moteurs est limitée par la tension plus faible.).

Note de montage : En construisant votre robot, rappelez-vous que vous devrez parfois changer les piles. Tenez-en compte dans sa conception.

Illustration 4-1. La brique programmable RCX

4.1.1 Le microprogramme
Le RCX possède une mémoire RAM de 32Ko. La majorité de cette mémoire est utilisée par le microprogramme(Le microprogramme (firmware en anglais) assure plusieurs fonctions : interprétation du langage intermédiaire du RCX, pilotage des moteurs et détecteurs, gestion de l’afficheur et des boutons, téléchargement des programmes par le port infrarouge) que vous devez charger avant de pouvoir exécuter un programme. La mémoire restante (environ 6Ko) est réservée aux téléchargements de 5 programmes au maximum. Ceci peut sembler faible, mais en réalité la plupart des programmes RCX ne dépassent pas les quelques centaines d’octets. Le reste de la mémoire sert au déroulement des programmes.

Quand on écrit un programme pour le RCX, il n’est pas constitué de code machine. Il s’agit de codes formant un langage intermédiaire qui va être interprété par le microprogramme. C’est similaire à ce qu’il se passe avec les programmes en Java sur le web qui sont interprétés par la machine virtuelle Java qui fonctionne à travers votre navigateur. L’utilisation d’un langage intermédiaire permet au RCX d’avoir un environnement fiable pour l’exécution des programmes. Votre programme ne correspondra peut-être pas à votre attente mais au moins il ne plantera pas le RCX.

Comme le microprogramme est implanté en RAM, il s’efface si le RCX est privé de ses
piles plus de quelques instants. Un condensateur dans le RCX augmente ce délai afin que
vous ayez le temps de changer les piles (15 à 30 secondes),faites attention lors du changement de piles de ne pas appuyer sur le bouton On/Off du RCX, ce serait l’effacement assuré. Si après avoir changé les piles votre RCX ne fonctionne pas normalement, il se peut que vous le microprogramme ait été effacé. Vous pouvez le vérifier en examinant l’affichage du RCX. Si vous voyez seulement le numéro de programme et la silhouette de la minifig (immobile ou marchant
comme sur l’Illustration 4-1), alors le microprogramme n’est pas chargé. C’est d’ailleurs ainsi que vous trouverez votre RCX quand vous recevrez votre kit RIS.

Note de montage : A partir du moment où le RCX est allumé, le RCX reçoit tous les messages parvenant à son port de communication infrarouge. Il y a beaucoup d’animation lors d’un concours et il est possible qu’une autre équipe puisse par mégarde effacer les programmes sauvegardés dans votre propre RCX. Vous devez faire attention à abriter le port infrarouge quand vous ne l’utilisez pas.

4.1.2 La programmation
Le RCX est programmé grâce à un logiciel spécifique que vous avez préalablement installé sur votre PC. Le programme est traduit en code pour la transmission passage par le port infrarouge (à l’aide de la tour IR). Cette méthode de programmation – écrire le code sur un type d’ordinateur pour le faire tourner sur un autre type d’ordinateur - s’appelle du développement croisé. Un ordinateur sans clavier ni écran, comme le RCX, s’appelle un système embarqué. Cela signifie que tous les participants à la FLL sont des développeurs de systèmes embarqués, familier d’outils de développement croisé. C’est quelque chose d’impressionnant à mettre sur votre CV!

Les programmes peuvent être écrits en utilisant soit le langage RCX soit ROBOLAB(Le code RCX et Robolab sont les seuls langages de programmation admis par la FLL, mais beaucoup
d’autres sont disponibles (NQC, BrickOS, LeJOS, pbForth…). Voir http://bricxcc.sourceforge.net/ ). Le langage RCX est un outil de programmation graphique fourni par Lego avec le kit RIS. Il est conçu pour les gens qui n’ont pas d’expérience en programmation. Le programme est écrit en choisissant des blocs d’instructions et en les accolant, un peu comme de vraies briques Lego La version initiale du langage RCX (v1.0 et 1.5) était très limitée. De nombreuses instructions pourtant interprétables par le microprogramme étaient absentes et la gestion des variables était minimale. Si vous souhaitez utiliser le langage RCX, assurez-vous d’avoir la version 2.0. Le langage RCX est disponible uniquement pour PC.

Illustration 4-2. Copie d'écran du langage RCX.

ROBOLAB est un produit Lego DACTA, la branche éducation de Lego. Il est basé sur LabVIEW, un environnement de programmation graphique qui est utilisé par des ingénieurs et scientifiques pour des opérations de mesure et de contrôle. Les ingénieurs de la NASA ont utilisé LabVIEW pour piloter le rover Sojourner sur Mars ! Tout comme le langage RCX, ROBOLAB utilise des métaphores graphiques pour écrire les programmes. Les icônes des commandes sont choisies dans une liste et placées sur l’espace de programmation. Les commandes sont alors reliées ensemble, indiquant le déroulement du programme.

Illustration 4-3. Copie d'écran de ROBOLAB

ROBOLAB est un outil plus puissant que le langage RCX, mais toutes ses capacités ne sont pas tournées vers la programmation de robots. Une large partie de sa fonction consiste à piloter le RCX en tant qu’instrument de mesure de laboratoire. Vous pouvez écrire un programme qui tourne sur le PC mais qui collecte les valeurs des détecteurs reliés au RCX. D’autres outils ROBOLAB sont disponibles pour recueillir et analyser les données. Il y a même des outils pour publier les mesures ou les convertir en page web. Il vous faudra beaucoup de temps pour exploiter toutes les possibilités de ROBOLAB.

Programmer avec le langage RCX ou ROBOLAB est sensiblement la même chose. Le programmeur utilise la souris pour sélectionner une commande dans une liste d’icônes
qui représentent les instructions du programme. L’icône choisie est placée dans l’espace de travail. Une sorte de connexion graphique métaphorique est utilisée pour définir le déroulement du programme (que ce soit l’empilement pour le langage RCX ou des câbles pour ROBOLAB). Quand le programmeur en a terminé avec les instructions, il ou elle utilise le menu ou la barre d’outils pour compiler le programme et le télécharger dans le RCX.

Si vous utilisez un Mac, vous utiliserez forcément ROBOLAB. Sinon le choix est surtout question de goût. Une analyse attentive des résultats des compétitions FLL qui se sont déroulées dans le Minnesota ne montre aucune corrélation entre les équipes gagnantes et le langage de programmation choisi.

4.2 Moteurs
Le moteur qui est utilisé dans le kit défi est un moteur 9 volt avec réducteur. Il possède un train d’engrenage réducteur interne de rapport 12:1. Il convertit une rotation de 4200 tr/min en une vitesse plus facilement exploitable de 350 tr/min(La vitesse typique sous charge est plus proche de 200 tr/min) sur l’arbre de sortie. Le réducteur interne augmente aussi le couple à 8.9 N.cm.

Illustration 4-4. moto-réducteur 9 Volt

Le moteur sans charge consomme normalement environ 10 milliampères (mA). Cela peut rapidement atteindre 200 mA ou plus s’il est très sollicité. Ajoutez les détecteurs qui consomment de l’électricité (détecteur de lumière et rotation), l’affichage LCD, le microcontrôleur, et vous voyez qu’un robot FLL typique consomme 600 – 700 milliampères. En s’appuyant sur des piles de bonne qualité de 2500 milliampère.heure (mAh), vous pouvez vous attendre à devoir les changer après 3-4 heures de marche.

4.2.1 Les modes
Le RCX possède trois modes de contrôle des moteurs—Arrêt, Marche et Flottant. En mode Flottant, le moteur n’est pas entraîné et peut tourner librement. Il se comporte simplement comme s’il était déconnecté.

En mode Arrêt, le RCX court-circuite en interne le connecteur de sortie. Cela donne un effet de freinage au moteur qui lui est connecté, le forçant rapidement à s’arrêter de tourner.

En mode Marche, le RCX envoie au moteur une tension +9V ou -9V pour le faire tourner dans le sens des aiguilles d’une montre ou en sens inverse. Une modulation de largeur d’impulsions (PWM) permet de fournir 8 niveaux d’alimentation.

Illustraion 4-5. Pulsations modulées

La modulation de largeur d’impulsions est une manière peu onéreuse de contrôler la puissance en sortie. Au lieu de modifier le niveau de la tension de sortie (les régulateurs de tension sont chers), le RXC envoie des pics de courant vers le moteur. Les différents niveaux de puissance sont obtenus en modulant la durée de ces pics (variation du rapport cyclique,Rapport cyclique : rapport entre la durée de la phase active et la durée totale du cycle.). Sur le RCX, le réglage de puissance minimale est zéro correspondant à une modulation des pics de 12,5% (la puissance est envoyée 12,5% du temps). Au niveau 7, la puissance est fournie de manière continue (100%).

Le moteur avec réducteur est équipé d’un petit volant d’inertie qui maintient la vitesse de rotation entre les impulsions. Vous pouvez le constater en faisant tourner à la main l’axe
d’un moteur libre. L’axe fait plusieurs tours avant de ralentir doucement jusqu’à s’arrêter. Si vous continuer à le faire tourner toutes les seconde, il tournera à une vitesse relativement constante. C’est un peu une modulation de largeur d’impulsions à la mode mécanique.

Une fois que le moteur tourne, il ne faut pas beaucoup d’énergie pour maintenir sa rotation. Cela peut représenter un problème si vous utilisez des réglages de puissance faibles pour faire tourner votre moteur doucement. Si le moteur n’est pas en charge, il tourne aussi vite quel que soit le réglage de puissance. Chaque impulsion de courant fournit assez d’énergie pour palier aux pertes par frottements qui ont lieu durant le reste du cycle. L’énergie supplémentaire est emmagasinée dans le volant d’inertie. A chaque pulsation, un peu plus d’énergie s’accumule dans le volant d’inertie, augmentant la vitesse de rotation jusqu’à ce qu’un point d’équilibre soit atteint où le couple moteur commence à baisser.

Illustration 4-6. Utilisation d'une poulie pour créer de la charge

Le contrôle de la vitesse du moteur peut être obtenu en créant une charge par frottement. Après avoir fait attention à limiter les frottements tout au long de la conception de votre robot, il est temps de s’amuser un peu. Prenons la liste des bonnes pratiques de construction et violons–les les unes après les autres. Serrez les manchons contre les barres. Utilisez trois ou quatre roues dentées au lieu d’une seule. Soyez créatif mais soyez aussi sûr que les juges connaissent les raisons qui vous ont amené à faire ces modifications. Vous ne voulez pas qu’on vous pénalise pour une mauvaise conception mécanique !

4.2.2 Les branchements
On branche les moteurs sur l’une des trois sorties du RCX par l’intermédiaire d’un câble électrique équipé d’une connexion à tenons à chacune de ses extrémités. Vous pouvez
inverser le sens de rotation du moteur en modifiant l’orientation de la connexion. Si vous
avez besoin de débrancher et rebrancher un moteur durant une compétition, assurez-vous de faire les branchements toujours de la même manière. En guise de détrompeur, vous pouvez utiliser des plaques 1x2 de couleur pour marquer les connecteurs et les ports des moteurs.

Illustration 4-7. Utilisation d'un code couleur pour repérer l'orientation des branchements

Illustration 4-8. Amélioration du montage de moteurs par entrecroisement

Le kit RIS vous procure des plaques 1 x 2 avec des rails qu’on peut utiliser en guise de cornières d’assemblage pour les moteurs. Elles procurent une possibilité de montage compact et solide des moteurs sur des barres. Les rails permettent aussi de faire un assemblage des moteurs qui permet un démontage très rapide. Le moteur sur l’Illustration 4-9 est facilement enlevé après avoir ôté la plaque 2x6 du dessous qui le maintenait en place. Cela est fort utile si la conception de votre robot nécessite que vous déplaciez un moteur durant une compétition.

Illustration 4-9. Montage du moteur avec utilisation des rails

4.3 Détecteur de contact
De tous les détecteurs Lego, le détecteur de contact est le plus simple d’emploi. Il se
présente sous la forme d’une brique 2 x 3 équipé d’un bouton poussoir. Le bouton fait
varier la résistance du détecteur quand on appuie dessus. Le logiciel du RCX transforme
ce retour du capteur en un signal binaire : 0 quand le bouton est relâché, 1 quand il est
pressé.

Ce détecteur est spécial en cela qu’il n’a pas de câble relié à lui directement, contrairement aux capteurs de rotation ou de lumière. En lieu et place, il faut le relier avec un câble électrique comme on le ferait pour un moteur. Les quatre tenons proche du bouton pressoir sont des contacts que l’on doit brancher au câble électrique. L’orientation n’a pas d’importance si le câble est relié aux quatre tenons. Vous pouvez aussi brancher le câble à deux tenons seulement mais dans ce cas vous devez le brancher comme indiqué ci-dessous.

Illustration 4-10. Connecter le détecteur de contact

4.3.1 Les pare-chocs
Un pare-chocs est un mécanisme qui indique au robot qu’il a percuté un obstacle. Quand un pare-chocs est frappé, il bouge et vient presser ou relâcher le détecteur de contact, indiquant le choc au robot. Les pare-chocs sont l’utilisation principale des détecteurs de contact dans la FLL. Peut être parce que c’est le rôle premier des capteurs de contact dans la Constructopedia, ou parce que les pare-chocs sont très utiles

Illustration 4-11. Un simple pare-chocs

L’assemblage d’un pare-chocs se compose généralement de quatre parties : le pare-chocs, un détecteur, un mécanisme de retour et une structure de soutien. Le pare-chocs est la partie qui reçoit le choc et qui le convertit en déplacement qui peut être « ressenti » par le capteur. Le déplacement est souvent un glissement (Illustration 4-11) ou un pivotement (Illustration 4-12), même si j’ai déjà vu des pare-chocs intéressants faits de pièces flexibles qui se courbent. Le détecteur est d’habitude un capteur de contact mais ont peut utiliser un détecteur de rotation o de lumière.

Illustration 4-12. Un pare-chocs qui utilise un détecteur de rotation

Le mécanisme de retour amène le pare-chocs à retrouver sa position initiale après le choc, quand l’obstacle n’est plus là. Le plus commun de ces mécanismes est le ruban élastique qui maintient le pare-chocs contre une butée. La conception de certains pare-chocs utilise la gravité dans ce rôle. Le pare-chocs simplissime de l’Illustration 4-11 utilise le ressort du bouton pressoir du détecteur de contact comme mécanisme de retour. Cette conception peu fiable, génère occasionnellement un signal de collision alors qu’aucune n’a eu lieu. L’ajout d’un ruban élastique règle ce problème.

Illustration 4-13. Un pare-chocs de conception "contact normalement fermé"

La plupart des pare-chocs peuvent être classés dans deux catégories en fonction de la façon dont il gère le contrôle des chocs. Le pare-chocs de l’Illustration 4-11 est une conception dite “Contact normalement ouvert”. Quand un choc a lieu, le pare-chocs presse sur le bouton et il ferme les contacts électriques. Dans une conception “Contact normalement fermé”, le mécanisme de retour maintient le pare-chocs contre le bouton pressoir. Un choc éloigne le pare-chocs du bouton, ouvrant les contacts électriques.

Quand un pare-chocs « contact normalement ouvert » comme celui de l’Illustration 4-11 percute un obstacle, l’impact de la collision est transmis à travers le pare-chocs au détecteur de contact. Ceci affaiblit la fixation du détecteur et après quelques chocs, le détecteur peut tomber. On peut renforcer le montage, mais cela ne ferait que transmettre le choc au reste de la structure du robot.

Dans une conception « contact normalement fermé » comme sur l’Illustration 4-13, la puissance du choc est absorbée par les rubans élastiques. De plus ce pare-chocs est à longue distance. La distance est grande entre le premier contact du pare-chocs et le contact dur direct du robot avec l’obstacle. Cette distance donne du temps au robot pour s’arrêter avant un choc réel lors d’une détection d’obstacle.

Illustration 4-14. Pare-chocs "contact normalement ouvert" amélioré

Les pare-chocs « contact normalement fermé » sont efficaces dans la détection d’obstacles évitant les chocs. Mais les détecteurs en « contact normalement fermé » posent problème dans le multiplexage des détecteurs (plusieurs détecteurs sur un seul port). Un détecteur « contact normalement fermé » maintient le port à 1 (dans l’hypothèse où il est configuré en tant que port détecteur de contact) ou 100 (dans l’hypothèse où il est configuré en tant que port détecteur de lumière). Le pare-chocs amélioré ci-dessus a tous les avantages d’un « contact normalement fermé » avec une configuration « contact normalement ouvert »

4.3.2 Contacteur de butée et de position
Les capteurs de contact ont d’autres applications que celle de pare-chocs. Les contacteurs de butée et de position vous permettent de savoir quelle est la position d’un des composants de votre robot. Ce sont des détecteurs discrets (par opposition aux détecteurs continus) en cela qu’il fournisse une information de positionnement seulement en certains points. Vous connaîtrez votre position seulement quand le détecteur est pressé. Quand il ne l’est pas, vous savez seulement où vous n’êtes pas.

Illustration 4-15. Contacteur de position et de butée

Les contacteurs de butée et de position ne se différencient que dans leur utilisation. Les contacteurs de butée sont des garde-fous qui vérifient que rien ne se trouve là où il ne devrait pas. Ce sont des mécanismes de protection qui sont utilisés quand un dommage peut survenir si un dispositif se déplace en dehors de sa zone de travail. Au contraire, un contacteur de position vous signale quand un dispositif est à l’endroit où il doit se trouver.
Le chercheur de lumière de l’Illustration 4-15 a deux contacteurs de butée et un de position, tous n’employant qu’un seul détecteur de contact ! Les deux cames inférieures font office de contacteurs de butée. Elles empêchent le poursuiteur de pivoter au-delà de +/-90 degrés. La came supérieure est le contacteur de position qui indique au RCX que le détecteur de lumière est de face. Pour pouvoir interpréter correctement les indications du détecteur de contact, le programme doit soigneusement garder trace de la position du chercheur ainsi que du sens de rotation.

4.3.3 Détecteur de rotation
Le manque d’un second détecteur de rotation est peut-être la complainte que j’ai le plus souvent entendue de la part des équipes FLL. En avoir deux semble fondé ; un pour la gauche et un autre pour la droite ou bien un pour la distance et un pour la direction. D’autres équipes ont vu ce manque comme un défi et certains trouvèrent des solutions ingénieuses.

Illustration 4-16. Un détecteur de rotation par contact

Tout comme un détecteur de rotation peut être utilisé pour créer un détecteur de contact dans un pare-chocs, un détecteur de contact peut être employé pour mesurer une rotation. Dans un détecteur de rotation, les opto-interrupteurs utilisent la lumière pour contrôler la position des ailettes montées sur rotor. Sur l’Illustration 4-16, le détecteur de contact est employé pour contrôler la position du connecteur d’axe.


On fait une pause, et la semaine prochaine on r'attaque avec le détecteur de lumière :d.

Moune

Aucun commentaire: