Présentation générale
Les roues codeuses sont un élément vital du robot. Elles permettent de contrôler ses déplacements. D’une manière générale, ces pièces sont particulièrement coûteuses. Nous allons essayer d’en réaliser à moindre coût.
La fonction d’une roue codeuse est de renvoyer un signal qui dépend du déplacement effectué par la roue. Les roues codeuses industrielles sont généralement composées d’un faiseau lumineux et d’une roue perforée de manière régulière. Suivant la position de la roue, le faisceau lumineux est interrompu ou non. Un capteur détecte la présence du faisceau et renvoie un signal électrique. Plus la roue tournera vite et plus les créneaux du signal seront rapprochés.
Nous allons utliser le même principe, à partir de fourches infrarouges et d’un disque imprimé sur du papier transparent. Notre robot dispose de deux roues porteuses qui sont des roues de roller. Ce sont sur ces roues que nous allons fixer les codeurs. Pour espacer le disque de la roue, nous réalisons une sorte d’entretoise en carton ondulé.
Réalisation
Pour les fourches infrarouges (ref TCST1103 chez farnell), nous comptons les fixer sur un support en bois. A cause de l’épaisseur du faisseau (environ 1mm), nous sommes obligés d’avoir une zone opaque supérieure à 1 mm en bout de roue.
Nous réalisons une roue de 5cm de diamètre avec 60 bandes noires alternées avec des zones transparantes. La roue est dessinée avec Inkscape. L’impression des dessins à la bonne taille se fait en exportant le fichier en eps (qui est un format vectoriel) pour l’importer dans un traitement de texte. Il sera possible ici de définir une taille du dessin en centimètres. Attention, ça peut baver un peu à la sortie de l’imprimante.
Un premier essai nous montre que notre entretoise était trop large. Nous décidons de réduire le diamètre extèrieur à 3 cm pour laisser 1 cm de pénétration au capteur.
Le disque imprimé s’abîme très vite, l’encre se détache facilement du disque, surtout en cas de frottement. Nous prévoyons de coller un disque transparent du côté de l’encre afin de préserver le disque.
Capteurs
Nous commençons ensuite la partie capteur. Première question que nous pourrions nous poser : Pourquoi mettre deux fourches par roues ?
Avec deux signaux correctement déphasés, il est possible de connaître le sens de rotation de la roue et ça, c’est particulièrement intéressant si nous souhaitons faire tourner le robot sur lui-même. Car dans ce cas, une roue avance et l’autre recule.
Le déphasage, c’est quoi ?
Le déphasage est un décalage temporel entre deux signaux identiques. La différence entre un retard et un déphasage est assez mince. Dans notre
cas, nous retiendrons que si un retard est exprimé en unité de temps (généralement en secondes), ce n’est pas le cas du déphasage. Le déphasage est un retard qui dépend de la période du signal. Il est généralement exprimé en unité d’angle (en degrés ou en radian).
Par exemple :
- Deux signaux qui ne présentent aucun retard auront un déphasage de 0 (degrés ou radians).
- Deux signaux qui présentent un retard d’une période complète auront un déphasage de 2.PI ou 360°.
- Des signaux qui sont légèrement décalés comme ceux ci-dessous ont un déphasage de 15° (ou 0,26 radian).
Comment se crée le déphasage dans notre cas ?
Dans notre cas, le déphasage se crée en positionnant correctement les capteurs. Comme on peut le voir sur le schéma suivant, en position initiale, les deux capteurs voient le faisceau lumineux. Si la roue tourne dans le sens 1, on s’aperçoit que le faisceau du capteur 1 sera interromptu avant celui de capteur 2. Si la roue tourne dans l’autre sens, c’est le faisceau du capteur C2 qui sera coupé en premier.
Les capteurs C1 et C2 sont nos fourches infrarouges.
On comprend l’interêt du déphasage en mémorisant la valeur d’un signal lors du front montant de l’autre signal.
Nous avons maintenant notre moyen de connaître le sens de rotation de notre roue.
Principale difficulté
Notre problème vient du centrage du disque codeur par rapport à la roue. Si le disque est mal centré, le capteur ne sera pas à une distance constante du centre de la roue codeuse. Ceci est problématique car le déphasage dépend de cette distance. Nous voulons calculer l’impact qu’aurait un décentrage sur le déphasage pour être sûr que celui-ci reste acceptable.
Le déphasage idéal est de 90°, un quart de période. Les valeurs extrêmes à ne pas atteindre sont 0° (les deux signaux sont superposés ou en phase) et 180° (les signaux sont à l’opposé l’un de l’autre, dits en opposition de phase). Dans ces deux cas si la roue change de direction nous ne pouvons pas le détecter. Pire, si la valeur du déphasage oscille autour de l’une de ces deux valeurs, nous auront l’impression que la roue change de sens alors que ce n’est pas le cas.
Dans le cas de gauche, sur l’image ci-dessus, le déphasage vaut un quart de periode. Si le déphasage varie un peu (dans la zone verte), notre lecture du sens de rotation restera bonne. Par contre, dans le cas de droite, où la valeur du déphasage est proche d’une période ou d’une demi-période, même une légère variation du déphasage peut entraîner une erreur de lecture du sens de rotation de la roue.
Notre roue compte 60 bandes opaques alternées avec 60 bandes transparentes. Notre période angulaire est d’un soixantième de tour, soit 6 degrés. Pour avoir un déphasage d’un quart de période, il faut donc espacer les capteurs de 1,5 degrés sur la roue. Ceci nous obligerait à avoir des capteurs particulièrements proches (ou à avoir une roue particulièrement grande). Nous allons alors rajouter un nombre entier de période pour les espacer. Ça, c’est encore de la théorie. Dans la pratique, l’espacement entre nos deux capteurs est fixe et il faut ajuster la distance entre les capteurs et le centre de la roue pour obtenir le déphasage idéal.
La variation de d, influe sur l’angle alpha qui nous permet de déterminer le déphasage. alpha = arc_tan(e/2r). En rajoutant la variation d, on a alpha = arc_tan(e /(2r+2d))
Le graphique suivant donne le déphasage que l’on observerait en fonction de la distance des capteurs par rapport au centre de la roue. La valeur du déphase est remise à 0 toutes les demi-périodes (180°). Ceci permet de mettre en évidence les zones à éviter. L’écartement entre les deux capteurs (2,7 cm) a été choisi de manière à se retrouver dans un cas favorable. Ici, les capteurs peuvent bouger de huit millimètres (entre 4,2 cm et 5 cm) par rapport au centre de la roue sans que nous ayons de problèmes avec la phase.
Vos commentaires
# Le 22 février 2011 à 22:59, par Keuronde En réponse à : Roues codeuses
J’ai reçu un mail de eudiant.zaz (chez gmail) qui a reproduit le schéma de la fiche technique des fourches IR et qui n’arrive pas a obtenir un signal TTL en sortie de la fourche.
Le schéma de la fiche technique utilise deux résistances, l’une de 50 Ohm, l’autre de 100 Ohm. Il s’agit du schéma d’un circuit pour tester le composant et mesurer ses temps de réponse.
Le composant n’est pas capable de délivrer un fort courant. Pour avoir un signal exploitable, il me semble qu’il faut changer la valeur de la résistance qui est en série avec le phototransistor (celle de 100 Ohm). La remplacer par une résistance de 4,7 k (ou plus) semble une bonne idée.
Keuronde
Ps : je me permets de répondre ici car l’adresse que j’ai de eudiant.zaz ne semble pas valide.
Répondre à ce message
# Le 21 septembre 2009 à 10:30, par nico En réponse à : Roues codeuses
J’ai une questtion : avec quel logiciel faire les patterns de roues codeuses ? Inkscape ?
PS : le lien de telechargement ne marche pas.
# Le 22 septembre 2009 à 13:40, par Laurent En réponse à : Roues codeuses
Un programme pour créer des roues codeuses : voir le site de nos confrères US.
http://www.societyofrobots.com/sensors_encoder.shtml
Attention dans la saisie il faut remplacer les ’.’ par des ’,’.
# Le 24 septembre 2009 à 23:43, par Keuronde En réponse à : Roues codeuses
Les motifs pour les roues codeuses sont bien faits avec Inkscape. Pour la première lamelle, je me sers des guides pour avoir le bon angle (on peut spécifier l’angle d’un guide en double cliquant dessus). Ensuite je la duplique et la fais tourner de l’angle désiré avec les outils de transformation (CTRL + MAJ + M).
Je n’ai pas réussi à changer le fichier, du coups j’en ai mis un autre en .eps.
# Le 7 juillet 2012 à 19:32, par swolf En réponse à : Roues codeuses
Je n’ai pas très bien compris comment définir la taille en centimètres, après avoir importé l’image dans un logiciel de traitement de texte...
# Le 8 juillet 2012 à 07:51, par Julien H. En réponse à : Roues codeuses
Bonjour,
Les logiciels de traitement de texte sont pourvus d’une règle (en haut de la zone de saisie) et les images se redimensionnent avec des poignées dans les coins.
Une autre solution consiste à éditer les propriétés de l’image et à saisir au clavier la largeur et la hauteur de l’image souhaitée.
Répondre à ce message