mardi 2 octobre 2007

Cours et méthode. Leçon n°4: L'électronique Lego(suite et fin)

Suite et fin du quatrième chapitre. Nous nous étions arrêté au 4.4

4.4 Le détecteur de lumière
Le détecteur de lumière se présente sous la forme d’une brique Lego 2 x 4 avec une LED (Diode Electroluminescente, DEL) rouge et d’un phototransistor. La LED rouge éclaire la zone se situant devant la brique et le phototransistor mesure l’intensité de la lumière réfléchie. Le détecteur de lumière renvoie une valeur entre 0 et 100%. La valeur la plus faible que je n’ai jamais mesuré est 20%, mesure que j’ai effectuée à minuit au milieu de mon sous-sol avec les lumières éteintes. Vous pouvez atteindre 100% en visant le soleil un jour clair ou en tenant le détecteur à quelques cm d’une ampoule de 100W. Dans des conditions plus classiques, les valeurs varient plutôt entre 30 et 60%.

Illustration 4-17. Le détecteur de lumière

Une de mes plus anciennes expériences avec le détecteur de lumière c’est celle où je l’ai utilisé pour faire une machine à trier les bonbons. Je voulais tirer des M&Ms en fonction de leur couleur (les marrons sont mes préférés). L’idée est simple. Utiliser le détecteur de couleur puis déplacer le robot pour le positionner au-dessus du bon paquet.

J’ai fait un robot pivotant du type table tournante autour duquel je pouvais placer des bacs pour stocker les bonbons. La chenille caoutchouc faisait un joli tapis roulant et j’ai trouvé une idée pour faire ce que j’appelais une « pompe à bonbons » qui marchait plutôt bien pour délivrer un bonbon à la fois depuis la réserve. Toute la mécanique étant en
place, il ne me restait plus qu’à rentrer les valeurs du détecteur de lumière pour chaque couleur dans le programme. Je me prenais à rêver de robots de combat mâchouillant des M&Ms marron…

(cliquez pour agrandir)
Je n’ai jamais pu faire marcher très bien cette trieuse car les valeurs pour les différentes couleurs de M&Ms sont très proches. Après avoir cherché un peu et essayé deux trois
trucs, j’ai pu trier en trois groupes : les jaunes dans un bol, les oranges et rouges dans un autre, les bleus, verts et marrons dans un troisième. Sans doute en ai-je eu assez de jouer avec ce robot, aussi l’ai-je démonté afin de récupérer les pièces. Je pense que c’est aussi ce qui arrive à de nombreuses équipes FLL quand elles essayent d’utiliser le détecteur de lumière pour leur robot. Ils songent à une idée vraiment bonne, la mettent en oeuvre pour la tester. Durant les essais, le robot ne fonctionne pas très bien ou pas de façon fiable. L’équipe réfléchit un peu, n’arrive pas à faire mieux et renvoie le détecteur dans le vrac de pièces.

Le problème que j’ai eu avec la trieuse à bonbons n’est pas la faute du détecteur de lumière. Le projet était voué à l’échec dès le départ car j’ai choisi le détecteur de lumière alors qu’il n’était pas approprié pour cette application. J’avais besoin d’une meilleure compréhension du détecteur de lumière avant de l’utiliser dans d’autres projets et pour accroître mes connaissances j’ai donc décidé de réaliser une série d’expériences.

4.4.1 Expérience n°1
Grâce à ma tentative de réalisation d’une trieuse de bonbons, je savais que la valeur du détecteur de lumière dépend de la couleur de l’objet visé. Mais il apparaît aussi que cette valeur dépend aussi de la distance au détecteur de l’objet, des écarts de taille et de forme de l’objet et des conditions de lumière ambiante. Si je voulais apprendre quelque chose au sujet du détecteur de lumière, il fallait que je limite le nombre de variables. Pour ma première expérience, je décidais d’étudier la corrélation entre la valeur lue, la couleur et la distance.

Illustration 4-18. Expérience à propose de la couleur

