Quelle est la différence entre le potentiomètre Arduino et l'encodeur rotatif

Quelle Est La Difference Entre Le Potentiometre Arduino Et L Encodeur Rotatif



Les potentiomètres et les encodeurs rotatifs sont tous deux utilisés pour détecter la rotation ou détecter la position. Ce sont des dispositifs électromécaniques utilisés ayant diverses applications dans le domaine de l'électronique. Ils peuvent également être interfacés avec Arduino pour réaliser différents projets. Cet article vise à démontrer les différences fondamentales entre un potentiomètre et un encodeur rotatif.

Qu'est-ce qu'un potentiomètre

Un potentiomètre est un rhéostat, ou nous pouvons l'appeler une résistance variable. La valeur de la résistance varie en fonction de la rotation de l'axe du potentiomètre. Les potentiomètres ne peuvent tourner que sur une distance définie. Il existe des potentiomètres analogiques et numériques, mais ils sont presque similaires. Les potentiomètres analogiques peuvent être interfacés avec des microcontrôleurs sur Arduino, Raspberry Pi et d'autres appareils. Un potentiomètre possède trois broches qui sont la broche de tension d'entrée Vcc, la broche de terre GND et la broche de signal d'entrée. La broche de signal fournit une entrée à Arduino.









Qu'est-ce qu'un encodeur rotatif

Les encodeurs rotatifs détectent la position angulaire du bouton rotatif et envoient un signal au microcontrôleur ou à tout autre appareil auquel ils sont connectés. Il a un disque avec des zones de contact régulièrement espacées qui sont connectées à une broche commune. Les encodeurs rotatifs ont également un bouton-poussoir intégré ou un commutateur rotatif qui donne des signaux ON et OFF selon des exigences spécifiques.







Schéma de brochage et description des broches de l'encodeur rotatif

Le schéma ci-dessous montre les broches du codeur rotatif. Ces broches sont décrites comme suit :

Sortie B ou CLK



Cette broche donne une sortie du nombre de fois que le bouton ou l'encodeur rotatif a tourné. Chaque fois que le bouton est tourné, le CLK complète un cycle de HIGH et LOW. Elle est comptée comme une rotation.

Sortie A ou DT

C'est la deuxième broche de sortie de l'encodeur rotatif qui détermine le sens de rotation. Il est en retard de 90° par rapport au signal CLK. Par conséquent, si son état n'est pas égal à l'état de CLK, le sens de rotation est dans le sens des aiguilles d'une montre, sinon dans le sens inverse des aiguilles d'une montre.

Changer

La broche de l'interrupteur est utilisée pour vérifier si le bouton-poussoir est enfoncé ou non.

Vcc

Cette broche est connectée à une alimentation 5V

Terre

Cette broche est connectée à la masse

Différence entre potentiomètre et encodeur rotatif

spécification Potentiomètre Codeur rotatif
Rotation Le potentiomètre ne peut être tourné que dans un sens, et cela aussi sur trois quarts de cercle. L'encodeur rotatif est capable de tourner à 360° en continu dans le sens des aiguilles d'une montre et dans le sens inverse des aiguilles d'une montre.
Appareil analogique ou numérique Le potentiomètre est principalement un dispositif d'entrée analogique qui mesure le changement de position par un changement de la valeur d'une résistance Un encodeur rotatif est un dispositif d'entrée numérique qui détecte la position angulaire et fournit des valeurs numériques.

Nombre de positions d'entrée Un potentiomètre a un nombre infini de positions d'entrée sur lesquelles des valeurs peuvent être prises car il s'agit d'un appareil analogique Les encodeurs rotatifs ont un nombre fini de positions d'entrée.

Configuration du potentiomètre avec Arduino

Le potentiomètre est plus facile à configurer avec un Arduino qu'avec un encodeur rotatif. Le potentiomètre n'a que trois broches VCC, GND et une broche INPUT connectée à Arduino. L'interfaçage du potentiomètre avec Arduino est illustré ci-dessous :

La programmation du potentiomètre dans Arduino est plus simple que celle de l'encodeur rotatif. Vous trouverez ci-dessous des exemples de codes de syntaxe pour les deux.

Exemple de code pour potentiomètre

const entier pot = A0 ; // Déclarer la broche d'entrée
void setup ( ) {
   pinMode ( pot, ENTRÉE ) ; // Valeur de configuration tirée du potentiomètre comme saisir
Serial.begin ( 9600 ) ;
}
boucle vide ( ) {
int potValue = analogRead ( pot ) ; // Lire la valeur de l'entrée prise par le potentiomètre
carte ( potValue, 0 , 1023 , 0 , 255 ) ; // Mise à l'échelle de la valeur de l'entrée pour correspondre 8 -bit
Serial.println ( potValue ) ; // Imprime la valeur entrée dans le potentiomètre
retard ( 100 ) ;
}

