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.
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.
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.
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.
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.
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-8. Amélioration du montage de moteurs par entrecroisement
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.
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
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.
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.
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.
On fait une pause, et la semaine prochaine on r'attaque avec le détecteur de lumière :d.
Moune
Aucun commentaire:
Enregistrer un commentaire