Les codeurs incrémentaux à 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.
Constitution d'un codeur incrémental à effet Hall
Le codeur incrémental à effet Hall est constitué de :
- un disque magnétique multipolaire, solidaire de la partie mobile, dont on souhaite mesurer la position angulaire (exemple rotor d'un moteur) ;
- un ou plusieurs détecteurs TOR magnétiques à effet Hall, solidaires de la partie fixe. Ils détectent le ou les champs magnétiques tournant du disque multipolaire fixé sur l'axe ;
- une carte de conditionnement du signal.
Principe
Si l'axe tourne à vitesse constante, le ou les détecteurs TOR magnétiques à effet Hall génèrent des signaux carrés.
Compter ces signaux carrés revient à déterminer la position angulaire de l'axe (si bien entendu une référence ait été donnée au préalable).
La fréquence de ces signaux carrés permet quant à elle de déduire la vitesse angulaire.
Exemple : Codeur incrémental à effet hall constitué d'un disque à 1 paire de pôles + 2 capteurs à effet hall décalés angulairement de 90° (voir image ci-dessus)

Si l'axe tourne à vitesse constante, chaque période d'un signal carré correspond à 1 tour de l'axe. Le décalage angulaire de 90° des 2 capteurs se retrouve sur les signaux avec un déphasage de 90°.
Compter les fronts montants (passage du niveau bas au niveau haut) et fronts descendants (passage du niveau haut au niveau bas) d'un même capteur revient à déterminer la position angulaire de l'axe (si bien entendu une référence ait été donnée au préalable).
En utilisant 1 seul capteur, la résolution est donc de 2 points/tr (1 front montant et 1 front descendant) soit 1 point = 180°. Les points (ou fronts) sont espacés de 180°.
En utilisant les 2 capteurs, la résolution est donc de 4 points/tr (2 points par capteur), soit 1 point = 90°. Les points (ou fronts) sont espacés de 90°. La mesure est plus précise qu'avec 1 seul capteur, mais l'avantage n'est pas là, car si l'on souhaite améliorer la résolution d'un facteur 2, il est préférable de doubler les paires de pôles sur le disque (choix moins onéreux que de doubler les capteurs...). L'avantage d'installer 2 capteurs est de pouvoir détecter le sens de rotation (voir explication ci-dessous).
Possibilité de déterminer le sens de rotation si utilisation de 2 détecteurs TOR magnétiques à effet Hall
Un seul capteur suffit pour compter le déplacement relatif.
En disposant 2 détecteurs TOR magnétiques à effet Hall, la résolution est améliorée, mais surtout il est possible de déterminer le sens.
En effet comme les capteurs sont décalés en quadrature :
- si le moteur tourne dans un sens, le capteur B détecte avant le capteur A (sens 1 ci-dessous) ;
- si le moteur tourne dans l'autre sens, c'est le capteur A qui détecte avant le capteur B (sens 2 ci-dessous).

On remarque que dans le sens 1 (figure ci-dessus), après un front montant ou descendant du capteur A, l'état du capteur A = l'état du capteur B.
On remarque que dans le sens 2 (figure ci-dessus), après un front montant ou descendant du capteur A, l'état du capteur A ≠ l'état du capteur B.
D'où, en notant point, l'image de la position angulaire de l'axe, on obtient la règle suivante :
- si, après un front du capteur A, l'état du capteur A = l'état du capteur B, alors : point = point+1 (sens 1)
- si, après un front du capteur A, l'état du capteur A ≠ l'état du capteur B, alors : point = point-1 (sens 2)
Ainsi, compter le nombre de points permet de déterminer la position angulaire de l'axe.
Calculer la variation de points pendant une durée t, permet de déterminer la vitesse angulaire moyenne de l'axe en point/s.
Position de référence absolue d'un codeur incrémental
Les codeurs incrémentaux sont des capteurs de position relative... Ils mesurent (comptent les fronts montants et descendants des signaux carrés) par rapport à la position précédente !
Il est donc nécessaire de déterminer une position de référence absolue de l'axe. Celle-ci est déterminée par rapport à une impulsion de référence. Ainsi, à chaque fois que le codeur est mis sous tension, il est donc nécessaire de faire tourner l'axe pour capter cette impulsion de référence, et donc d'en déduire la position de référence absolue . C'est l'inconvénient d'un codeur incrémental par rapport à un codeur absolu (qui ne nécessite aucune rotation initiale).
Il est donc nécessaire de disposer d'un autre capteur "extérieur" pour définir cette position de référence.
Si aucun capteur ne définie la position de référence, alors un codeur incrémental peut uniquement mesurer une vitesse.