Le code du potentiomètre est très facile et simple. La broche d'entrée analogique d'Arduino est simplement déclarée pour recevoir l'entrée du potentiomètre, puis les fonctions analogRead () et map () sont utilisées pour lire et donner la valeur exacte de la lecture du potentiomètre.

Interfacer l'encodeur rotatif avec Arduino

L'encodeur rotatif a cinq broches. VCC et GND de l'encodeur rotatif sont connectés à celui d'Arduino. Les broches restantes CLK, DT et SW sont connectées aux broches d'entrée numérique d'Arduino.

Code Arduino pour encodeur rotatif

// Entrées d'encodeur rotatif
#définir CLK_PIN 2
#define DT_PIN 3
#définir SW_PIN 4
compteur entier = 0 ;
int currentCLKState ;
int lastCLKState ;
Chaîne currentDirection = '' ;
non signé long lastButtonPressTime = 0 ;
void setup ( ) {
// Définir les broches de l'encodeur comme contributions
    PinMode ( CLK_PIN, ENTRÉE ) ;
    PinMode ( DT_PIN, ENTRÉE ) ;
    PinMode ( SW_PIN, INPUT_PULLUP ) ;
// Configurer le moniteur série
Serial.begin ( 9600 ) ;
// Lire l'état initial de CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
boucle vide ( ) {
// Lire l'état actuel de CLK
currentCLKState = digitalRead ( CLK_PIN ) ;
// Si dernier et l'état actuel de CLK sont différents, alors une impulsion s'est produite
// Réagir uniquement à 1 changement d'état pour éviter le double comptage
si ( étatCLKactuel ! = dernierétatCLK && étatCLK actuel == 1 ) {
// Si l'état DT est différent de l'état CLK, alors
// l'encodeur tourne dans le sens inverse des aiguilles d'une montre, donc décrémenter
si ( numériqueLire ( DT_PIN ) ! = étatCLK actuel ) {
comptoir--;
directioncourante = 'CCW' ;
} autre {
// L'encodeur tourne dans le sens des aiguilles d'une montre, donc incrémentez
compteur++ ;
directioncourante = 'CW' ;
}
Serial.print ( « Sens de rotation : » ) ;
Serial.print ( directioncourante ) ;
Serial.print ( ' | Valeur du compteur : ' ) ;
Serial.println ( comptoir ) ;
}
// Se souvenir du dernier État CLK
lastCLKState = currentCLKState ;
// Lire l'état du bouton
int buttonState = digitalRead ( SW_PIN ) ;
// Si nous détectons un signal BAS, le bouton est enfoncé
si ( état du bouton == BAS ) {
// Si 50 ms se sont écoulées depuis le dernier Impulsion BASSE, cela signifie que le
// bouton a été enfoncé, relâché et enfoncé à nouveau
si ( millièmes ( ) - lastButtonPressTime > cinquante ) {
Serial.println ( 'Bouton appuyé!' ) ;
}
// Se souvenir du dernier événement de pression sur un bouton temps
lastButtonPressTime = millis ( ) ;
}
// Mettre dans un léger retard à aider faire rebondir la lecture
retard ( 1 ) ;
}

Dans le code ci-dessus, l'état de la broche CLK est vérifié dans la fonction loop(). S'il n'est pas égal à son état précédent, il indique que le bouton rotatif a tourné. Maintenant, pour vérifier le sens de rotation du bouton, l'état actuel de CLK est comparé à l'état de DT. Si les deux états sont inégaux, cela indique que le bouton a tourné dans le sens des aiguilles d'une montre et le compteur incrémente sa valeur pour afficher la position du bouton rotatif. Dans le cas contraire, le compteur décrémente.

Applications

Les potentiomètres sont principalement utilisés lorsqu'une fonction de contrôle est requise. Ils sont utilisés dans le contrôle du volume, le contrôle de la luminosité des LED. D'autre part, les codeurs rotatifs offrent une large gamme d'applications. Ils sont utilisés dans la robotique, les équipements médicaux, l'automatisation et les jeux.

Conclusion

Les potentiomètres et les encodeurs rotatifs sont tous deux des dispositifs particulièrement utiles dans le domaine de l'électronique. Les encodeurs rotatifs sont avancés par rapport aux potentiomètres, car ils peuvent tourner en continu à 360°. De même, ils ont plus d'applications dans l'électronique moderne, et ils sont légèrement plus difficiles à utiliser que les potentiomètres .