Dernière mise à jour : 07/09/2009

Présentation
Un encodeur optique (parfois aussi appelé roue codeuse optique) est un composant
électromécanique qui peut prendre différentes formes, et qui dans bien
des cas ressemble beaucoup à un
potentiomètre.
Mais contrairement à ce dernier, l'encodeur possède
un axe dont
le déplacement n'est limité ni vers la gauche ni
vers la droite : il peut être tourné indéfiniment
dans un sens
comme dans l'autre, il n'y a pas de butée.

Ce
genre de composant peut être utilisé
pour décrémenter ou incrémenter la
valeur de différents paramètres
dans un système électronique, tel un four à
micro-ondes avec affichage
numérique, par exemple. Il permet de déterminer une
position, la vitesse et le sens de rotation.
Fonctionnement général
Si
le potentiomètre classique possède trois pattes, l'encodeur optique
"classique" en possède souvent quatre (parfois cinq) : deux pattes pour
son alimentation (il y
a en effet une led à l'intérieur qui nécessite du courant pour
s'allumer) et deux pattes pour la sortie des "données", ces dernières
étant
généralement mises à disposition sur des pattes nommées A et B (l'éventuelle
troisième sortie - appelée signal de référence ou zéro - renvoie
une impulsion par
révolution complète). Il existe plusieurs types d'encodeurs
optiques, avec des structures internes plus ou moins différentes, mais
le principe de base reste le même : la led intégrée éclaire des
capteurs sensibles à la lumière au travers de trous pratiqués dans
un
disque physiquement solidaire de l'axe manoeuvrable par l'utilisateur.

S'il
n'y avait qu'un seul capteur sensible à la lumière, on
disposerait
déjà d'un système capable de produire des impulsions électriques à un
rythme
qui dépendrait de la vitesse de rotation de l'axe. Par exemple, si le
disque intercallé entre led émettrice et récepteur photosensible
possède 200 trous régulièrement espacés sur son pourtour, on
obtiendrait 200 impulsions pour une rotation complète de l'axe. Ce
serait déjà pas mal, mais en aucun cas ne permettrait de savoir dans
quel sens l'axe évolue. Pour déterminer le sens de rotation, un
deuxième capteur photosensible est installé à une certaine distance du
premier, de telle sorte que les informations délivrées par les
deux capteurs - qui reçoivent tous deux de la lumière mais pas au même
moment - soient décallées dans le temps. Le schéma suivant représente
l'encodeur optique RES20-50-200 de COPAL, constitué d'une led avec sa
résistance de limitation de courant intégrée, et les deux
photodétecteurs (phototransistors NPN) câblés en collecteur commun,
sorties A et B disponibles sur leurs jonctions émetteur (pour pouvoir
exploiter ces sorties, il faut mettre une résistance entre chaque
émetteur et la masse).

Le
décallage temporel en
question (entre sorties A et B) est généralement de Pi / 2, ce qui
correspond à un décallage
de 1/4 du temps occupé par une période complète. On parle aussi de
signaux en quadrature, ne soyez donc plus surpris de lire "encodeur
optique à quadrature" dans telle ou telle publicité, ça vient de là.
Mais un petit diagramme vaut mieux qu'un
grand discours...

L'écart
temporel entre les impulsions des deux sorties peut être obtenu de
plusieurs façons : les deux récepteurs photosensibles peuvent être
éclairés par un même trou placé sur une même circonférence, ou par deux
trous différents, chacun situé sur un cercle concentrique qui lui est
propre. Mais au final, on obtient la même chose sur les sorties A et B,
deux signaux périodiques de "fréquences" égales mais décallés en phase de Pi / 2.
Détermination du sens de rotation
Comme
vu précédement, le sens de rotation peut être deviné en regardant de
quelle façon les sorties A et B changent d'état logique. Cela est
facile à faire, il suffit de prendre une des deux sorties comme
référence et de regarder ce qui se passe sur l'autre. Si l'on décompose
dans le temps les différentes solutions binaires qu'offrent les deux
sorties, on se rend compte qu'il n'existe que quatres possibilitées -
ce qui n'a rien de surprenant puisqu'on travaille sur deux bits - qui
sont espacées de façon égales dans le temps.
Rotation dans le sens horaire
Supposons
pour commencer que les deux sorties soit à l'état logique bas. En
tournant l'axe de l'encodeur dans le sens des aiguilles d'une montre, la sortie A passe à l'état logique haut
alors que la sortie B reste à l'état logique bas. C'est l'instant T1...

Puis,
si on continue de tourner l'axe, la sortie B passe à son tour à l'état
logique haut, puis A repasse à l'état logique bas, puis B repasse
à l'état logique bas. Ce qui nous donne les quatres instants T1 à
T4 suivants :
T1 : A = 1 et B = 0
T2 : A = 1 et B = 1
T3 : A = 0 et B = 1
T4 : A = 0 et B = 0
On remarque que A est en avance sur B.
Rotation dans le sens anti-horaire
Il suffit de lire le diagramme dans l'autre sens...

T1 : A = 0 et B = 1
T2 : A = 1 et B = 1
T3 : A = 1 et B = 0
T4 : A = 0 et B = 0
On constate maintenant que B est en avance sur A. C'est
en sachant comment cela fonctionne dans ce sens que l'on peut en
déduire les faits inverses : en regardant en permanence l'état des deux
sorties A et B, on en déduit que l'axe a été tourné, et avec très peu
de besoin en calcul, on peut aussi en déduire dans quel sens la
rotation s'est opérée. Le simple fait de regarder à un instant donné
l'état logique des deux sorties A et B ne suffit cependant pas : il
faut aussi avoir mémorisé l'état de ces sorties lors du précédent
changement d'état, et effectuer une comparaison entre anciens et
nouveaux états pour savoir dans quel ordre les choses se passent. Une
façon de faire est expliquée plus en détails (avec un exemple
pratique) à la page PIC - Bases - Encodeur optique.
Nombres de trous et résolution
Le
nombre de trous pratiqués dans le disque et par lesquels la lumière de
la led peut passer pour aller jusqu'aux photodétecteurs, détermine la
précision de l'encodeur. Le disque peut comporter 100 trous sur
son pourtour, tout
comme il peut en comporter 6000. Ce qui veut dire que le nombre
d'impulsions fournies en un tour complet de l'axe (et du disque) peut
varier dans d'assez grandes proportions. Les deux photos qui suivent
montrent deux disques ayant des résolutions différentes : les trous
sont si nombreux et si serrés sur la deuxième photo, qu'on a un
peu de mal à les distinguer.

Plus
le nombre de trous est
élevé et plus la résolution est importante, cette dernière doit être
choisie en fonction de l'application concernée. Une résolution élevée
pourrait sembler préférable dans tous les cas (qui peut le plus
pourrait à priori le moins), mais elle n'est pas forcement nécessaire
et peut même poser certains problèmes dans des systèmes qui ne seraient
pas en mesure de traiter un gros flux d'informations dans un temps très
court (microcontrôleur travaillant avec une fréquence d'horloge basse,
par exemple). De plus, il existe un rapport
assez direct entre la résolution de l'encodeur et son prix, inutile de
dépenser plus que nécessaire (les prix varient entre 5 euros et 200
euros). D'un point de vue angulaire, la
résolution atteint 3,6 degrés pour un modèle 100 trous (360 / 100), et
atteind 0,06
degrés pour un modèle 6000 trous (360 / 6000). Si l'encodeur optique
doit être utilisé pour connaitre le positionnement d'un objet mobile
(tel qu'une lunette astronomique), la résolution devra être élevée. Par
contre, pour un petit montage électronique "utilitaire", un modèle
faible résolution peut sans doute largement suffire.
Encodeur asymétriques et symétriques
L'encodeur
vu ci-avant est de type asymétrique, les deux sorties A et B se font
sur un seul fil et sont référencées par rapport à la masse. Une sortie
(A ou B) peut délivrer soit un état "flottant", soit un état logique
haut ou bas selon la configuration interne de l'encodeur. Il existe
aussi des encodeurs de type symétriques pour lesquels les sorties A et
B se font chacune sur deux fils (A et A' pour la première sortie, B et
B' pour la seconde sortie). Pour ces derniers, les sorties ne peuvent
délivrer que des états logiques haut ou bas, jamais flottant.
C'est pourquoi on dit aussi de ce genre de sortie qu'elle correspond à
une configuration de type "push-pull". Tout comme dans le domaine
audio, les sorties symétrique (complémentées / différentielles) offrent
une meilleur immunité au bruit et assurent une plus grande robustessse
des signaux dans des environements perturbés, surtout quand les
liaisons entre encodeur et circuit de traitement sont longues (voir Symétrique / asymétrique).
Encodeurs incrémentaux
Ce
type d'encodeur permet uniquement de mesurer des changements de
position, mais il est bien sûr possible d'en déduire vitesse et même
accélération (ce que permettent aussi les autres types d'encodeurs).
Encodeur absolu
Ce
type d'encodeur permet de connaitre la position d'un objet solidaire de
l'axe. Il est constitué de segments opaques et de segments
transparents répartis en plusieurs cercles concentriques sur la
roue
de l'encodeur. Le premier cercle, situé au milieu de la roue,
possède un certain nombre de segments. Le cercle suivant
(en allant vers le bord extérieur du disque) possède deux fois plus de
segments que le premier. Le suivant (en allant toujours vers le bord
extérieur du disque) en possède deux foix plus que le précédent (et
donc quatre fois plus que le premier), etc. Le premier cercle (le plus
proche du centre) comporte
un segment transparent et un segment opaque. Le deuxième possède deux
segments transparents et deux segments
opaques. Le troisième cercle possède quatre segments de chaque type,
etc. On se trouve en pleine représentation binaire avec le bit de poids
fort situé au plus près du centre et le bit de poids faible situé le
plus à la périphérie du disque. On comprendra donc qu'un disque doté de
10 cercles sera en mesure de donner un nombre relatif à sa position
compris entre 0 et 1023 (2 puissance 10 positions possibles), et qu'un
disque doté de 16 cercles sera en mesure de donner un nombre relatif à
sa position, compris entre 0 et 65535 (2 puissance 16 positions). Bien
sûr, pour que cela fonctionne, il faut un capteur photosensible par
piste (cercle).
Voir aussi
PIC - Bases - Encodeur optique - Exemple avec PIC et MikroPascal
Alimentation ajustable 014c - Génération tension et signal PWM avec deux encodeurs optiques