14
Odométrie du Pobot Easy Extrait du PoBot http://www.pobot.org Odométrie du Pobot Easy - L'association - Nos robots - Robots du club - Robots à roues - Base "Pobot Easy" (2009) - Date de mise en ligne : samedi 28 février 2009 Description : Un capteur de lumière permet de détecter une alternance noir/blanc sur une roue et d'en déduire son avancée (position, vitesse). PoBot Copyright © PoBot Page 1/14

Odométrie du Pobot Easy · 2013-03-30 · Comme les capteurs vont suivre les secteurs noir et blanc d'un disque collé ... La différence entre les AOP sont les bandes passantes

  • Upload
    vudung

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Odométrie du Pobot Easy

Extrait du PoBot

http://www.pobot.org

Odométrie du Pobot Easy- L'association - Nos robots - Robots du club - Robots à roues - Base "Pobot Easy" (2009) -

Date de mise en ligne : samedi 28 février 2009

Description :Un capteur de lumière permet de détecter une alternance noir/blanc sur une roue et d'en déduire son avancée (position, vitesse).

PoBot

Copyright © PoBot Page 1/14

Odométrie du Pobot Easy

Sommaire• Mécanique• Électronique• Programmation

Voici une odométrie simple, avec une seule détection. Une meilleure odométrie nécessiterait plus de points et surtoutdes encodeurs en quadrature, permettant de connaitre le sens de rotation.

Premier test d'implantation

Roues codeuses

