Capteurs tierce partie : revue de quelques "HiTechnic"

lundi 23 novembre 2009
par  Benoit PARSY
popularité : 4%

Revue du capteur de proximité à infrarouge, d’un capteur accéléromètre +/- 2g, d’un compas magnétique, et d’un capteur de couleur.

HiTechnic

HiTechnic fabrique une gamme de capteurs compatibles avec la gamme LEGO de robotique MINDSTORMS NXT. La majorité des capteurs HiTechnic sont certifiés par LEGO, ce qui assure les standards de qualité et de sécurité.

GIF - 3.6 ko

LEGO garantie en les certifiant que les capteurs fabriqués par HiTechnic sont :

  • 100% compatibles avec les Mindstorms NXT,
  • conformes aux normes qualité LEGO,
  • conformes aux normes de sécurité en vigueur,
  • conformes au standard RoHS (sans plomb).

Les procédures pour accéder aux données de ces capteurs sont directement incluses dans la dernière version de Bricxcc. Pour les utiliser, il vous faudra un PC avec Brixcc, NBC/NXC, et un NXT avec le « enhanced firmware by John Hansen »

JPEG - 38.5 ko
Capteurs Mindstorms
Capteurs hitechnic et LEGO NXT1.0

NXT EOPD

Ce capteur détecte précisément la proximité d’objets. L’EOPD (ou Electro Optical Proximity Detector) utilise une source lumineuse interne pour détecter la présence d’un objet, et déterminer la distance entre l’objet et le capteur. En générant sa propre source de lumière (et en la modulant), le capteur est capable de filtrer les intensités lumineuses externes. En passant ainsi d’un environnement lumineux à un environnement sombre, ou au travers d’ombres, le capteur EOPD compense automatiquement et ne retourne que la valeur issue de la mesure de sa source propre. Les cibles peuvent être détectées précisément de 2 cm jusqu’à 20cm, et les mesures dépendent essentiellement de la taille et de la forme de l’objet détecté, ainsi que de son état de surface (plus ou moins réfléchissant).

JPEG - 3.5 ko

Ce capteur peut être utilisé comme un capteur de lumière standard, dont on peut activer ou désactiver la source de lumière, selon les besoins. Comme pour ce dernier, désactiver la source de lumière interne influe directement sur la distance mesurable. Cela n’a vraiment de sens que lors de mesure de type pourcentage, car même lors de mesures "long range", la résolution est bonne à courte distance.

L’utilisation de ce capteur peut passer par l’utilisation des procédures standard SetSensorType(), SetSensorMode(), SensorRaw() et Sensor(). Un exemple pour en illustrer l’utilisation, fourni par le SAV de HiTechnic (Merci Gus).

Des procédures sont déjà disponibles dans Bricxcc pour utiliser le capteur :

  • SetSensorHTEOPD() initialise le capteur, le choix du type de source lumineuse étant laissé par IN_TYPE_LIGHT_ACTIVE ou IN_TYPE_LIGHT_INACTIVE.
  • SensorHTEOPD() renvoie la valeur mesurée, brute. Voir le code exemple à la fin de l’article...

NXT Acceleration / Tilt Sensor

Le capteur accéléromètre contient un composant capable de mesurer l’accélération selon les trois axes x, y, z.

La gamme de mesure de l’accélération est de -2g à +2g, avec une résolution de 200 incréments par g, et un rafraichissement de la mesure de 100 Hz (soit 100 mesures par seconde).

JPEG - 3.6 ko

Ce capteur peut aussi être utilisé comme capteur de position, en statique, car alors il mesure l’accélération de la gravité, et donc par déduction, la position du mobile.

Ce capteur utilise l’interface I2C du NXT. Pour le tester, Il faut un firmware minimum 1.03, et connectez le capteur sur l’entrée 2, puis sélectionnez dans le menu "View > Ultrasonic cm > Port 2". Tenez le capteur debout dans votre main, l’axe des x vers le haut, et faites pivoter votre poignet de gauche à droite, doucement. La valeur devrait passer de 0 à 254. Notez que seule la valeur de x (enfin les 8 bits de poids fort de x) est disponible dans ce mode de démonstration.

Registres du capteur

Le mot binaire contenant la valeur de mesure étant codé sur 10 bits, la mesure nécessite 2 registres de 8 bits.

AdresseTypeSignification
42H byte 8 bits forts axe X
43H byte 8 bits forts axe Y
44H byte 8 bits forts axe Z
45H byte 2 bits faibles axe X
46H byte 2 bits faibles axe Y
47H byte 2 bits faibles axe Z

L’utilisation de ce capteur peut passer par l’utilisation des procédures standard SetSensorLowSpeed() et I2CBytes(). Un exemple pour en illustrer l’utilisation, fourni par HiTechnic sur son site.

Des procédures sont déjà disponibles dans Bricxcc pour utiliser le capteur.

  • SetSensorLowspeed() initialise la communication I2C avec le capteur.
  • ReadSensorHTAccel(port, x, y, z) renvoie un booléen de bonne réussite, et les trois valeurs d’accélération. Voir le code exemple à la fin de l’article...

NXT Compass Sensor

Le capteur Magnétomètre contient un composant capable de mesurer la composante du champ magnétique terrestre, et de calculer l’azimut, où angle entre la direction du capteur, et celle du nord magnétique. Cette mesure est effectuée 100 fois par seconde, et arrondie au degré près.

JPEG - 8.2 ko

Ce capteur utilise l’interface I2C du NXT. Pour le tester, Il faut un firmware minimum 1.03, et connectez le capteur sur l’entrée 2, puis sélectionnez dans le menu "View > Ultrasonic cm > Port 2". Tenez le capteur dans votre main, comme un pistolet, puis faites pivoter votre main de gauche à droite, doucement. La valeur devrait passer de 0 à 179, c’est azimut2. Doublez cette valeur, et vous aurez une bonne idée de l’azimut (à + ou - 1, cf infra).

Registres du capteur

AdresseTypeSignification
42H byte azimut2, moitié de l’azimut
43H byte azimut1, reste de l’azimut
44, 45H word azimut16,(lowbyte, highbyte)

Deux méthodes pour calculer l’azimut : azimut = azimut2*2+azimut1, nécessite 2 cycles de lecture, azimut non signé, ou azimut=hightbyte*8+lowbyte, azimut signé, mais occupation mémoire sur 16 bits.

Le compas doit être utilisé horizontalement pour bien fonctionner. Souvenez-vous en lors de la construction de votre robot, et du placement du capteur. Celui-ci doit être fermement accroché, sinon les mesures seront erratiques. HiTechnic recommande que le compas doit se trouver à au moins 15 cm d’un moteur, et 10 cm de la brique NXT.

Des procédures sont déjà disponibles dans Bricxcc pour utiliser le capteur.

  • SetSensorLowspeed() initialise la communication I2C avec le capteur.
  • SensorHTCompass() renvoie la valeur de l’azimut. Voir le code exemple à la fin de l’article...

NXT Color Sensor V2

Le capteur de couleur utilise une led blanche pour illuminer la cible, et analyser les composantes de la lumière reflétée à l’aide d’un phototransistor. Cela lui permet ensuite de calculer l’index de la couleur, selon le diagramme suivant :

JPEG - 17.2 ko

Ce capteur utilise l’interface I2C du NXT. Les composantes de la couleur sont calculées 100 fois par secondes.

Registres du capteur

AdresseTypeSignification
42H byte Index de la couleur
43H byte Composante Rouge
44H byte Composante Verte
45H byte Composante Bleue

Le capteur de couleur fonctionne bien mieux si le capteur est très prés, et perpendiculairement à la cible, afin que la lumière ambiante ne vienne pas parasiter la mesure.

Des procédures sont déjà disponibles dans Bricxcc pour utiliser le capteur.

  • SetSensorLowspeed() initialise la communication I2C avec le capteur.
  • SensorHTColorNum(port) renvoie la valeur de l’index.
  • ReadSensorHTRawColor(port, rouge, vert, bleu) renvoie les composantes RGB.
  • ReadSensorHTColor(port, index, rouge, vert, bleu) renvoie la valeur de l’index et des composantes RGB. Voir le code exemple à la fin de l’article...

Code de test

La deuxième partie de l’article sera sur l’utilisation concrète et les performances des capteurs, avec comparaison de mes capteurs "home-made".

Un grand merci à Gus, du support technique de HiTechnic, qui a répondu dans la journée à toutes mes questions.


Commentaires  (fermé)

jeudi 5 novembre 2009 à 14h33

Bonjour

De quels capteurs parlez vous ?

Des capteurs fournis avec le NXT 1.0 ? La documentation est abondante sur le web et dans l’aide de la suite Bricxcc. Néanmoins, si vous avez des questions, n’hésitez pas à me les envoyer.

De l’IRLink ? Bien que sur la photo, il n’est pas décrit dans l’article, mais fera l’objet d’un autre article qui le mettra en situation de commander un robot Wall-E fabriqué avec un bull PowerFunctions et un NXT 1.0.

Cordialement, Ben

Logo de XavierD
lundi 12 octobre 2009 à 11h02 - par  XavierD

Tres bien fait, bien le code en NXC, mais ou sont les autres capteurs ?

Agenda

<<

2016

 

<<

Décembre

 

Aujourd'hui

LuMaMeJeVeSaDi
2829301234
567891011
12131415161718
19202122232425
2627282930311
Aucun évènement à venir les 12 prochains mois

Brèves

29 juillet 2011 - Mise à jour des pièces LDraw 2011-01

La première mise à jour des pièces LDraw pour 2011 est désormais disponible ! Au sommaire, 486 (...)

28 mars 2011 - Reportage sur la chaine de fabrication LEGO

Un reportage de National Geographic sur la compagnie LEGO, et plus particulièrement sur la (...)

23 février 2011 - Pierre Normandin présente le nouveau train LEGO Maersk 10219 en vidéo

Notre ami Pierre Normandin, designer LEGO CITY, présente dans cette vidéo le nouveau train LEGO (...)

31 décembre 2010 - Mise à jour des pièces LDraw 2010-03

Une nouvelle mise à jour des pièces officielles LDraw est disponible ! Au sommaire, 456 nouveaux (...)

21 juillet 2010 - Nouveau magazine LEGO dans les kiosques

Nouveauté dans les kiosques, le magazine LEGO n°01 vient de sortir. Au sommaire, pas grand (...)