Ο κόσμος της ηλεκτρονικής και της ρομποτικής είναι γεμάτος με σπουδαίες μικρές εφευρέσεις που μας επιτρέπουν να ελέγχουμε και να παρακολουθούμε κάθε είδους κινήσεις. Ένα από τα πιο ευέλικτα και χρήσιμα στοιχεία είναι αναμφίβολα ο περιστροφικός κωδικοποιητής, τόσο ο οπτικός όσο και ο μαγνητικός. Αυτές οι συσκευές έχουν γίνει απαραίτητες σε έργα Arduino, αυτοματισμού και ελέγχου κινητήρων. Αν έχετε αναρωτηθεί ποτέ τι ακριβώς είναι ένας περιστροφικός κωδικοποιητής, θα αναρωτιέστε. Οπτικός ή μαγνητικός περιστροφικός κωδικοποιητής: τι είναι και παραδείγματα: KY-040 και AS5600, είστε στο σωστό μέρος.
Σε αυτό το άρθρο θα εμβαθύνουμε στη λειτουργία, τις εφαρμογές και τα πρακτικά παραδείγματα των περιστροφικών κωδικοποιητών, εστιάζοντας ιδιαίτερα σε δύο πολύ δημοφιλείς ενότητες: το ΚΥ-040 και AS5600Θα μάθετε πώς να διακρίνετε μεταξύ οπτικών και μαγνητικών κωδικοποιητών, τα φυσικά και ηλεκτρικά χαρακτηριστικά τους, πώς να τους συνδέετε και να τους προγραμματίζετε στο Arduino και τα πλεονεκτήματα που προσφέρει ο καθένας ανάλογα με το έργο σας. Θα σας δώσουμε επίσης συμβουλές για την επιλογή και τη χρήση αυτών των αισθητήρων στα δικά σας έργα, όλες εξηγούμενες με σαφή και ελκυστικό τρόπο, χωρίς να παραλείπουμε καμία σχετική λεπτομέρεια.
Τι είναι ένας περιστροφικός κωδικοποιητής;
Un περιστροφικός κωδικοποιητής Είναι ένας αισθητήρας σχεδιασμένος να μετρά την γωνιακή θέση, ταχύτητα και κατεύθυνση περιστροφής ενός περιστρεφόμενου άξονα ή στοιχείου. Αυτή η συσκευή μετατρέπει την περιστροφική κίνηση σε ηλεκτρικά σήματα (συνήθως ψηφιακούς παλμούς ή αναλογικά σήματα) που μπορούν στη συνέχεια να ερμηνευθούν από έναν μικροελεγκτή όπως ένα Arduino, ένα Raspberry Pi ή ακόμα και έναν βιομηχανικό ελεγκτή.
Αυτοί οι αισθητήρες είναι απαραίτητοι σε εφαρμογές όπου πρέπει να είναι γνωστή η ακριβής θέση ενός άξονα ή ο αριθμός των στροφών που έχει κάνει. Βρίσκονται συνήθως σε εκτυπωτές, σερβοκινητήρες, ρομπότ, συστήματα αριθμητικού ελέγχου και, φυσικά, σε έργα DIY, από διεπαφές μενού έως συστήματα ελέγχου ταχύτητας.
Τύποι περιστροφικών κωδικοποιητών: οπτικοί έναντι μαγνητικών
Οι περιστροφικοί κωδικοποιητές μπορούν να χωριστούν κυρίως σε οπτικοί y μαγνητικός, αν και υπάρχουν και άλλες λιγότερο συνηθισμένες παραλλαγές όπως οι χωρητικές.
Οπτικός περιστροφικός κωδικοποιητής
Ο οπτικός κωδικοποιητής, όπως και ο ΚΥ-040Λειτουργεί σε έναν δίσκο με σημάδια ή οπές και ένα οπτικό σύστημα πομπού/δέκτη (φωτοδίοδο ή LED). Καθώς ο άξονας περιστρέφεται, οι διακοπές που παράγονται από αυτά τα σημάδια παράγουν ηλεκτρικούς παλμούς που ο μικροελεγκτής μπορεί να μετρήσει, καθορίζοντας έτσι τη γωνιακή μετατόπιση. Η εσωτερική του κατασκευή συνήθως περιλαμβάνει ένα στατικό μέρος (τον δίσκο) και ένα περιστρεφόμενο μέρος (τον άξονα που είναι προσαρτημένος στο στοιχείο που μετράται).
Αυτός ο τύπος κωδικοποιητή ξεχωρίζει για την υψηλή ακρίβεια και την ταχεία απόκρισή του. Είναι πολύ χρήσιμοι σε εφαρμογές όπου η μηχανική ανθεκτικότητα και η ευκολία ψηφιακής ανάγνωσης είναι το κλειδί, όπως σε περιβάλλοντα εργασίας χρήστη, χειριστήρια έντασης ήχου, περιστροφικά μενού και εκπαιδευτικά ρομπότ.
Μαγνητικός περιστροφικός κωδικοποιητής
Από την άλλη πλευρά, ο μαγνητικός κωδικοποιητής χρησιμοποιεί έναν αισθητήρα ευαίσθητο στο μαγνητικό πεδίο (συνήθως έναν αισθητήρα Hall ή ένα εξειδικευμένο τσιπ όπως το AS5600), το οποίο ανιχνεύει τη γωνιακή θέση ενός μαγνήτη που είναι συνδεδεμένος στον άξονα. Αυτοί οι κωδικοποιητές μπορούν να παρέχουν υψηλότερη ανάλυση χάρη στην εσωτερική μετατροπή αναλογικού σε ψηφιακό και είναι λιγότερο ευάλωτοι σε βρωμιά ή σκόνη, καθώς δεν βασίζονται σε οπτικά εξαρτήματα. Επιπλέον, συνήθως προσφέρουν ψηφιακές (I2C ή PWM) ή/και αναλογικές εξόδους, γεγονός που τους καθιστά εύκολη την ενσωμάτωσή τους σε διαφορετικά ηλεκτρονικά συστήματα.
Αυξητικοί και απόλυτοι κωδικοποιητές: βασικές διαφορές
Ο κόσμος των κωδικοποιητών χωρίζεται περαιτέρω σε βαθμιαία y απόλυτα.
- Αυξητικός κωδικοποιητής: Παρέχει ένα σήμα με τη μορφή παλμών κάθε φορά που ο άξονας περιστρέφεται κατά ένα συγκεκριμένο κλάσμα. Ο αριθμός των παλμών ανά περιστροφή εξαρτάται από το σχεδιασμό και το μοντέλο. Για να προσδιορίσει την τρέχουσα θέση, το σύστημα πρέπει να μετρήσει και να θυμάται αυτούς τους παλμούς από ένα σημείο αναφοράς.
- Απόλυτος κωδικοποιητής: Παρέχει απευθείας την τρέχουσα γωνιακή θέση του άξονα, ακόμα κι αν έχει μετακινηθεί ενώ το σύστημα ήταν απενεργοποιημένο. Συνήθως έχει ειδική κωδικοποίηση στο δίσκο ή έναν μαγνητικό αισθητήρα υψηλής ανάλυσης.
Σε αυτό το άρθρο, θα επικεντρωθούμε σε βαθμικούς κωδικοποιητές (όπως ο KY-040) και σε έναν απόλυτο μαγνητικό κωδικοποιητή (AS5600), καθώς αυτοί είναι οι πιο συνηθισμένοι και ευκολότεροι στην ενσωμάτωση σε έργα Arduino.
Γενική λειτουργία ενός αυξητικού περιστροφικού κωδικοποιητή
Ο αυξητικοί κωδικοποιητές (όπως το KY-040) αποτελούνται από δύο κανάλια εξόδου, το κανάλι Α και το κανάλι Β, τα οποία παράγουν ψηφιακούς παλμούς 90º εκτός φάσης μεταξύ τους. Συγκρίνοντας τη σειρά με την οποία αλλάζουν αυτά τα κανάλια, είναι δυνατόν να συμπεράνουμε η κατεύθυνση περιστροφής (δεξιόστροφα ή αριστερόστροφα), εκτός από την καταμέτρηση των βημάτων (θέσεων) που έχουν ληφθεί.
Το σήμα που παράγεται ονομάζεται "τετραγωνισμός" και επιτρέπει διαφορετικές ακρίβειες:
- Μοναδική ακρίβεια: Εγγραφή μόνο ενός άκρου σε ένα κανάλι.
- Διπλή ακρίβεια: Καταγραφή και των δύο πλευρών σε ένα κανάλι.
- Τετραπλή ακρίβεια: Εγγραφή και των δύο πλευρών και στα δύο κανάλια.
Περιστροφικός κωδικοποιητής KY-040: Χαρακτηριστικά, Συνδέσεις και Χρήση με Arduino
El ΚΥ-040 Είναι ένας από τους πιο ευρέως χρησιμοποιούμενους βαθμιαίους περιστροφικούς κωδικοποιητές στον κόσμο των κατασκευαστών. Είναι μια συμπαγής, οικονομική και εύχρηστη μονάδα, ειδικά σχεδιασμένη για άμεση σύνδεση με πλακέτες Arduino και άλλους μικροελεγκτές.
Κύρια τεχνικά χαρακτηριστικά του KY-040:
- Τύπος: Οπτική σταδιακή
- Τάση τροφοδοσίας: 5V
- Κατανάλωση: 10 mA
- Κύκλοι ανά περιστροφή: 30
- Παλμοί ανά περιστροφή: 20
- Μέγεθος: 20 x 30 x 30 χιλιοστών
- βάρος: 10 γραμμάρια
- Ενσωματωμένο κουμπί ώθησης: Είναι δυνατό να πατήσετε τον άξονα προς τα μέσα σαν να ήταν κουμπί, κάτι που προσθέτει πολύ χρήσιμες επιπλέον λειτουργίες σε μενού ή διεπαφές.
Αντιστοίχιση ακίδας:
- CLK: Κανάλι Α (έξοδος παλμού)
- DT: Κανάλι Β (έξοδος παλμού)
- ΝΔ: Ενσωματωμένο κουμπί ώθησης
- +: Τροφοδοτικό 5V
- GND: Γη
Πώς συνδέω το KY-040 με το Arduino;
Η σύνδεση είναι άμεση και απλή:
Καρφίτσα KY-040 | Καρφίτσα Arduino |
---|---|
ΚΛΚ | 2 (ή οποιαδήποτε ψηφιακή είσοδος) |
DT | 3 (ή οποιαδήποτε ψηφιακή είσοδος) |
SW | 4 (ή οποιαδήποτε ψηφιακή είσοδος) |
+ | 5V |
GND | GND |
Μπορεί επίσης να χρησιμοποιηθεί με το Raspberry Pi αλλάζοντας τις ακίδες σύνδεσης, για παράδειγμα χρησιμοποιώντας GPIO16 για CLK, GPIO15 για DT και GPIO14 για SW.
Εσωτερική λειτουργία
Σε αντίθεση με τα ποτενσιόμετρα, Ο περιστροφικός κωδικοποιητής KY-040 δεν περιορίζει τη γωνία περιστροφής του., επιτρέποντας στον άξονα να περιστρέφεται επ' αόριστον. Εσωτερικά, δύο μεταλλικές βούρτσες ολισθαίνουν πάνω σε μια επιφάνεια διαιρεμένη σε τομείς, κλείνοντας την επαφή σε διαφορετικούς συνδυασμούς που ανιχνεύονται από τα κανάλια Α και Β.
Ο κωδικοποιητής επιστρέφει ψηφιακά σήματα και στις δύο ακίδες και η μετατόπιση υποδεικνύει την κατεύθυνση προς την οποία περιστρέφεται ο άξονας. Επιπλέον, επειδή είναι σταδιακή, η απόλυτη θέση είναι γνωστή μόνο όσο διατηρείται η μέτρηση από την αρχή του προγράμματος. Εάν χαθεί η τροφοδοσία ρεύματος, η μέτρηση μηδενίζεται.
Παράδειγμα βασικού κώδικα για Arduino
Ένα κλασικό παράδειγμα χρήσης του KY-040 είναι η αύξηση ή η μείωση ενός μετρητή με βάση την κατεύθυνση περιστροφής. Το απλοποιημένο σχήμα θα ήταν:
int A = 2; int B = 3; volatile int POSITION = 0; int PREVIOUS = 0; void setup() { pinMode(A, INPUT); pinMode(B, INPUT); Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(A), encoder, LOW); } void loop() { if (POSITION != PREVIOUS) { Serial.println(POSITION); PREVIOUS = POSITION; } } void encoder() { static unsigned long lastInterrupt = 0; unsigned long InterruptionTime = millis(); if (interruptionTime - lastInterruption > 5) { // Απομάκρυνση if (digitalRead(B) == HIGH){ POSITION++; } else { POSITION--; } POSITION = min(50, max(-50, POSITION)); // Περιορισμός του εύρους lastInterrupt = interruptTime; } }
Αυτός ο κώδικας περιλαμβάνει προστασία απόσβεσης για την αποτροπή ακανόνιστων μετρήσεων λόγω της μηχανικής φύσης των επαφών. Συνιστάται η εφαρμογή αυτής της προστασίας σε οποιοδήποτε έργο με αυξητικούς κωδικοποιητές.
Μαγνητικός Κωδικοποιητής: Χαρακτηριστικά, Συνδέσεις και Χρήση με Arduino
El AS5600 είναι ένα μαγνητικός περιστροφικός κωδικοποιητής υψηλής ανάλυσης, ιδανικό για ακριβείς αντικαταστάσεις παραδοσιακών ποτενσιόμετρων, ελέγχου κινητήρα και ρομποτικής. Το κύριο πλεονέκτημά του είναι ότι αξιοποιεί τη μαγνητική ανίχνευση, καθιστώντας το άτρωτο στη βρωμιά και τη μηχανική φθορά που επηρεάζουν τους οπτικούς φακούς.
Βασικά χαρακτηριστικά του AS5600:
- Τύπος: Απόλυτο, μαγνητικό
- Ανάλυση: 12 μύτες (4096 θέσεις ανά στροφή)
- τρόφιμα: 3,3V ή 5V
- Διασυνδέσεις: I2C (ψηφιακή) ή αναλογική έξοδος
- ευέλικτη διαμόρφωση: Μπορείτε να επιλέξετε κατεύθυνση και λειτουργία εξόδου από το υλικό
- Αναλογική έξοδος: Τάση ανάλογη προς τη γωνία, χρήσιμη για μικροελεγκτές χωρίς I2C
- Υψηλή ακρίβεια και επαναληψιμότητα: Το εσωτερικό του σύστημα είναι προετοιμασμένο να ανιχνεύει ακόμη και μικρές γωνιακές κινήσεις
Pinout και σύνδεση με το Arduino
Καρφίτσα AS5600 | Función | Ακροδέκτης Arduino (I2C) |
---|---|---|
VCC | σίτιση | 5V |
GND | Γη | GND |
SDA | Δεδομένα I2C | A4 |
SCL | Ρολόι I2C | A5 |
OUT | Αναλογική έξοδος (προαιρετικά) | A0 |
ΚΑΤΕΥΘΥΝΣΗ/ΛΕΙΤΟΥΡΓΙΑ | Επιλογή διεύθυνσης/λειτουργίας | Σύμφωνα με την επιθυμητή διαμόρφωση |
Σημαντική σημείωση: Σε διαφορετικά πιάτα Arduino Uno, Οι ακροδέκτες I2C ενδέχεται να διαφέρουν. Βεβαιωθείτε ότι έχετε ελέγξει το σχηματικό διάγραμμα της πλακέτας σας.
Παράδειγμα κώδικα για ψηφιακή ανάγνωση (I2C)
Για να αξιοποιήσετε στο έπακρο το AS5600 με το Arduino, είναι καλύτερο να χρησιμοποιήσετε τη συγκεκριμένη βιβλιοθήκη (μπορείτε να τη βρείτε στον διαχειριστή βιβλιοθήκης Arduino IDE κάνοντας αναζήτηση) AS5600):
#συμπεριλαμβάνω #συμπεριλαμβάνω Κωδικοποιητής AS5600; void setup() { Serial.begin(5600); Wire.begin(); if (!encoder.begin()) { Serial.println("Το AS9600 δεν εντοπίστηκε. Ελέγξτε τις συνδέσεις."); while (5600); } Serial.println("Το AS1 αρχικοποιήθηκε."); } void loop() { float angle = encoder.getAngle(); Serial.print("Γωνία: "); Serial.print(angle); Serial.println("μοίρες"); delay(5600); }
Με αυτόν τον κώδικα, μπορείτε να διαβάσετε τη γωνία σε μοίρες σε πραγματικό χρόνο. Είναι ιδανικός για εφαρμογές όπου πρέπει να γνωρίζετε την απόλυτη θέση στη μέγιστη ανάλυση.
Παράδειγμα κώδικα για αναλογική ανάγνωση
Αν προτιμάτε μια απλούστερη σύνδεση ή ο μικροελεγκτής σας δεν υποστηρίζει I2C, μπορείτε να επωφεληθείτε από την αναλογική έξοδο του AS5600:
const int analogPin = A0; void setup() { Serial.begin(9600); pinMode(analogPin, INPUT); } void loop() { int value = analogRead(analogPin); float angle = map(value, 0, 1023, 0, 360); Serial.print("Αναλογική γωνία: "); Serial.print(angle); Serial.println("μοίρες"); delay(100); }
Με αυτόν τον τρόπο λαμβάνετε μια ένδειξη ανάλογη με την πραγματική γωνία του άξονα σύμφωνα με τη θέση του μαγνήτη.
Πρακτικές εφαρμογές και συμβουλές χρήσης
Και οι δύο κωδικοποιητές έχουν πολύ ποικίλες εφαρμογές σε ηλεκτρονικά έργα:
- Κεντάκι-040: Ιδανικό για περιστροφικές διεπαφές χρήστη, μενού, έλεγχο φωτεινότητας και έντασης ήχου, επιλογή επιλογών, έλεγχο εκπαιδευτικών ρομπότ, έργα οικιακού αυτοματισμού και συστήματα που απαιτούν περιστροφικό έλεγχο χωρίς απόλυτη γωνιακή αναφορά.
- AS5600: Ιδανικό για έλεγχο θέσης και ταχύτητας κινητήρα, βιομηχανικό αυτοματισμό, ανίχνευση θέσης σε ρομποτικές αρθρώσεις, σταθεροποιημένα συστήματα κάμερας (gimbals), ψηφιακά ποτενσιόμετρα υψηλής ανάλυσης και οποιαδήποτε εφαρμογή που απαιτεί ακριβή ανίχνευση γωνίας.
Μερικές συμβουλές για τη χρήση:
- Πάντα να εφαρμόζω φιλτράρισμα κατά της αναπήδησης (αποσυμπίεση) όταν χρησιμοποιούνται μηχανικοί αυξητικοί κωδικοποιητές όπως ο KY-040 για την αποφυγή εσφαλμένων μετρήσεων.
- Για το AS5600, βεβαιωθείτε ότι ο μαγνήτης είναι σωστά ευθυγραμμισμένος με τον αισθητήρα για να διασφαλίσετε αξιόπιστες και σταθερές μετρήσεις.
- Να θυμάστε ότι με τους αυξητικούς κωδικοποιητές, εάν διακοπεί η παροχή ρεύματος, οι πληροφορίες θέσης χάνονται. Αυτό δεν συμβαίνει με το AS5600, καθώς είναι απόλυτο.
- Επωφεληθείτε από τις πολλαπλές λειτουργίες σύνδεσης που προσφέρονται και από τους δύο κωδικοποιητές για να τις προσαρμόσετε στις συγκεκριμένες ανάγκες του έργου σας.
Σύγκριση: Πότε να επιλέξουμε έναν οπτικό κωδικοποιητή και πότε έναν μαγνητικό;
Característica | KY-040 (Επιβαθμισμένο Οπτικό) | AS5600 (Απόλυτο Μαγνητικό) |
---|---|---|
Τύπος σήματος | Ψηφιακό (τετραγωνικό) | Ψηφιακό (I2C)/Αναλογικό |
Ανάλυση | 20 παλμοί/περιστροφή | 4096 θέσεις/γύρο |
Λειτουργεί μετά από διακοπή ρεύματος | Όχι (απαιτείται επανεκκίνηση της καταμέτρησης) | Ναι (απόλυτη θέση) |
Ευαισθησία στη σκόνη/βρωμιά | Ευαίσθητα (μηχανικά μέρη) | Πολύ στιβαρό |
τιμή | Πολύ οικονομικό | Μέτρια |
Δυσκολία ενσωμάτωσης | Πολύ εύκολο με βασικό κώδικα | Απαιτείται βιβλιοθήκη I2C ή προγραμματισμός |
Τυπικές εφαρμογές | UX, μενού, απλός έλεγχος | Έλεγχος κινητήρα, προηγμένη ρομποτική |
Η επιλογή μεταξύ των δύο θα εξαρτηθεί από τις προτεραιότητες του έργου σας: απλότητα και χαμηλό κόστος στην περίπτωση του KY-040, και ακρίβεια και στιβαρότητα στην περίπτωση του AS5600.