Débuter avec un potentiomètre angulaire (360 degrés) Keyes KY-040

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Table des matières

Dans ce tutoriel nous allons apprendre comment utiliser un potentiomètre angulaire (Rotary Encoder). Un potentiomètre angulaire permet de connaître la position du curseur sur 360 degrés et de déterminer le sens de rotation. Pour cet article, j’ai utilisé un potentiomètre angulaire Keyes KY-040 acheté sur Banggood pour moins de 4,50€ (lot de 5).

Principe du potentiomètre angulaire

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 appel 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 change avant B, et inversement lorsque tourne dans le sens horaire.

signal potentiometre angulaire

Signaux en sortie du potentiometre angulaire. Source : http://playground.arduino.cc/Main/RotaryEncoders#Example1

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….

Branchement du Keyes KY-040

Branchez le KY-040 comme ceci sur un Arduino. La broche indiquée entre parenthèse correspond à un branchement sur un module ESP8266 ESP-12 (par exemple une Wemos D1 Mini) :

GND <–> GND

+       <–> +5V

CLK  <–>  Pin 4 (D1) -> signal A

DT     <–> Pin 5 (D2) -> signal B

SW    <–> Pin 0 (D3) -> Bouton poussoir

keyes ky-040 ky040 potentiometre angulaire 360 degres esp8266 arduino _

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 (signal A)
  • PinDT, broche DT (signal B)
  • PinSW, broche SW (bouton)
  • nbPos, résolution du potentiomètre

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

int val; 
int PinCLK = 4;
int PinDT = 5;
int PinSW = 0;
static long encoderPos = -1;    // Au 1er démarrage, il passera à 0
int PinCLKLast = LOW;
int nbPas = 20;                 // Résolution de l'encodeur
int n = LOW;

void setup() { 
  pinMode (PinCLK,INPUT);
  pinMode (PinDT,INPUT);
  pinMode (PinSW,INPUT);
  Serial.begin (9600);
} 

void loop() { 
   if (!(digitalRead(PinSW))) {      // Reset la position si on appui sur le potentiomètre
     encoderPos = 0;
     //Serial.println("Reset position");
   }
   
   n = digitalRead(PinCLK);
   
   if ((PinCLKLast == LOW) && (n == HIGH)) {
     
     if (digitalRead(PinDT) == LOW) {
       Serial.print("Sens antihoraire, position ");
       encoderPos--;
       if ( encoderPos < 0 ) {
         encoderPos = nbPas;
       }
     } else {
       Serial.print("Sens horaire, position ");
       encoderPos++;
       if ( encoderPos > ( nbPas - 1 ) ) {
         encoderPos = 0;
       }
     }
     Serial.print (encoderPos); Serial.print(", angle "); Serial.println( abs ( encoderPos * ( 360 / nbPas ) ) );
     //Serial.print ("/");
   } 
   PinCLKLast = n;
 }

Conclusions

Un potentiomètre angulaire permet de connaitre 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ée 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.

Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

8 Commentaires
  1. Bonjour,

    J’ai une erreur sur cette ligne : if ((PinCLKLast == LOW) && (n == HIGH)) {
    avec : ‘amp’ was not declared in this scope
    c’est quoi ce amp ?

    • Bonjour, c’est juste une erreur de mise en forme du code Arduino causée par un plugin que j’utilise pour le blog. C’est corrigé.

      • Merci, j’avais corrigé en cherchant…. Cependant, je viens de refaire le montage que vous proposez et il ne se passe absolument rien. j’obtiens juste la première ligne : Sens horaire, position 0, angle 0

        Quand j’appuie sur le bouton une diode bleu s’allume, quand je tourne d’un cran la diode d’upload s’allume si en encore un cran elle s’éteint et ainsi de suite, mais il ne se passe rien à l’écran .

        Etes vous sûr du montage et/ou du code ?

  2. You connect the rotary encoder to the 5v pin. Does that not cause problems? I thought the IO pins of the Wemos operate at 3.3V.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Calculateurs
×
Calculateur loi d'Ohm
Tension (U) - en Volt
Courant (I) - en Ampère
Résistance (R) - en Ohms
Puissance (P) - en Watts

Ce calculateur permet de calculer les relations entre le courant, la tension, la résistance et la puissance dans les circuits résistifs.

Saisir au moins deux valeurs puis cliquer sur calculer pour calculer les valeurs restantes. Réinitialisez après chaque calcul.

Rappel sur la Loi d'Ohm
La loi d'Ohm explique la relation entre la tension, le courant et la résistance en déclarant que le courant traversant un conducteur entre deux points est directement proportionnel à la différence de potentiel entre les deux points.
La loi d'Ohm s'écrit U = IR, où U est la différence de tension, I est le courant en ampère et R est la résistance en Ohms (symbole Ω).
Loi d'Ohm (U=RI)
×
Déchiffrer le code couleur d'une résistance à 4 bandes
Bande 1 Bande 2 Multiplicateur Tolérance
   

Résistance:  

1 000 Ω ±5%

Comment déchiffrer le code couleur d'une résistance à 4 anneaux
Formule : ab*cΩ ±d%
Les deux premières bandes (a, b) permettent de déterminer le chiffre significatif. La première bande correspond au chiffre de la dizaine, le second anneau le chiffre de l'unité. Par exemple Brun(1), Noir (0) donne le nombre 10.
La troisième bande (c) est un coefficient multiplicateur. Par exemple, l'anneau rouge est un coefficient multiplicateur de 100, ce qui donne 10 X 100 = 1000Ω.
Le quatrième anneau (d) indique la tolérance de la valeur nominale de la résistance. Par exemple l'anneau Or correspond à ±5%. Donc le fabricant de la résistance s'engage à ce que sa valeur soit comprise entre 950 Ω et 1050 Ω.
Déchiffrer code couleur 4 bandes
×
Déchiffrer le code couleur d'une résistance à 5 bandes
Bande 1 Bande 2 Bande 3 Multiplicateur Tolérance

Résistance:  

1 000 Ω ±5%

Comment déchiffrer le code couleur d'une résistance à 5 anneaux
Formule : abc*dΩ ±e%
Les trois premières bandes permettent de déterminer le chiffre significatif. La première bande correspond au chiffre de la dizaine, le second anneau le chiffre de l'unité. Par exemple Brun(1), Noir (0), Noir (0) donne le nombre 100
La quatrième bande est un coefficient multiplicateur. Par exemple, l'anneau brun correspond au coefficient multiplicateur 10, ce qui donne 100 X 10 = 1000Ω.
Le cinquième anneau indique la tolérance de la valeur nominale de la résistance. Par exemple l'anneau Or correspond à ±5%. Donc le fabricant de la résistance s'engage à ce que la valeur de la résistance soit comprise entre 950 Ω et 1050 Ω.
Déchiffrer code couleur 5 bandes
×
Calculateur de résistance série pour une ou plusieurs LED
Tension d'alimentation en Volt
Tension directe en Volt
Courant en mA
Résistance calculée en Ω
Puissance estimée en W

Ce calculateur permet de déterminer la résistance requise pour piloter une ou plusieurs LED connectées en série à partir d'une source de tension à un niveau de courant spécifié.

Remarque. Il est préférable d'alimenter le circuit avec une puissance nominale comprise entre 2 et 10 fois la valeur calculée afin d'éviter la surchauffe
Couleur Longueur d'onde (nm) Tension (V) pour LED ⌀3mm Tension(V) pour LED ⌀5mm
Rouge 625-630  1,9-2,1 2,1-2,2
Bleu 460-470 3,0-3,2 3,2-3,4
Vert 520-525 2,0-2,2 2,0-2,2
Jaune 585-595 2,0-2,2 3,0-3,2
Blanc 460-470 3,0-3,2 1,9-2,1
Résistance en série pour une ou plusieurs LED
×
Calculateur durée de vie d'une batterie
Capacité de la batterie
Consommation de l'appareil ou objet connecté

Ce calculateur estime la durée de vie d'une batterie, en fonction de sa capacité nominale et du courant ou de la puissance qu'une charge en tire.

La durée de vie de la batterie est une estimation idéalisée. La durée de vie réelle peut varier en fonction de l'état de la batterie, de son âge, de la température, du taux de décharge et d'autres facteurs. C'est le mieux que vous pouvez espérer obtenir.

Autonomie de la batterie = capacité de la batterie en mAh / courant de charge en mA

Durée de vie batterie
Publicité
À lire aussi
Composants
Sur le Forum
Derniers Sujets
Domotique et objets connectés à faire soi-même
Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment. 

Shopping cart