Nicolas, de Easy Robotics [http://www.easyrobotics.fr], nous a fait parvenir une paire de capteurs et les brasd'aluminium qui vont avec pour les fixer au chassis. On va donc commencer par trouver le meilleur emplacement.

Mécanique

Comme les capteurs vont suivre les secteurs noir et blanc d'un disque collé sur la roue, il est préférable qu'ils soientplacés à 90° des rayons, et de préférence dans un endroit isolé de la lumière.

Copyright © PoBot Page 2/14

Odométrie du Pobot Easy

Le support du capteur premier test pour accéder facilement aux pattes

Essai de fixation dessous

Les codeurs sont conçus pour être fixés directement sur la cage des servomoteurs, grâce aux trous filetés de la"brique Easy".

Fixation définitive (applont)

Fixation définitive (côté)

Ensuite on fixe les disques sur les roues, en imprimant, découpant et collant les deux parties sur les jantes enaluminium.

Copyright © PoBot Page 3/14

Odométrie du Pobot Easy

Disques codeurs pour les roues <!-- google_ad_client = "ca-pub-6809994141685910"; /* Corps central */ google_ad_slot = "0178404633";google_ad_width = 728; google_ad_height = 90; //--» <script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

Électronique

Ces capteurs sont des émetteurs/récepteurs. Les deux composants ont des entrées/sorties distinctes et on peutdonc les considérer comme une Led et comme un phototransistor NPN dans un boitier commun.

La documentation du capteur Honeywell HOA709 :

Datasheet HOA709 Modèle HOA709-1 "Mexico"

Il y a 2 versions, avec phototransistor ou avec photodarlington. La différence entre les deux se fait sur les temps deréponse :

HOA0708 : Saturation=0.4V HOA0709 : Saturation=1.1V

Le parametre Rise & Fall Time nous indique que le photo-darlington est 5 fois plus lent que le photo-transistor : HOA0708 : Rise & Fall Time=15us HOA0709 : Rise & Fall Time=75us

On peut donc calculer une fréquence théorique maximum de fonctionenment de 1/(75+75)=6,66 kHz avec unerésistance de sortie de 100R. (Plus cette résistance sera grande et plus la vitesse max sera petite).

Led infra-rouge

Les caractéristiques de la DEL infrarouge qui nous intéressent sont : la tension directe (forward voltage, Vf) : 1,6 volts le courant d'utilisation (If) : 30 mA

Comme on utilise une tension Vcc de 5 volts, il faut prévoir une résistance de 120 ohms car :

R = U / I = (Vcc - Vf) / If = (5 - 1.6) / 0.03 = 113 Ohms (pouvant être arrondi à 110 mais dans la gamme

disponible, E12, c'est 120 qui est le plus proche)

Copyright © PoBot Page 4/14

Odométrie du Pobot Easy

Résistance de 120 ohms

Une prise de vue à l'appareil photo permet de voir que la led est bien allumée :

Emetteur allumé

Photodarlington

Comment fonctionne un phototransistor ? la base est sensible à la lumière : quand il y a de la lumière, le transistorest passant. On a donc une valeur plus ou moins importante sur l'émetteur. Un retour d'expérience intéressant nousest transmis par Patrick :

Différence entre darlington et transistor : Le darlington va avoir un gain plus important qu'un transistor simple.Le photodarlington va commuter en saturé avec moins de lumière. Du coup le transistor de sortie devraitfonctionner plus tôt en bloqué/saturé. En gros c'est ce que tu recherches.

En 2002 j'avais fais un codeur avec ce capteur, avec plus ou moins la même configuration et un ampli OPmonté en seuilleur pour avoir des transitions 0/1 franches. Il y avait plein de phénomènes de rebonds quifaisaient qu'au lieu d'avoir un front il y avait des séries d'oscillations très rapides à la place du front.C'était invisible à l'oscillo réglé sur une fréquence propre à voir les crénaux car les rébonds très rapides seconfondaient avec le front. Il a fallu passer à quelques ns pour voir le phénomène.

Ces rebonds étaient bien comptés par le micro-contrôleur ce qui donnait un comportement ératiqueau robot.

Bref mauvais souvenir avec ces trucs. Je dirai qu'il faut prévoir un bon filtrage avec un passe-bas efficacepour se prémunir de nuits blanches.

Donc on est prévenu. On va donc commencer par regarder ce qui se passe sur l'émetteur du darlington (rappel :base, collecteur, émetteur).

Copyright © PoBot Page 5/14

Odométrie du Pobot Easy

Le premier test avec une résistance de pull-down de 10k montre une variation trop faible pour être significative

Premier test (10kOhms)

On test avec une résistance de 1,8 kOhms : c'est déjà mieux, les différences blanc/noir sont plus tranchées.

Second test (1,8kOhms)

Pour que les oscillogrammes montrés soient plus convaincants, on fait tourner la roue régulièrement (en pilotant leservomoteur). Sinon on pourrait se demander à quoi est due la dispersion des valeurs de créneaux car lesdiagrammes précédents sont faits par une manip "à la main".

Sortie du darlington avec servo lent

Copyright © PoBot Page 6/14

Odométrie du Pobot Easy

Sortie du darlington avec servo rapide

Voici le code pour la carte Arduino afin de tester le capteur :

Acquisition du signal analogique avec rotation du servomoteur (code Arduino 0012)

Maintenant on va convertir la sortie analogique du capteur en valeur tout ou rien.

Pour obtenir un signal TTL en entrée numérique, on peut utiliser un amplificateur opérationnel ou ampli-op. On vapartir du schéma réalisé par Fribotte : capteur de ligne [http://fribotte.free.fr/bdtech/ir/carteinfrarouge.html], mais ceschéma est un peu illisible et surtout il n'inspire pas confiance (led connectée à l'envers...) donc on va faire appel àdes spécialistes. Voici ce que nous dit Nicolas :

N'importe quel AOP fait l'affaire dans le montage de Fribotte. Chez Selectronic [http://www.selectronic.fr], onavait trouvé des CMOS quadruples, pas chers du tout. La différence entre les AOP sont les bandespassantes (en Mhz voire Ghz), les offsets (µV dans le cas du CMOS), slaw rate (vitesse max de modificationdes sorties), etc. Des paramètres qui seront toujours bien au-dessus de ce que tu veux pour ton montage.

Le coeur du circuit de fribotte est un montage à un comparateur à deux seuils non-inverseur (montage àhysteresis), cf l'article wikipedia sur les ampli-op[http://fr.wikipedia.org/wiki/Amplificateur_op%C3%A9rationnel]

Si tu veux un meilleur slaw rate (meilleur que 10µS rail-to-rail), tu peux utiliser un comparateur comme leLM311.

Si tu veux faire du pas cher, j'aurais mis un simple montage AOP en filtre passe bas (genre 1khz ou 10khzde fréquence de coupure) et j'aurais lu la valeur avec un convertisseurs ADC, le seuillage étant faitnumériquement.

On en retient deux approches : avec un AOP comparateur pour avoir une sortie tout ou rien avec un filtre passe bas à base d'AOP

Les deux pourraient être testés, on va utiliser la première solution.

Test avec comparateur LM311 ou LM393

On trouve ce circuit intégré en référence LM311N sur le site Gotronic[http://www.gotronic.fr/catalog/actif/actifframe.php?page_cible=lin3.htm] pour 40 centimes d'euros en package DIL8.

Copyright © PoBot Page 7/14

Odométrie du Pobot Easy

Datasheet AOP LM311

William, un étudiant d'Aix-en-Provence, m'a envoyé ce schéma utilisant un LM311 et un phototransistor, qui serviradonc parfaitement de base à notre montage de test :

Montage à base d'AOP comparateur

Eric avait sous la main un LM393 qui est un double comparateur (deux AOP dans un boitier 8 pattes). C'est avec luiqu'on fera nos tests. S'il fonctionne, on pourra faire les deux acquisitions avec un seul circuit puisque le robot a 2roues codeuses :)

Datasheet AOP LM393

Brochage du LM393

On adapte le schéma initial qui utilisait un LM311 et on choisit les bonnes valeurs de résistances :

sur la sortie de l'AOP, une pull-up de 47 kOhms sur l'entrée de tension V+ à comparer, deux résistances de 1kOhms en pull-up et pull-down donc on va comparer

avec la moitié de 5 volts sur l'entrée de tension V-, l'émetteur du photodarlington et la résistance de pull-down de 1,8 kOhms qui permet au

signal de franchir nettement la ligne médiane des 2,5 volts lors de nos tests ci-dessus

Le résultat est bien visible : des valeurs tout ou rien bien tranchées, prêtes à être détectées par une interruptionexterne de notre carte à microcontrôleur :

Copyright © PoBot Page 8/14

Odométrie du Pobot Easy

Test OK avec le LM 393

Le montage choisi est juste un seuil, pas un montage à hystérésis qui est censé être moins perturbable.

Avec un peu d'astuce, on arrive à faire tenir les connecteurs des servomoteurs, le connecteur d'un capteur, le LM393et toutes les résistances sur la petite breadboard d'un protoshield pour Arduino :

Circuit des capteurs et servomoteurs

Et voilà pour l'électronique, c'est dense et intense mais on a beaucoup appris. On va passer à l'utilisation des valeursdu capteur par programmation de l'Arduino, mais avant de continuer un mot de Georges :

Copyright © PoBot Page 9/14

Odométrie du Pobot Easy

Datasheet SG-2BC

J'attire ton attention sur le SG-2BC de Kodenshi. Il est très interessent pour un petit robot car il est beaucoupplus compact (format TO92) que les HOA07.

SG-2BC : Rise & Fall Time=30us. HOA709 : Rise & Fall Time = 75 µs (voir ci-dessus). Donc le SG-2BC est 2 fois plus rapide que le

HOA0709. Et environ 3 fois moins cher que le HOA0709 (chez Farnell).

Copyright © PoBot Page 10/14

Odométrie du Pobot Easy

Nouveau montage : comparateur à hysterésis

Le montage ci-dessus était intéressant mais à vitesse basse, il y avait des incréments fantomes dûs au passaged'une zone à l'autre : entre les deux, le circuit détectait plusieurs passages donc plusieurs incréments.

Pour éviter ce problème, il faut utiliser une comparaison à hysterésis. Voici des explications très claires sur lesformules à appliquer : discussion sur le forum Futura-Sciences[http://forums.futura-sciences.com/electronique/75877-comparateur-a-hysteresis.html].

Reprenons le schéma :

Montage comparateur hystérésis Exemple de montage réutilisant l'AOP LM393.

Il y a donc trois résistances : R1 et R2 forment un pont diviseur de tension comme dans le premier montage R3 ou Rs apporte l'hysteresis, c'est une résistance de contre-réaction positive

Comme explique Pa5cal sur le forum, il y a une formule à appliquer pour choisir les valeurs des résistances R1 et R2en fonction des tensions de seuil de l'hystérésis. En regardant la tension à la sortie du capteur (donc en entrée denotre montage), on va considérer les seuils d'entrée haut et bas à :

VIH = 3,6 volts VIL = 2,2 volts

On utilisera Rs = 10 kOhms.

On utilisera V1 = 0 volts et V2 = 5 volts (les tensions d'alimentation de l'AOP. Si on regarde la sortie de l'ampli-op, lesvaleurs max et min ne sont pas 0 et 5v mais :

VOH = 4,39 volts VOL = 0,46 volts

Donc on peut calculer A et B (voir explications du forum FS) : A = (4,39 - 0,46) / (3,6 - 2,2) - 1 = 1,53 B = (2,2*4,39 - 0,46*3,6) / (3,6 - 2,2) = 5,71

D'où : R1 = 10k * (5 - 0) / (5,71 - 1,53*0) = 8,75 kOhms R2 = 10k * (5 - 0) / (1,53*5 - 5,71) = 25,77 kOhms

Copyright © PoBot Page 11/14

Odométrie du Pobot Easy

On utilisera une résistance de 8,2 kOhms et de 27 kOhms. Le montage sur breadboard est assez facile. Voici lerésultat en bloquant la roue : on voit bien des paliers plats, et plus d'incréments fantomes !

Résultat avec hysteresis

Voici le schéma électrique complet de l'étage "odométrie" :

Schéma complet odométrie

Et un exemple d'implantation :

Copyright © PoBot Page 12/14

Odométrie du Pobot Easy

Positionnement Arduino

Programmation

De la doc à lire : http://manubatbat.free.fr/doc/posit... [http://manubatbat.free.fr/doc/positionning/Positionning.html]

Et encore : http://www.planete-sciences.org/for...[http://www.planete-sciences.org/forums/viewtopic.php?f=1&t=12844]

Procédure de test : http://apbteam.org/browser/trunk/di...[http://apbteam.org/browser/trunk/digital/asserv/doc/parameters.txt]

Il y a deux solutions pour utiliser ce type d'odomètre. Mesurer la vitesse de la roue ou bien compter le nombred'impulsions.

Compteur d'impulsions

Voici le résultat : on change le sens de rotation quand on atteint un seuil. On peut d'ailleurs vérifier que lesservomoteurs sont réguliers.

Odomètre en compteur

Code Arduino avec incrémentation

Copyright © PoBot Page 13/14

Odométrie du Pobot Easy

Comparaison gauche/droite

Un des premiers travaux à faire quand on a l'odométrie est de vérifier si les moteurs gauche et droite ont les mêmesvaleurs pour la même commande. Pour cela on compte le nombre d'incréments pour chacune des consignes et onsuperpose.

Comptes pour chaque vitesse - moteur gauche

Comptes pour chaque vitesse - moteur droit

Comparaison des deux courbes

Copyright © PoBot Page 14/14