Πίνακας περιεχομένων:
Βίντεο: Απλός περιστροφικός αποκωδικοποιητής: 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Αυτό το εκπαιδευτικό περιγράφει μια απλή μέθοδο αποκωδικοποίησης ενός διαδοχικού περιστροφικού κωδικοποιητή χρησιμοποιώντας ένα Arduino Uno R3.
Συμπαγής ρουτίνες λογισμικού χρησιμοποιούνται για τον υπολογισμό του αριθμού των μεταβάσεων, την εξάλειψη της αναπήδησης επαφών και τον καθορισμό της κατεύθυνσης περιστροφής. Δεν απαιτούνται πρόσθετα στοιχεία και πίνακες αναζήτησης.
Παρέχονται εκδόσεις του κώδικα για διακοπές και χωρίς διακοπή.
Η έκδοση διακοπής του κώδικα απαιτεί μόνο έναν κωδικό διακοπής.
Εικόνες:
- Η φωτογραφία ανοίγματος δείχνει τον συναρμολογημένο κωδικοποιητή.
- Το στιγμιότυπο οθόνης δείχνει τον κωδικό για την έκδοση διακοπής και την καταμέτρηση όταν ο άξονας κωδικοποιητή περιστρέφεται δεξιόστροφα και αριστερόστροφα.
- Το βίντεο δείχνει την καταμέτρηση κατά τη γρήγορη περιστροφή.
Βήμα 1: Διάγραμμα κυκλώματος
Το διάγραμμα καλωδίωσης κωδικοποιητή φαίνεται στο σχήμα 1.
Τα καλώδια βραχυκυκλωμάτων συγκολλούνται απευθείας στους πείρους του κωδικοποιητή.
Αντικαταστήστε τα δύο μπλε σύρματα εάν η κατεύθυνση καταμέτρησης αντιστραφεί.
Βήμα 2: Λίστα μερών
Τα παρακάτω μέρη προέρχονται από τη διεύθυνση
- 1 μόνο Arduino UNO R3 με καλώδιο USB.
- 1 μόνο διαδοχικός περιστροφικός κωδικοποιητής (EC11 ή ισοδύναμος) με διακόπτη.
- 1 μόνο κουμπί που ταιριάζει στον άξονα.
- 3 μόνο καλώδια άλτης αρσενικού προς αρσενικό Arduino.
Βήμα 3: Θεωρία
Οι διαδοχικοί περιστροφικοί κωδικοποιητές δημιουργούν δύο τετραγωνικά κύματα το καθένα εκ των οποίων μετατοπίζεται κατά 90 μοίρες, όπως φαίνεται στο σχήμα 1.
Τα λογικά μοτίβα στην επαφή Α και την επαφή Β είναι διαφορετικά όταν ο άξονας περιστρέφεται δεξιόστροφα (CW) και αριστερόστροφα (CCW) μέσω των θέσεων 1 έως 6.
Οι συνήθεις μέθοδοι καθορισμού της κατεύθυνσης περιστροφής περιλαμβάνουν:
- σκεύη, εξαρτήματα
- δίδυμες διακοπές
- πίνακες αναζήτησης μοτίβου
Αυτό το έργο χρησιμοποιεί μια μέθοδο λογισμικού που δεν απαιτεί πίνακες αναζήτησης. [1]
Κατεύθυνση
Αντί να εξετάσουμε τα μοτίβα εξόδου από την επαφή Α και την επαφή Β, ας επικεντρωθούμε στην επαφή Α.
Αν δοκιμάσουμε την επαφή Β μετά από κάθε μετάβαση επαφής, σημειώνουμε ότι:
- Η επαφή A και η επαφή B έχουν αντίθετες λογικές καταστάσεις όταν ο κωδικοποιητής περιστρέφεται CW
- Η επαφή A και η επαφή B έχουν την ίδια λογική κατάσταση όταν ο κωδικοποιητής περιστρέφεται CCW
Πραγματικός κώδικας:
// ----- Μετρήστε τις μεταβάσεις
CurrentStateA = stateContactA (); εάν (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); εάν (CurrentStateA == CurrentStateB) Καταμέτρηση ++; εάν (CurrentStateA! = CurrentStateB) Καταμέτρηση--; LastStateA = CurrentStateA; }
Αυτή η μέθοδος προσφέρει τα ακόλουθα πλεονεκτήματα:
- δεν απαιτούνται πίνακες αναζήτησης
- απαιτείται μόνο μία γραμμή διακοπής
Debounce
Όλοι οι μηχανικοί κωδικοποιητές υποφέρουν από "αναπήδηση επαφής".
Εάν μια επαφή διακόπτη δεν κάνει/σπάσει καθαρά, η λογική της κατάσταση θα ταλαντεύεται γρήγορα από Υ HIGHΗΛΗ σε ΧΑΜΗΛΗ έως ότου η επαφή του διακόπτη ρυθμιστεί. Αυτό οδηγεί σε ψευδείς μετρήσεις.
Μια μέθοδος για την καταστολή της αναπήδησης επαφής είναι η προσθήκη ενός μικρού πυκνωτή σε κάθε επαφή διακόπτη. Ο πυκνωτής και η σχετική αντίσταση έλξης σχηματίζουν έναν ενσωματωτή ο οποίος βραχυκυκλώνει αποτελεσματικά τις υψηλές συχνότητες και επιτρέπει στην τάση του διακόπτη να ανεβαίνει/πέφτει χαριτωμένα.
Το μειονέκτημα αυτής της προσέγγισης είναι ότι οι μεταβάσεις μπορεί να χαθούν εάν ο άξονας του κωδικοποιητή περιστραφεί γρήγορα.
Κατάργηση λογισμικού
Αυτή η μέθοδος χρησιμοποιεί δύο μετρητές (ανοιχτό, κλειστό) που έχουν οριστεί στο μηδέν. [2]
Μόλις εντοπιστεί μια μετάβαση στην επαφή Α:
- Συνεχής δημοσκόπηση Επικοινωνία Α.
- Αυξήστε τον ανοιχτό μετρητή και επαναφέρετε τον κλειστό μετρητή, όποτε η επαφή Α είναι Υ HIGHΗΛΗ.
- Αυξήστε τον κλειστό μετρητή και επαναφέρετε τον ανοιχτό μετρητή, όποτε η επαφή A είναι ΧΑΜΗΛΗ.
- Βγείτε από τον βρόχο όταν ένας από τους μετρητές φτάσει σε έναν προκαθορισμένο αριθμό. Αναζητούμε ουσιαστικά την περίοδο σταθερής κατάστασης μετά από οποιαδήποτε αναπήδηση επαφών.
Πραγματικός κώδικας:
// ----- Επαφή κατάργησης A
ενώ (1) {if (digitalRead (ContactA)) {// ----- ContactA is Open Closed = 0; // Κενός απέναντι ολοκληρωτής Άνοιγμα ++; // Ενσωμάτωση εάν (Άνοιγμα> MaxCount) επιστρέφει HIGH; } else {// ----- ContactA is Closed Open = 0; // Κενός απέναντι ολοκληρωτής Κλειστό ++; // Ενσωμάτωση εάν (Κλειστό> MaxCount) επιστρέφει LOW. }}
Δεν χρειάζεται να καταργηθεί η επαφή Β καθώς οι μεταβάσεις επαφής Α και επαφής Β δεν συμπίπτουν.
Αρίθμηση
Ένα μηχανικό "απαγόρευση" διπλασιάζει αποτελεσματικά τον αριθμό σας, καθώς καταγράφονται δύο μετρήσεις μεταξύ των κλικ (βλέπε σχήμα 1).
Ο αριθμός των «απαγορευμένων» μπορεί να προσδιοριστεί χρησιμοποιώντας αριθμητική modulo 2, όπως φαίνεται παρακάτω.
Πραγματικός κώδικας:
// ----- Μετρήστε "δεσμευτές"
if (Count % 2 == 0) {Serial.print ("Count:"); Serial.println (Count / 2); }
βιβλιογραφικές αναφορές
Περισσότερες πληροφορίες μπορείτε να βρείτε στη διεύθυνση:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Βήμα 4: Λογισμικό
Αυτό το έργο απαιτεί μια πρόσφατη έκδοση του Ardino Uno R3 IDE (ολοκληρωμένο περιβάλλον ανάπτυξης), η οποία είναι διαθέσιμη από τη διεύθυνση
Κατεβάστε καθένα από τα παρακάτω δύο σκίτσα Arduino (επισυνάπτεται)
- rotary_encoder_1.ino (έκδοση δημοσκόπησης)
- rotary_encoder_2.no (έκδοση διακοπής)
Κάντε διπλό κλικ στην προτιμώμενη έκδοση και ακολουθήστε τις οδηγίες που εμφανίζονται στην οθόνη.
Απολαμβάνω …
Κάντε κλικ εδώ για να δείτε τις άλλες οδηγίες μου.
Συνιστάται:
Ένας άλλος περιστροφικός διακόπτης κυρίως τρισδιάστατης εκτύπωσης: 7 βήματα (με εικόνες)
Ένας άλλος περιστροφικός διακόπτης κυρίως τρισδιάστατα τυπωμένος: Λίγο καιρό πριν δημιούργησα έναν περιστροφικό διακόπτη κυρίως τρισδιάστατης εκτύπωσης ειδικά για το έργο μου Minivac 601 Replica. Για το νέο μου έργο Think-a-Tron 2020, χρειάζομαι έναν ακόμη περιστροφικό διακόπτη. Iάχνω για διακόπτη στήριξης πάνελ SP5T. Μια προσθήκη
LabDroid: Κωδικοποιητής/αποκωδικοποιητής κώδικα Morse: 4 βήματα
LabDroid: Κωδικοποιητής/αποκωδικοποιητής κώδικα Morse: Σημείωση: Αυτή η οδηγία δεν μπορεί να πραγματοποιηθεί 1: 1 στη νεότερη έκδοση του LabDroid. Θα το ενημερώσω σύντομα. Αυτό το έργο θα σας δείξει τι μπορείτε να κάνετε με το LabDroid. Δεδομένου ότι ένα Hello World κανονικά κατασκευάζεται με βάση το κείμενο, το φως ή τον ήχο, σκέφτηκα για το LabDr
Γραμμικός και περιστροφικός ενεργοποιητής: 11 βήματα
Γραμμικός και περιστροφικός ενεργοποιητής: Αυτό το εγχειρίδιο αφορά τον τρόπο κατασκευής γραμμικού ενεργοποιητή με περιστρεφόμενο άξονα. Αυτό σημαίνει ότι μπορείτε να μετακινήσετε ένα αντικείμενο εμπρός και πίσω και να το περιστρέψετε ταυτόχρονα. Είναι δυνατό να μετακινήσετε ένα αντικείμενο 45 mm (1,8 ίντσες) μπρος -πίσω και να το περιστρέψετε
Binary Tree Morse αποκωδικοποιητής: 7 βήματα (με εικόνες)
Binary Tree Morse Decoder: a.articles {font-size: 110.0%; font-weight: bold; γραμματοσειρά: πλάγια; κείμενο-διακόσμηση: κανένα? φόντο-χρώμα: κόκκινο;} a.articles: hover {φόντο-χρώμα: μαύρο;} Αυτό το διδακτικό εξηγεί πώς να αποκωδικοποιήσετε τον κώδικα Morse χρησιμοποιώντας ένα Arduino Uno R3.T
TR-01 DIY Περιστροφικός ελεγκτής συμπίεσης κινητήρα: 6 βήματα (με εικόνες)
TR-01 DIY Rotary Engine Compression Tester: Από το 2009, τα αρχικά TR-01 v1.0, v2.0 και v2.0 Baro της TwistedRotors έθεσαν το πρότυπο για χειροκίνητους, ψηφιακούς, περιστροφικούς ελεγκτές συμπίεσης κινητήρα. Και τώρα μπορείτε να φτιάξετε το δικό σας! Για το 2017, προς τιμήν της 50ης επετείου του Mazdas Rotary E