Table des matières:

Tutoriel de l'encodeur rotatif avec Arduino : 6 étapes
Tutoriel de l'encodeur rotatif avec Arduino : 6 étapes

Vidéo: Tutoriel de l'encodeur rotatif avec Arduino : 6 étapes

Vidéo: Tutoriel de l'encodeur rotatif avec Arduino : 6 étapes
Vidéo: Projet Encodeur Rotatif avec Arduino [TUTO] 2024, Novembre
Anonim
Tutoriel de l'encodeur rotatif avec Arduino
Tutoriel de l'encodeur rotatif avec Arduino

L'encodeur rotatif est un composant électronique capable de surveiller le mouvement et la position lors de la rotation. L'encodeur rotatif utilise des capteurs optiques qui peuvent générer des impulsions lorsque l'encodeur rotatif tourne. L'application de l'encodeur rotatif généralement en tant que moniteur de mouvement mécanique ou robotique peut également être utilisée pour la sélection de menu sur l'écran. L'encodeur rotatif a deux sorties afin qu'il puisse faire la distinction entre la rotation négative (CW) et positive (CCW) et dispose également d'un seul bouton.

Étape 1: flux d'impulsions de l'encodeur rotatif

Flux d'impulsions de l'encodeur rot-t.webp
Flux d'impulsions de l'encodeur rot-t.webp

Le flux d'impulsions généré par l'encodeur rotatif suivant est comme l'image ci-dessus.

Étape 2: Brochage de l'encodeur rotatif

Brochage de l'encodeur rot-t.webp
Brochage de l'encodeur rot-t.webp

Explication:

  • TERRE TERRE
  • + +5V
  • Bouton SW de l'encodeur rotatif lorsqu'il est enfoncé
  • Données DT
  • Données CLK 2

L'une des broches DT ou CLK doit être connectée au pied d'interruption d'Arduino Uno, ou les deux DT et CLK sont connectés à la broche d'interruption.

Étape 3: Schéma

Schématique
Schématique
  • GND à GND Arduino Uno
  • + à +5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Étape 4: Coder

Code
Code

Dans le didacticiel suivant, qui sera utilisé comme interruption, le PIN 2 d'Arduino Uno, tandis que le PIN 3 n'est utilisé que comme entrée normale.

#define encoder0PinA 2#define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; void setup() { Serial.begin(9600); pinMode(encodeur0PinA, INPUT_PULLUP); pinMode(encodeur0PinB, INPUT_PULLUP); pinMode(encodeur0Btn, INPUT_PULLUP); attachInterrupt(0, doEncoder, CHANGE); } int valRotary, lastValRotary; boucle vide() { int btn = digitalRead(encoder0Btn); Serial.print(btn); Serial.print(" "); Serial.print(valRotary); if(valRotary>lastValRotary) { Serial.print(" CW"); } if(valRotary {

Serial.print(" CCW");

} lastValRotary = valRotary; Serial.println(" "); retard (250); } void doEncoder() { if (digitalRead(encoder0PinA) == digitalRead(encoder0PinB)) { encoder0Pos++; } else { encoder0Pos--; } valRotary = encoder0Pos/2.5; }

La ligne 10 du croquis ci-dessus est utilisée pour activer l'interruption de la broche 2 Arduino Uno. Dans la fonction "doEncoder" est calculé à partir de l'encodeur rotatif. Si la valeur de DT et CLK (interruption de broche d'Arduino Uno) est la même, alors la variable "encoder0Pos" sera incrémentée/ajoutée, en plus de cette condition, la variable "encoder0Pos" est décrémentée.

Étape 5: Explication

La valeur ValRotary est la valeur du nombre d'étapes en cours d'exécution. La valeur ValRotary est obtenue à partir de la valeur de lecture de l'encodeur du capteur rotatif divisée par 2,5. Une valeur de 2,5 est obtenue à partir du test, puisqu'un pas de l'encodeur rotatif peut dépasser 1, donc diviser par 2,5 pour sa valeur en fonction du pas et aussi de l'ajout du délai de lecture.

Alors que sur la ligne 19 - 25 est un programme pour déterminer si l'encodeur rotatif rotatif CW ou CCW. L'explication des lignes 19 à 25 est lorsque la lecture actuelle du codeur rotatif est supérieure aux données rotatives précédentes alors exprimées en CW. Alors que si la lecture actuelle est plus petite que la lecture précédente, elle est indiquée comme CCW.

Étape 6: sortie

Sortir
Sortir

1 = la valeur du bouton de démarrage du rotatif lorsqu'il n'a pas été enfoncé

Conseillé: