Utiliser un Encodeur Rotatif potentiomètre angulaire

Projet par
Nabil.J

Arduino / Encodeur Rotatif / Potentiomètre Angulaire

Dans ce tutoriel nous allons apprendre à utiliser un encodeur rotatif (potentiomètre angulaire). Ce type de potentiomètre permet de connaître la position du curseur sur 360 degrés et de déterminer le sens de rotation. 

L'encodeur rotatif est notamment très utile, et très largement utilisé, pour la navigation dans les menus, car il permet de descendre ou monter dans le menu, et une pression de l'encodeur agit comme un switch permettant de valider une sélection.

L'encodeur rotatif est un vrai plus pour de nombreux projets Arduino.

Arduino

Image Matériel Qt. Description Prix
Module Encodeur Rotatif - Rotary Encoder - Arduino et Raspberry Un encodeur rotatif a un nombre défini de position qu'on sent (clics) en tournant le levier. Il permet donc de sélectionner une... 2.99 €
Clone Arduino Uno R3 - RobotDyn - Avec Pins A6 et A7
C'est un micro-contrôleur très largement utilisé par la communauté des makers.
Cette version de l'UNO R3, avec ATMega...
12.90 €
40 Cavaliers Dupont 10cm Mâle/Femelle - Arduino

40 cavaliers ("jumpers") Dupont Mâle/Femelle de 10cm. Ce sont les cavaliers types à utiliser pour les prototypages sur...

1.99 €
Ajouter au panier 17.88 €
Image Matériel Qt. Description Prix

Instructions

1 - Principe du potentiomètre angulaire 5 Minute(s)

Un potentiomètre angulaire à un nombre définit de positions pour une révolution complète (un tour de 360 degrés). On peut sentir un clic à chaque pas lorsqu’on tourne le curseur du potentiomètre. Le KY-040 possède 30 pas, soit une résolution de 12 degrés.

Même si on appelle ce composant un potentiomètre, le principe de fonctionnement en est tout autre. Ici on ne mesure pas la valeur d’une résistance variable, on mesure des signaux logiques sur deux broches digitales de l’Arduino. Par exemple, lorsque l’on est sur une position, A et B ont le même niveau logique (0 ou 1). Si on tourne dans le sens horaire, le signal d’état A a changé avant B, et inversement lorsque tourne dans le sens horaire.

t8n6xk5tpIARHxesyc4JIdP_kKq-_hQ33S_rLhPT

source : PlayGround.Arduino

Le KY040 est également équipé d’un bouton que l’on actionne en appuyant sur l’axe. Le signal est récupéré sur la broche repérée SW. On pourra s’en servir pour faire un Reset de la position (au démarrage), allumer un afficheur….

 

2 - Branchement du Keyes KY-040 15 Minute(s)

Branchez le KY-040 comme ceci sur un Arduino :

GND <–> GND
+       <–> +5V
CLK  <–> Pin 4 (D1) -> signal A
DT     <–> Pin 5 (D2) -> signal B
SW    <–> Pin 0 (D3) -> Bouton poussoir

4XuYd7uy8sJlRcaIVJ-NBcazOj7t163ZBllNkhbc

Code

Voici un petit code pour tester rapidement le comportement du KY040. En début de programme, vous trouverez plusieurs variables pour configurer le programme en fonction de votre branchement et des caractéristiques de votre potentiomètre angulaire :

  • PinCLK, broche CLK (pin 12 de la carte RobotDyn UNO)

  • PinDT, broche DT (pin 13 de la carte RobotDyn UNO)

  • PinSW, broche SW (pin 0 de la carte RobotDyn UNO)

  • nbPos, résolution du potentiomètre

Ouvrez le moniteur série sous 9600 Bauds pour afficher l’index de la position et l’angle du curseur.

3 - Conclusion 5 Minute(s)

Un potentiomètre angulaire permet de connaître la position d’un curseur sur un tour complet. On peut également déterminer le sens de rotation. Petit bémol toutefois, il est nécessaire de mettre le potentiomètre dans une position initiale connue au démarrage du programme (zéro), position à partir de laquelle seront déterminés les changements suivants. Comme à chaque redémarrage du programme, on perd la position précédente, on ne pourra pas utiliser le KY-040 pour faire un contrôle de volume par exemple. On pourra utiliser le signal SW du bouton poussoir pour réaliser un reset de la position par exemple.

 

Vous en avez fait une copie?