Capteurs tierce partie : revue de quelques « HiTechnic »

[English] [français]

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

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 »

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

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

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

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

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.

Navigation

AgendaTous les événements

Brèves Toutes les brèves