Pour cette expérience, je construisis une boîte faite de pièces Lego, le détecteur de lumière placé au centre de l’une de ses extrémités. La boites a des pourtours unis, un fond et un couvercle pour empêcher la lumière d’entrer et de fausser les résultats. Ensuite, je fis différentes « cibles » colorées que je pouvais placer à différentes distances du détecteur. J’ai utilisé des briques 1 x 4 pour faire les cibles car j’en disposais dans de nombreuses couleurs différentes et qu’elles permettent à d’autres de reproduire mon expérience. Pour chaque couleur différente, j’ai pris des mesures à des distances de 1, 2, 3, 4, et 5 tenons. Les résultats sont regroupés dans le tableau suivant :
4.4.1.1 Couleur
Alors que je faisais mon expérience sur les couleurs, il m’a paru évident que le détecteur de lumière ne percevait pas les couleurs comme moi. Pour moi, les briques vertes semblaient plus brillantes que les briques rouges, alors que les valeurs du détecteur étaient toujours plus faibles pour les briques vertes. En fait, les mesures pour les briques vertes, les bleues, les gris foncé et noires étaient sensiblement identiques.

La lumière est faite d’ondes électromagnétiques - vibrations de champs électrique et magnétique à travers l’espace. Il y a plusieurs sortes d’ondes électromagnétiques : certaines peuvent être ressenties (la chaleur), d’autres peuvent être vues (lumière), et certaines nous sont utiles (télévision et radio). Nos yeux perçoivent les ondes de longueurs d’ondes de 400nm (violet) à 700nm (rouge). Nous appelons cette petite partie du spectre électromagnétique la lumière visible. Notre oeil perçoit chacune des longueurs d’onde du spectre lumineux comme une couleur différente. La lumière de longueur d’onde de 700nm est le rouge; la lumière bleue a une longueur d’onde d’environ 460nm.

Illustration 4-19. Spectre de la lumière visible

Le détecteur de lumière Lego utilise un phototransistor silicium comme élément sensible. D’après Michael Gasperi, ce phototransistor est particulièrement sensible aux rouges et infrarouges, avec un pic de sensibilité autour de 800nm. Le type de LED rouge bon marché utilisé dans le détecteur de lumière émet un spectre relativement large, mais son pic d’intensité se trouve quelque part entre 650 et 750nm. Cela correspond relativement bien au phototransistor. Nos yeux sont eux plus sensible du bleu-vert au jaune (500nm – 600nm). Ceci explique pourquoi la brique verte me parait si lumineuse alors que c’est la brique rouge qui est brillante pour le détecteur de lumière. Mais je ne savais toujours pas expliquer correctement pourquoi les valeurs sont si fortes pour le jaune alors qu’elles sont si faibles pour le vert.

Illustration 4-20. Le détecteur de lumière ne voit pas comme nos yeux

Il y a deux façons d’observer des couleurs. La première consiste à émettre de la lumière dans une longueur d’onde correspondante. La LED rouge du détecteur émet de la lumière à une longueur d’onde d’environ 660nm, ce qui explique qu’elle est rouge. L’écran de votre ordinateur ou de votre télévision émet de la lumière rouge, verte et bleue. Les autres couleurs sont recréées par mélange de ces couleurs primaires. La seconde façon consiste à réfléchir la lumière dans la longueur d’onde qu’on souhaite observer et d’absorber toutes les autres longueurs d’ondes. La brique Lego rouge réfléchit la lumière rouge mais elle absorbe la lumière bleue et verte.

Illustration 4-21. Additivité des couleurs primaires

Les valeurs de mesures du détecteur de lumière de la Table 4-2 prennent du sens si vous pensez les couleurs en termes de couleur émises, réfléchies et absorbées. Avec le couvercle en place sur mon boîtier d’essai, la seule couleur émise sur la brique colorée cible est la lumière rouge émise par la LED. Les briques Lego rouges réfléchissent bien la lumière rouge c’est pourquoi elles apparaissent lumineuses au détecteur et rouges à nos yeux. Les briques vertes et bleues ne réfléchissent pas la lumière rouge et les mesures laissent croire qu’elles sont noires. Les briques jaunes et blanches donnent des valeurs élevées car elles réfléchissent non seulement le rouge mais aussi d’autres longueurs d’ondes que la LED émet.

4.4.1.2 Distance
La loi de l’inverse du carré est une brillante formule mathématique que l’on rencontre dans de nombreux domaines de la physique. Elle définit une relation entre la valeur d’une grandeur physique comme la force de gravité ou la puissance d’un son et la distance à laquelle vous vous situez de la source à l’origine de cette grandeur. La loi de l’inverse du carré pour l’intensité lumineuse signifie que l’intensité lumineuse d’une source de lumière constante décroît comme le carré de la distance à la source lumineuse. On l’exprime généralement par le rapport des intensités lumineuses l1 et l2 aux carrés des distances d1 et d2.

Cela signifie que si vous doublez la distance à une source de lumière, l’intensité observée décroît de (1/2)2 ou ¼ de sa valeur initiale. A 3, 4, et 5 fois la distance, l’intensité décroît de 1/9, 1/16, et 1/25 de la valeur initiale. En pratique, l’intensité chute dès que vous vous éloignez de la source. Puis, plus vous vous éloignez, moins le changement devient sensible.

On comprend sans surprise que les valeurs mesurées via le détecteur de lumière décroissent rapidement alors que la distance à la cible augmente. Je ne suis pas certain de savoir pourquoi les valeurs ne décroissent pas aussi rapidement que le prévoit la loi de l’inverse des carrés, mais je suppose que c’est à cause de la proximité de la LED au phototransistor (une bonne part de la lumière mesurée provient directement du voisinage de la LED). A regarder les mesures du tableau, je comprends pourquoi je n’ai jamais pu faire marcher correctement ma trieuse de bonbons. Une modification de la distance aussi faible qu’½ tenon est suffisant pour que le détecteur confonde rouge et jaune ou bleu et vert, et si une brique rouge est placée deux tenons plus loin qu’une verte, le détecteur ne peut pas les différencier.

Illustration 4-22. Valeurs mesurées de l'expérience sur les couleurs

4.4.1.3 Conclusions
De cette expérience, j’ai dressé quelques conclusions à propos du détecteur de lumière. Le plus important est que vous pouvez utiliser le détecteur pour mesurer une distance si vous connaissez la couleur de la surface réfléchissante ou que vous pouvez dire la couleur si vous connaissez la distance de la surface, mais que vous ne pouvez pas faire les deux en même temps. Pour de meilleurs résultats, le détecteur doit être employé dans des conditions contrôlées avec précautions. Une attention particulière doit être apportée à la limitation du nombre de variables.

Le détecteur ne voit pas la lumière comme les être humains. La sensibilité du détecteur ne correspond pas à la vision humaine. Ce qui vous apparaît brillant peut paraître sombre au
détecteur et la lumière qui se situe en dehors du visible peut facilement conduire le détecteur à des valeurs de 100%. Il est toujours de bon aloi de faire et d’analyser des mesures avec un détecteur avant de développer une stratégie d’exploitation de celui-ci.

J’ai aussi appris que le détecteur de lumière est très sensible à la distance entre lui et la surface réfléchissante. Quand on utilise le détecteur pour mesure des différences il doit être placé à une distance fixe de la surface réfléchissante. Même de petites variations de distances peuvent rendre les mesures inexploitables. Souvenez-vous de ça quand vous planifiez l’utilisation d’un détecteur de lumière sur votre robot.

4.4.2 Expérience n°2, lumière ambiante
Dans ma première expérience, j’ai étudié la relation entre couleur, distance et valeur de luminosité mesurée. D’après les données recueillies, j’ai déduit que le détecteur est
sensible non seulement à la couleur des objets observés mais aussi à la longueur d’onde de la lumière éclairant l’objet. Lors d’un usage normal, le détecteur et la cible ne se trouvent pas dans un boîtier fermé. Des lumières extérieures et la lumière ambiante auront des effets sur les mesures fournies par le détecteur. Pour mieux comprendre les effets de la lumière ambiante j’ai réalisé une seconde expérience.

Pour cette expérience, j’ai construit en guise de cible un mur composé de différentes couleurs et un support réglable pour poser le détecteur à des distances connues des briques. Le support est conçu de manière à minimiser son ombre portée. J’ai alors mesuré les valeurs pour chaque couleur de briques pour différentes distances sous différentes conditions d’éclairages. D’abord, en guise d’étalonnage, j’ai pris les mesures dans une pièce non éclairée de mon sous-sol (mesure à 22%). J’ai refait cette expérience dans les conditions d’éclairage d’un sous-sol « normales » (mesure à 46%) puis dans des conditions « lumineuses » que l’on rencontre en compétition (mesure à 65%). Toutes les mesures sont réunies dans la Table 4-3 .

Illustration 4-23. Expérience sur l'influence de la lumière ambiante

La première chose que j’ai remarquée en voyant les données c’est que ce sont surtout les valeurs des cibles vertes et bleues qui sont affectées par la présence de la lumière ambiante. Les lampes à incandescences utilisées pour créer les éclairages émettent dans tout le spectre visible. Cela donne aux briques bleues et vertes de quoi réfléchir, si bien qu’elles apparaissent bien plus lumineuses au détecteur que dans l’expérience précédente.

