Πίνακας περιεχομένων:

Φροντιστήριο περιστροφικού κωδικοποιητή με Arduino: 6 βήματα
Φροντιστήριο περιστροφικού κωδικοποιητή με Arduino: 6 βήματα

Βίντεο: Φροντιστήριο περιστροφικού κωδικοποιητή με Arduino: 6 βήματα

Βίντεο: Φροντιστήριο περιστροφικού κωδικοποιητή με Arduino: 6 βήματα
Βίντεο: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Ιούλιος
Anonim
Φροντιστήριο περιστροφικού κωδικοποιητή με Arduino
Φροντιστήριο περιστροφικού κωδικοποιητή με Arduino

Ο περιστροφικός κωδικοποιητής είναι ένα ηλεκτρονικό στοιχείο ικανό να παρακολουθεί την κίνηση και τη θέση κατά την περιστροφή. Ο περιστροφικός κωδικοποιητής χρησιμοποιεί οπτικούς αισθητήρες που μπορούν να παράγουν παλμούς όταν περιστρέφεται ο περιστροφικός κωδικοποιητής. Η εφαρμογή του περιστροφικού κωδικοποιητή συνήθως ως μηχανική ή ρομποτική οθόνη κίνησης μπορεί επίσης να χρησιμοποιηθεί για την επιλογή μενού στην οθόνη. Ο περιστροφικός κωδικοποιητής έχει δύο εξόδους έτσι ώστε να μπορεί να διακρίνει μεταξύ περιστροφής αρνητικής (CW) και θετικής (CCW) και διαθέτει επίσης ένα μόνο κουμπί.

Βήμα 1: Ροή παλμών περιστροφικού κωδικοποιητή

Ροή παλμών περιστροφικού κωδικοποιητή
Ροή παλμών περιστροφικού κωδικοποιητή

Η ροή παλμών που δημιουργείται από τον ακόλουθο περιστροφικό κωδικοποιητή είναι όπως στην παραπάνω εικόνα.

Βήμα 2: Pinout του Rotary Encoder

Pinout του Rotary Encoder
Pinout του Rotary Encoder

Εξήγηση:

  • GND GND
  • + + 5V
  • Κουμπί SW περιστροφικού κωδικοποιητή όταν πατηθεί
  • Δεδομένα DT
  • CLK Δεδομένα 2

Ένας από τους ακροδέκτες DT ή CLK πρέπει να είναι συνδεδεμένος στο πόδι διακοπής του Arduino Uno ή και οι δύο DT και CLK είναι συνδεδεμένοι στον ακροδέκτη διακοπής.

Βήμα 3: Σχηματικό

Σχηματικός
Σχηματικός
  • GND à GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Βήμα 4: Κωδικός

Κώδικας
Κώδικας

Στο παρακάτω σεμινάριο, το οποίο θα χρησιμοποιηθεί ως διακοπή είναι το PIN 2 του Arduino Uno, ενώ το PIN 3 χρησιμοποιείται μόνο ως κανονική είσοδος.

#define encoder0PinA 2 #define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (κωδικοποιητής0PinA, INPUT_PULLUP); pinMode (κωδικοποιητής0PinB, INPUT_PULLUP); pinMode (κωδικοποιητής0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {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 (""); καθυστέρηση (250)? } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = κωδικοποιητής0Pos/2.5; }

Στη γραμμή 10 του παραπάνω σκίτσου χρησιμοποιείται για να ενεργοποιηθεί η διακοπή του pin 2 Arduino Uno. Στη λειτουργία "doEncoder" υπολογίζεται από τον περιστροφικό κωδικοποιητή. Εάν η τιμή των DT και CLK (διακοπή pin του Arduino Uno) είναι η ίδια, τότε η μεταβλητή "encoder0Pos" θα αυξηθεί / προστεθεί, επιπλέον της συνθήκης αυτής, η μεταβλητή "encoder0Pos" μειώνεται.

Βήμα 5: Επεξήγηση

ValRotary value είναι η τιμή του αριθμού των βημάτων που εκτελούνται. Η τιμή ValRotary λαμβάνεται από την τιμή ανάγνωσης περιστροφικού κωδικοποιητή αισθητήρα διαιρούμενη με 2,5. Από τη δοκιμή λαμβάνεται μια τιμή 2,5, αφού ένα βήμα του περιστροφικού κωδικοποιητή μπορεί να υπερβεί το 1, οπότε διαιρέστε με 2,5 για την τιμή του σύμφωνα με το perstep και επίσης την προσθήκη της καθυστέρησης ανάγνωσης.

Ενώ βρίσκεστε στη γραμμή 19 - 25, είναι ένα πρόγραμμα για τον προσδιορισμό του περιστροφικού περιστροφικού κωδικοποιητή CW ή CCW. Η εξήγηση των γραμμών 19 - 25 είναι όταν η τρέχουσα ανάγνωση περιστροφικού κωδικοποιητή είναι μεγαλύτερη από τα προηγούμενα περιστροφικά δεδομένα που εκφράζονταν τότε ως CW. Αν η τρέχουσα ένδειξη είναι μικρότερη από την προηγούμενη ανάγνωση τότε δηλώνεται ως CCW.

Βήμα 6: Έξοδος

Παραγωγή
Παραγωγή

1 = η τιμή του κουμπιού έναρξης του περιστροφικού όταν δεν έχει πατηθεί

Συνιστάται: