Table des matières:
Vidéo: Encodeur rotatif - Comprendre et l'utiliser (Arduino/autre ΜContrôleur): 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Un encodeur rotatif est un dispositif électromécanique qui convertit le mouvement de rotation en informations numériques ou analogiques. Il peut tourner dans le sens horaire ou antihoraire. Il existe deux types d'encodeurs rotatifs: les encodeurs absolus et relatifs (incrémentaux).
Alors qu'un codeur absolu génère une valeur proportionnelle à l'angle actuel de l'arbre, un codeur incrémental génère le pas de l'arbre et sa direction. (Dans ce cas, nous avons un codeur incrémental)
Les encodeurs rotatifs deviennent de plus en plus populaires car vous pouvez utiliser deux fonctions dans un seul module électrique: un simple interrupteur pour confirmer les opérations et l'encodeur rotatif pour naviguer, par ex. à travers un menu.
Un codeur rotatif incrémental génère deux signaux de sortie pendant que son arbre tourne. Selon la direction, l'un des signaux entraîne l'autre. (voir ci-dessous)
Étape 1: Comprendre les données de sortie
Comme vous pouvez le voir, lorsque l'arbre du codeur commence à tourner dans le sens des aiguilles d'une montre, la sortie A tombe d'abord à BAS et la sortie B la suit. Dans le sens inverse des aiguilles d'une montre, l'opération tourne en sens inverse.
Il ne nous reste plus qu'à implémenter cela sur notre µController (j'ai utilisé un Arduino Nano).
Étape 2: Construire le circuit
Comme je l'ai décrit précédemment, les sorties créent un flanc HAUT et un flanc BAS. Pour obtenir un HIGH propre aux broches de données A et B du µController, nous devons ajouter des résistances Pull-Up. La broche commune C va directement à la terre pour le flanc BAS.
Pour obtenir des informations sur le commutateur interne (bouton-poussoir), nous utiliserons les deux autres broches. L'un d'eux va à VCC et l'autre à une broche de données du µController. Nous devons également ajouter une résistance pull-down à la broche de données pour obtenir un LOW propre.
Il est également possible d'utiliser des résistances internes Pull-Up et Pull-Down de votre µController !
Dans mon cas, le brochage ressemble à:
- +3, 3V => +3, 3V (Arduino)(également +5V possible)
- GND => GND (Arduino)
- A => Pin10
-
B =>
Épingler
11
- C => GND
-
SW =>
Épingler
12
Étape 3: Rédaction du code
broche intA = 10; //commutateur interne A int pinB = 11; //commutateur interne B int pinSW = 12; //commutateur (encodeur enfoncé) int encoderPosCount = 0; // commence à zéro, changez si vous voulez
int positionval;
bool switchval; int mrotateLast; int mrotate;
void setup() {
int mrotateLast = digitalRead(pinA); Serial.begin (9600); retard (50); }
boucle vide() { readencoder(); if(readswitch() == 1){ Serial.println("Switch = 1"); } }
int encodeur (){
mrotate = digitalRead(pinA); if (mrotate != mrotateLast){ //le bouton tourne if (digitalRead(pinB) != mrotate) { //switch A a d'abord changé -> rotation dans le sens des aiguilles d'une montre encoderPosCount ++; Serial.println ("tourné dans le sens des aiguilles d'une montre"); } else {// le commutateur B a d'abord changé -> rotation dans le sens antihoraire encoderPosCount--; Serial.println ("tourné dans le sens antihoraire"); }
Serial.print("Position de l'encodeur: "); Serial.println(encoderPosCount); Serial.println(""); } mrotateLast = mrotate; retourner encoderPosCount; } bool readswitch(){
if(digitalRead(pinSW)!=0){ // le commutateur est enfoncé
while(digitalRead(pinSW)!=0){} //le commutateur est actuellement enfoncé switchval = 1; } else{switchval = 0;} //le commutateur n'est pas enfoncé return switchval; }
Maintenant, vous pouvez tourner l'encodeur et la variable encoderPosCount comptera si vous tournez dans le sens des aiguilles d'une montre et comptera à rebours si vous tournez dans le sens inverse des aiguilles d'une montre.
C'est ça! Simple et utile.
N'hésitez pas à modifier et exécuter le code. Vous pouvez l'implémenter dans votre projet.
Je vais également télécharger un projet LED où j'ai utilisé l'encodeur pour régler la luminosité de mes LED.
Conseillé:
Minuterie avec Arduino et encodeur rotatif : 5 étapes
Minuterie avec Arduino et encodeur rotatif : La minuterie est un outil souvent utilisé aussi bien dans les activités industrielles que domestiques. Cet ensemble est bon marché et facile à réaliser. Il est également très polyvalent, pouvant charger un programme choisi en fonction des besoins. Il y a plusieurs programmes écrits par moi, pour Ardui
Minuterie d'alimentation avec Arduino et encodeur rotatif : 7 étapes (avec images)
Minuterie d'alimentation avec Arduino et encodeur rotatif : cette minuterie d'alimentation est basée sur la minuterie présentée sur : https://www.instructables.com/id/Timer-With-Arduin… Un module d'alimentation et un SSR (relais à semi-conducteurs ) y étaient attachés.Des charges de puissance jusqu'à 1KW peuvent être exploitées et avec des changements minimes le l
Utiliser un moteur pas à pas comme encodeur rotatif : 9 étapes (avec photos)
Utilisez un moteur pas à pas comme encodeur rotatif : Les encodeurs rotatifs sont parfaits pour une utilisation dans des projets de microcontrôleur en tant que périphérique d'entrée, mais leurs performances ne sont pas très fluides et satisfaisantes. De plus, ayant beaucoup de moteurs pas à pas de rechange, j'ai décidé de leur donner un objectif. Donc si vous avez un stepper
Comment utiliser le moteur pas à pas comme encodeur rotatif et écran OLED pour les étapes : 6 étapes
Comment utiliser le moteur pas à pas comme encodeur rotatif et écran OLED pour les étapes : Dans ce didacticiel, nous allons apprendre à suivre les pas du moteur pas à pas sur l'écran OLED. Regardez une vidéo de démonstration. Le crédit pour le didacticiel original va à l'utilisateur youtube "sky4fly"
Encodeur rotatif : comment ça marche et comment l'utiliser avec Arduino : 7 étapes
Encodeur rotatif : comment ça marche et comment l'utiliser avec Arduino : vous pouvez lire ceci et d'autres tutoriels incroyables sur le site officiel d'ElectroPeak. PrésentationDans ce tutoriel, vous apprendrez à utiliser l'encodeur rotatif. Tout d'abord, vous verrez des informations sur l'encodeur rotatif, puis vous apprendrez comment