Les Roues Codeuses

Caractéristiques

Configuration

Fonctionnement de la roue

Il y a trois voies qui transmettent les informations :

  • voie A
  • voie B
  • voie I

Les voies A et B sont directement issues des comparateurs. Chacunes sont à l'état haut uniquement quand la roue codeuse cache partiellement le circuit optique qui leurs sont associées, sinon elles sont à l'état bas.

Il y a un décalage de phase de 90 degrées en valeur absolue (aussi appelé quadrature de phase): c'est le signe de ce déphasage qui donnera le sens de rotation.

La voie I est la sortie d'un circuit, à l'état haut pendant un quart de période environ juste après une rotation complète.

Récupération du sens du déphasage

Dans le cas d'un signal B en avance de phase, on aura une succession de valeur

de valeur:

Voie A Voie B
0 0
0 1
1 1
1 0

Dans le cas d'un signal B en retard,

Voie A Voie B
0 0
1 0
1 1
0 1

Il suffit en théorie de récupérer deux valeurs successives pour déterminer le sens de rotation de la roue codeuse.

Pour pouvoir récupérer ces états, on doit donc la fréquence d'échantillonage doit être au moins quatre fois plus grande que la fréquence des signaux. On doit donc avoir une fréquence d'échantillonnage de 4 fois la fréquence maximale du capteur.

En rouge, sont les moments d'echantillonage.

La fiche technique indique une fréquence maximale recommandée de 100 kHz. Avec un microprocesseur dont la vitesse d'éxécution est de l'ordre du MHz, on n'a donc pas à se soucier si l'échantillonnage naïf sera insuffisant.

Implémentation

On utilisera les interruptions externes (lien vers la documentation officielle). On mettra une interruption aux 3 pins assocées aux signaux de la roue codeuse. On associera les pins de vitesses aux modes “CHANGING” et le pin de comptage de tour au mode “RISING”/““FALLING”.

À chaque fois que l'interruption sera actionnée, on mesura le temps à l'aide de la fonction *micros()*, retournant le temps de microsecondes depuis que l'Arduino est allumée.

Bibliographie