Les codeurs incrémentaux optiques
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 optique
Le codeur incrémental optique est constitué de :
- un disque (ou "roue codeuse") qui présente une succession de fentes. Ce disque est solidaire de la partie mobile, dont on souhaite mesurer la position angulaire (exemple rotor d'un moteur) ;
- un ou plusieurs détecteurs TOR photoélectriques, solidaires de la partie fixe (souvent placés dans une fourche optique, émetteur d'un côté et récepteur de l'autre). Le récepteur détecte la source lumineuse de l'émetteur si une fente du disque se trouve en face.
- une carte de conditionnement du signal.
NB : Le codeur ci-contre est dit rotatif mais il existe aussi des codeurs incrémentaux optiques linéaires (le disque est remplacé dans ce cas par une bande comportant des fentes, exemple du codeur optique linéaire du positionnement de la tête d'impression de l'imprimante).
Principe
Si l'axe tourne à vitesse constante, le ou les détecteurs TOR photoélectriques 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 optique constitué de 2 détecteurs TOR photoélectriques (disposés "en quadrature")

Supposons que sur les solutions 1 et 2 ci-dessus, chaque piste comporte 90 fentes.
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 180 points/tr (90 fronts montants et 90 fronts descendants) soit 1 point = 2°. Les points (ou fronts) sont espacés de 2°.
En utilisant les 2 capteurs, la résolution est donc de 360 points/tr (180 points par capteur), soit 1 point = 1°. Les points (ou fronts) sont espacés de 1°. 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 fentes (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 photoélectriques
Un seul capteur suffit pour compter le déplacement relatif.
En disposant 2 détecteurs TOR photoélectriques, 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 (top zéro sur l'image ci-dessus du disque d'un codeur incrémental optique à 2 pistes). 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).
Si le disque ne comporte pas de Top zéro, il est 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.