I) Qu’est-ce qu’un codeur incrémental
Mais avant toute choses, qu’est-ce qu’un codeur ? En image voici ce dont il s’agit :
Un simple bouton à première vue, mais qui en plus de cela permet de détecter la rotation de la tête. En résumé, vous allez pouvoir détecter via le raspberry une pression sur la tête de ce bouton, mais aussi des signaux (impulsions) lors de la rotation sens horaire ou anti-horaire.
La différence avec un simple potentiomètre est que la tête est en réalité une vis sans fin. Si vous aviez eu un potentiomètre vous vous seriez retrouvé bloquer au bout d’un moment à force d’avoir tourné dans un sens, ici avec notre vis sans fin, plus de soucis : il n’y a pas de limite dans un sens comme dans un autre.
Mais comment marche ce genre de système ?
En quelques mots, il s’agit dans la plupart des cas d’un montage contenant une pièce mécanique qui tourne et laissant passer de la lumière à chaque rotation.
De l’autre coté, à l’intérieur du codeur se trouve la plupart du temps pour faire court, un amplificateur et une résistance photosensible pour détecter la rotation dans un sens, et les mêmes composants pour la rotation dans le sens inverse.
On détecte ainsi des impulsions qui sont déphasées d’un certain angle et permet de savoir, fonction de qui est en avance sur qui, dans quel sens vous êtes entrain de tourner votre codeur, ce qui importe est de savoir quel résistance récupère la première impulsion finalement. Bref, ces explications courtes et résumées ne seront pas mieux que de lire la documentation pour se représenter les choses.
Pour plus d’informations, je vous ai donc mis ci-dessous la documentation du codeur que j’utilise :
http://partage.leblogdekzl.fr/raspberrypi/rotaryEncoder/PEC11.pdf
II) Montage électrique
Mais comment se branche ce type de composant ? Comme je le disais précédemment, il s’agit finalement d’un simple bouton et d’une vis sans fin. On va donc s’attendre à avoir un système en deux parties, voici donc le schéma du branchement qu’il faudra réaliser pour utiliser dans tous les cas le codeur.
C’est tout pour cette partie, à présent passons à la partie informatique! 🙂
III) Librairie rotaryEncoder
Comme je le disais précédemment, le circuit que vous venez de réaliser est normalement le même quelque soit la librairie que vous allez utiliser. Pour ma part, j’ai réalisé la librairie rotaryEncoder, dans le but de vous simplifier la tâche, je n’ai pas non plus trouvé d’autres librairies fonctionnelles et simple d’utilisation, néanmoins je suis sûr qu’il doit bien en exister une !http://partage.leblogdekzl.fr/rotaryEncoder/
Toutefois, j’ai mis un point d’honneur concernant la simplicité d’utilisation de cette librairie et documenté cette dernière, la documentation est disponible à ce lien : http://partage.leblogdekzl.fr/rotaryEncoder/doc/ et sera mis à jour à chaque nouvelle version de la librairie que j’aurai développé ! De plus, vous trouverez dans l’archive de la librairie un code raspi-encoder.cpp illustrant un exemple simple d’utilisation du codeur incrémental, si jamais la documentation ne vous suffit pas.
Bonjour,
je viens de charger la library, mais je ne vois aucune documentation.
Avez vous fait cela?
merci.
Pierre