D’autre part, il est très intéressant et important de noter comment l’éclairage ambian modifie la relation entre distance et valeur de la mesure. L’Illustration 4-24 est un graphique concernant les mesures sur la brique grise suivant les trois conditions de lumière. Sans éclairage, les mesures sont semblables à celles mesurées dans le boîtier fermé de l’expérience n°1. Le graphique est quasiment plat dans des conditions d’éclairage « faible ». La lumière rouge de la LED est submergée par la lumière de la lampe 100W utilisé dans les conditions de fort éclairage. Dans les conditions d’éclairage fort, les valeurs croissent avec l’éloignement du détecteur à la cible. Aux distances plus faibles, le corps du détecteur et son support créent de l’ombre diffuse qui diminue la quantité de lumière qui vient effectivement éclairer la cible.

Illustration 4-24. Mesures sur une brique Lego grise

4.4.2.1 Conclusions
Nous concluons que le détecteur de lumière est très sensible à la lumière ambiante, ce qui est gênant car on a rarement le contrôle de ce facteur. Ce fait a paru flagrant lorsque j’ai fait une démonstration de mes robots lors d’une exposition en extérieur. Même si la démonstration avait lieu sous un parasol, j’ai passé beaucoup de temps à essayer de faire fonctionner correctement les robots avec détecteur de lumière. Et pourtant je pensais que j’avais bien protégé les détecteurs. J’aurais du tester mes robots dans les conditions de lumière prévues. Souvenez-vous de cela quand vous faites vos essais dans votre sous-sol. Il se pourrait que tout se passe très différemment lorsque vous vous trouverez sous les lumières d’une salle de tournoi.

4.5 Le détecteur de rotation
Le détecteur de rotation est utilisé pour connaître de combien a tourné un axe. Il a un manchon interne qui tourne librement et qui peut recevoir un axe. Lorsque le manchon tourne, un compteur dans le RCX s’incrémente ou se décrémente. Chaque rotation complète compte pour 16 unités, ce qui donne pour le détecteur de rotation une résolution de 22.5 degrés.

Illustration 4-25. Détecteur de rotation

Le détecteur de rotation peut mesurer 32767 unités dans chacune des directions. Si vous excédez cette valeur, le compteur bascule sur la valeur extrême opposée, passant de la valeur positive maximum à la valeur négative maximum (ou vice et versa). En pratique, cette limite est rarement problématique. Un robot avec le détecteur de rotation branché directement sur l’essieu d’une grande roue ballon de 81mm pourra parcourir plus de 500 mètres avant que le basculement ait lieu.

4.5.1 Résolution
La résolution du détecteur de rotation est habituellement bien adaptée à la mesure des distances. En utilisant la plus grande des roues Lego (la roue ballon de 81.6 mm), 22,5°
représentent un parcours de seulement 1,5 cm. Pour la petite roue ballon, le chiffre est de 6 mm. Mais cette précision peut s’avérer trop faible pour des rotations fines. Pour un robot à conduite différentielle de 10 tenons de large, un parcours de 6 mm correspond à 8 degrés d’angle.

Illustration 4-26. Utilisation d'un réducteur pour augmenter la résolution

La résolution effective du détecteur peut être augmentée en utilisant un engrenage réducteur. Par exemple sur l’Illustration 4-26, l’arbre d’entrée (celui avec la vis sans fin) tourne 24 fois pour chaque rotation de l’arbre de sortie (celui avec la roue droite). Le détecteur de rotation engendrera alors 384 unités pour chaque rotation de la roue 24t. C’est moins de 1 degré par unité. Malheureusement, cet assemblage à un jeu d’environ 2 degrés ce qui gaspille une partie de résolution.

4.5.2 Mécanique interne
Le détecteur de rotation est un intéressant petit objet. Si vous aviez la vision rayons X de Superman vous pourriez voir qu’il est constitué de deux petits opto-interrupteurs. Il s’agit
d’une petite LED qui fait face à un photo-transistor. Le photo-transistor détecte la rotation par l’intermédiaire d’une obstruction de l’espace qui le sépare de la LED.

Illsutration 4-27. L'intérieur du détecteur. A NE PAS REPRODUIRE!!!

Le manchon possède quatre petites ailettes qui s’interposent entre les opto-interrupteurs lorsqu’il tourne. L’état des opto-interrupteurs change à chaque fois qu’une ailette passe devant lui. Cela donne donc 8 transitions par rotation pour chaque interrupteur. En utilisant deux interrupteurs, ont obtient le décompte de 16 unités par rotation ainsi que la détermination du sens de rotation.

Illustration 4-28. Un détecteur de rotation à partir de pièces Lego

