Les codeurs absolus à effet Hall

Remarque préalable : Différence entre codeur incrémental et codeur absolu

Un codeur incrémental signale une variation de position angulaire. C'est un capteur "relatif", il informe de la variation de la position par rapport à la position précédente.

Ainsi, un codeur incrémental ne rapportera sa position angulaire que s'il a déterminé au préalable sa position de référence. C'est pourquoi, il faut initialiser les systèmes comportant des codeurs incrémentaux, afin de rechercher la position de référence.

Cette initialisation peut se faire :

- automatiquement lors de mise sous tension, comme par exemple pour le volant (qui se met à tourner).

- en lançant un procédure initiale de mise en mouvement, comme par exemple pour le bras BETA, le robot Ericc, etc...

Un codeur absolu signale quant à lui une position angulaire par rapport à une référence déjà définie dans le codeur. C'est un capteur "absolu".

Ainsi, un codeur absolu informe directement de sa position angulaire sans nécessiter une recherche de position de référence.

Un moyen pratique de différencier expérimentalement un codeur absolu d'un codeur incrémental est de se poser la question « que se passe-t-il lorsque je mets le capteur sous tension ? » . S'il recherche une position de référence, c'est alors un codeur incrémental, sinon c'est un codeur absolu.

Principe

Comme son nom l'indique, un codeur absolu délivre directement une valeur correspondant à la position angulaire de l'axe qu'il mesure. Chaque valeur (ou mot de données ou codes) est unique. Le nombre de codes détermine la résolution.

Dès que le codeur est allumé, il lit le code et génère une sortie.

La fréquence du changement de code permet quant à elle de déduire la vitesse angulaire.

Exemple : Codeur absolu à effet Hall utilisé sur les différents axes du robot NAO

Ce codeur absolu à effet Hall est constitué d'un microcontrôleur, d'un aimant, solidaire de l'axe dont on cherche à déterminer la position angulaire, et de quatre capteurs à effet Hall (X1, X2, Y1, Y2, montés de façon symétrique, en vis à vis de cet aimant sur le composant).

La différence des signaux issus des capteurs X1 et X2 est proportionnelle au cosinus de l'angle mesuré, tandis que la différence des signaux issus des capteurs Y1 et Y2 est proportionnelle au sinus du même angle.

La position angulaire s'obtient alors par le calcul suivant : \(\theta= arctan \left( \frac {Y_1-Y_2}{X_1-X_2} \right) \).

Cette information continue, image de la position absolue de l'aimant, est ensuite convertie sous forme numérique (à l'aide d'un CAN), codée sur 12 bits, soit 212 = 4096 valeurs.

C'est à dire que la mesure comprise entre 0 et 1 tour est convertie entre 0 et 4096 points (soit une résolution de 360°/4096 =0,0879°/pt).

Le codeur n'est pas idéalement linéaire, comme le précise la caractéristique ci-dessous :

Monotour ou multitours

Les codeurs absolus sont disponibles en monotour ou multitours. Les versions monotour fournissent des données de position pour un tour complet de 360°, qui se répètent à chaque tour de l'axe. Le multitours possède un compteur de tours qui permet au codeur d'indiquer non seulement la position de l'axe, mais également le nombre de tours.