Vous pouvez utiliser un détecteur de lumière, une lampe et une roue-poulie pour fairevotre propre capteur de rotation. Le détecteur de lumière et la lampe font office d’opto-interrupteur. Lorsque l’axe tourne, la roue-poulie bloque ou libère alternativement la transmission de la lumière provenant de la lampe. Avec un seul détecteur, vous ne pouvez déterminer le sens de rotation mais celle-ci peut s’obtenir en regardant le branchement des commandes du moteur.

4.5.3 Erreur de décompte
Il y a eu des dizaines de messages sur LUGNET (LEGO Users Group Network) à propos d’un problème mystérieux concernant le détecteur de rotation. Il y a une croyance répandue que des erreurs de décompte se produisent si la vitesse de rotation est trop faible ou trop rapide. Les vitesses exactes sont mal définies, mais on parle de vitesses au minimum de 10 à 20 tr/min et au maximum de 1200 à 1400 tr/min. Les quantités importantes de données expérimentales disponibles sur le web semblent corroborer les faits que le détecteur de rotation est fiable dans la fourchette de vitesses comprises entre 60 et 1000 tr/min(Concernant les problèmes du capteur de rotation à faible vitesse, voir http://philohome.com/sensors/legorot.htm ).

Illustration 4-29. Repère étalon pour remise à zéro du détecteur de rotation

L’emploi du détecteur de rotation peut poser quelques soucis, il ne faut donc pas imputer automatiquement un dysfonctionnement de votre robot à ces erreurs de décompte. Les problèmes de reproductibilité sont souvent causés par des erreurs de programmation (un oubli de remise à zéro, une mauvaise interprétation des valeurs de lecture du détecteur), des erreurs de conception (résolution du détecteur inadéquate ou jeu excessif), des problèmes de contrôle (accélération et virage trop rapide), ou à des modifications des conditions initiales (quelque chose n’a pas été remis en place correctement avant d’appuyer sur le bouton de démarrage). Mais si vous rencontrez encore des problèmes après avoir vérifié que tout fonctionnait correctement, vous pourriez avoir besoin d’un repère étalon pour caler le zéro.

Le repère étalon est un détecteur secondaire que l’on va utiliser pour vérifier ou caler la valeur par défaut du détecteur principal. Le chercheur de lumière de l’iIllustration 4-29 est épaulé par un détecteur de contact en guise de repère étalon. La came liée au détecteur de lumière pivotant presse le bouton poussoir quand le détecteur de lumière se présente de face. Le contact indique au RCX qu’il lui faut vérifier la valeur du détecteur de rotation et le remettre à zéro si toutefois elle était incorrecte (le compteur devrait être à zéro dans la position « de face »).

4.6 Le multiplexage de détecteurs
Le RCX a trois sorties moteurs et trois entrées pour les détecteurs, alors même que le « kit défi » inclut deux détecteurs de contact, deux capteurs de lumière et un détecteur de rotation. Que faire de ces détecteurs en surnombre? De nombreuses équipes FLL n’utilisent simplement pas ces détecteurs surnuméraires dans leur robot. Une équipe avait eu l’idée d’utiliser un détecteur de contact pour représenter un oeil. L’oeil était sympa mais pas d’une grande aide. La solution la plus utile est de multiplexer les détecteurs.

Multiplexer consiste à relier plusieurs détecteurs au même port d’entrée du RCX. Quand cela est fait correctement, le RCX est en mesure de lire la valeur en provenance de ce port et de déterminer duquel des détecteurs elle provient. Les détecteurs de contact sont les meilleurs candidats au multiplexage. Ils peuvent être multiplexés aussi bien avec un détecteur de lumière qu’avec un autre détecteur de contact. En théorie, deux capteurs de lumière peuvent être multiplexés mais je ne saurais comment interpréter les valeurs mesurées. Les détecteurs de rotation ne peuvent pas être multiplexés à cause de la nature du signal qu’ils renvoient.

D’après la Table 4-4, nous voyons l’importance de prévoir le multiplexage dès les premières étapes de la construction du robot. Quand un détecteur de contact est fermé, aucune valeur sur un des autres détecteurs multiplexés ne peut être lue. Tous les pare-chocs ou contacteur de position ou de butée utilisant un détecteur de contact doivent être de conception « contact normalement ouvert » (à zéro).


Electronique terminée, sacré pavé n'est-ce pas?
Dans 7 jours, le dernier tenant, le chapitre cinq, qui porte le doux nom de "la conduite d'un robot".

M'sieurs dames!

Moune

Aucun commentaire: