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

Μέτρηση γωνίας χρησιμοποιώντας Gyro, επιταχυνσιόμετρο και Arduino: 5 βήματα
Μέτρηση γωνίας χρησιμοποιώντας Gyro, επιταχυνσιόμετρο και Arduino: 5 βήματα

Βίντεο: Μέτρηση γωνίας χρησιμοποιώντας Gyro, επιταχυνσιόμετρο και Arduino: 5 βήματα

Βίντεο: Μέτρηση γωνίας χρησιμοποιώντας Gyro, επιταχυνσιόμετρο και Arduino: 5 βήματα
Βίντεο: Introduction to M5Stack Core2 ESP32 2" Display Development Module -Robojax 2024, Ιούλιος
Anonim
Μέτρηση γωνίας χρησιμοποιώντας Gyro, επιταχυνσιόμετρο και Arduino
Μέτρηση γωνίας χρησιμοποιώντας Gyro, επιταχυνσιόμετρο και Arduino

Η συσκευή είναι ένα πρόχειρο πρωτότυπο του τι θα γίνει τελικά ένα ρομπότ αυτοεξισορρόπησης, αυτό είναι το δεύτερο μέρος του πράγματος της τρύπας (διαβάστε το επιταχυνσιόμετρο και ελέγξτε έναν κινητήρα για να ισορροπήσετε). Το πρώτο μέρος μόνο με το γυροσκόπιο μπορεί να βρεθεί εδώ. Σε αυτό το διδακτικό θα μετρήσουμε τη γωνία χρησιμοποιώντας γυροσκόπιο και επιταχυνσιόμετρο και χρησιμοποιώντας μια τεχνική για να συγχωνεύσουμε και τους δύο αισθητήρες για να έχουμε ένα ομαλό σήμα. Η τεχνική ονομάζεται "συμπληρωματικό φίλτρο".πριν

Βήμα 1: Τι θα χρειαστούμε:

Τι θα χρειαστούμε
Τι θα χρειαστούμε
Τι θα χρειαστούμε
Τι θα χρειαστούμε
Τι θα χρειαστούμε
Τι θα χρειαστούμε
Τι θα χρειαστούμε
Τι θα χρειαστούμε

Κάποιο μέρος μπορεί να αντικατασταθεί και κάποια τροποποίηση στον κώδικα πρέπει να γίνει ώστε να ταιριάζει στο υλικό σας. Σε αυτό το έργο θα χρησιμοποιήσουμε:- Breadboard- Μικροελεγκτής, χρησιμοποίησα το Arduinoboard- Wire- Jumper Wires- Gyroscope XV-8100- Nunchuck Wii (για το επιταχυνσιόμετρο)- Προσαρμογέας Nunchuck Wii για το Arduino

Βήμα 2: Χτίζοντας…

Κτίριο…
Κτίριο…
Κτίριο…
Κτίριο…
Κτίριο…
Κτίριο…

Το κύκλωμα αποτελείται από ένα γυροσκόπιο συνδεδεμένο απευθείας στη θύρα 0 στο arduino σας και ένα nunchuck wii σύνδεση στη θύρα I2C. Συναρμολόγηση του γυροσκοπίου: 1. - συνδέστε το γυροσκόπιο στο breadboard2. - καλώδιο πάντα πράγμα:- Πείρος Vo από γυροσκόπιο συνδεδεμένο με αναλογική θύρα0 στο arduino (Ανοιχτό πορτοκαλί σύρμα)- Πείρος G από γυροσκόπιο συνδεδεμένος στη γείωση (Λευκό σύρμα)- Καρφίτσα V+ από γυροσκόπιο συνδεδεμένος σε Vdd (3.3V) (Πορτοκαλί σύρμα) Συναρμολόγηση το επιταχυνσιόμετρο: 1. - συνδέστε τον προσαρμογέα στο nunchuck2. - συνδέστε το nunchuck στο arduino χρησιμοποιώντας τον προσαρμογέα3. - τοποθετήστε τον αισθητήρα accel όπως στην παραπάνω φωτογραφία

Βήμα 3: Μερικές επιπλέον πληροφορίες πριν προχωρήσουμε

Μερικές επιπλέον πληροφορίες πριν προχωρήσουμε
Μερικές επιπλέον πληροφορίες πριν προχωρήσουμε
Μερικές επιπλέον πληροφορίες πριν προχωρήσουμε
Μερικές επιπλέον πληροφορίες πριν προχωρήσουμε
Μερικές επιπλέον πληροφορίες πριν προχωρήσουμε
Μερικές επιπλέον πληροφορίες πριν προχωρήσουμε

Και από τους δύο αισθητήρες μπορούμε να μετρήσουμε τη γωνία αλλά χρησιμοποιώντας δύο διαφορετικές τεχνικές. Για να μετρήσουμε τη γωνία χρησιμοποιώντας το γυροσκόπιο πρέπει να ενσωματώσουμε το σήμα. Αλλά γιατί πρέπει να το κάνουμε αυτό; Επειδή ο γυροσκόπιος μας δίνει τον γωνιακό ρυθμό, έτσι ένας απλός τρόπος για να πάρετε τη γωνία είναι ο γωνιακός ρυθμός να πολλαπλασιαστεί με το χρόνο [γωνία = γωνία + w * dt] Για να μετρήσετε τη γωνία χρησιμοποιώντας ένα επιταχυνσιόμετρο πρέπει να αισθανθούμε τη βαρύτητα σε κάθε άξονα του επιταχυνσιόμετρου, τι σημαίνει, η προβολή της επιτάχυνσης της βαρύτητας σε κάθε κατεύθυνση του αισθητήρα μας δίνει μια ιδέα για τη γωνία. [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Γιατί λοιπόν θα χρησιμοποιήσουμε δύο αισθητήρες αντί για έναν; Για να επωφεληθείτε και από τις δύο ιδιότητες αισθητήρα. Αν κοιτάξετε τη γραφική παράσταση της συνεχούς αύξησης των δεδομένων γύρο, αυτό ονομάζεται μετατόπιση και τα δεδομένα του επιταχυνσιόμετρου αλλάζουν πολύ σε μικρό χρονικό διάστημα. Και πώς να συγχωνεύσετε και τα δύο σήματα; Θα χρησιμοποιήσουμε μια τεχνική που ονομάζεται συμπληρωματικό φίλτρο. Δεν γνωρίζω την ακριβή θεωρία πίσω από αυτό, αλλά λειτουργεί καλά. Υπάρχουν κάποιες πληροφορίες στο διαδίκτυο, απλώς κάντε google αν χρειάζεστε περισσότερες πληροφορίες. Αυτός ο σύνδεσμος έχει πολλές πληροφορίες και μπορεί να είναι χρήσιμο.filtered_angle = HPF*(filtered_angle + w*dt) + LPF*(angle_accel); όπου HPF + LPF = 1Οι τιμές των HPF και LPF μπορούν να βρεθούν σε αυτόν τον σύνδεσμο, στο αρχείο filter.pdf. Σας ευχαριστούμε παιδιά από το "The DIY Segway". Απλά για δοκιμαστικό σκοπό θα ορίσουμε αυτές τις τιμές όπως αυτή, HPF = 0,98 και LPF = 0,02.

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

Ο κώδικας είναι μια προσαρμογή από έναν κώδικα που χρησιμοποίησα σε άλλο έργο. Πιθανώς υπάρχουν κάποιες μεταβλητές που δεν χρησιμοποιούνται. Χρησιμοποίησα μια βιβλιοθήκη για να διαβάσω τα δεδομένα nunchuck από τη διεύθυνση https://todbot.com/blog/. Σας ευχαριστώ Tod E. Kurt. Τα σχόλια για τον κώδικα είναι στα πορτογαλικά, μόλις έχω ελεύθερο χρόνο, θα το μεταφράσω. Ο κωδικός εξέρχεται μέσω της σειριακής γραμμής μερικοί αριθμοί με αυτό το μοτίβο: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Έτσι, μπορείτε να αποθηκεύσετε αυτές τις τιμές σε ένα σειριακό τερματικό και να σχεδιάσετε ένα γραφικό ή να χρησιμοποιήσετε τη γωνία για άλλα πράγματα. Εάν χρειάζεστε οποιαδήποτε εξήγηση σχετικά με τον κώδικα, παρακαλούμε να ρωτήσετε. Ο κωδικός είναι φερμουάρ Απλώς αποσυμπιέστε, ανοίξτε και ανεβάστε το στο arduino σας.

Βήμα 5: Δοκιμή και συμπέρασμα

Δοκιμές και συμπέρασμα
Δοκιμές και συμπέρασμα
Δοκιμές και συμπέρασμα
Δοκιμές και συμπέρασμα

Για να δοκιμάσω το σύστημα, έχω αποθηκεύσει τα δεδομένα χρησιμοποιώντας ένα πρόγραμμα που ονομάζεται Termite, στη συνέχεια εισάγω αυτά τα δεδομένα στο excel και σχεδιάζω το γραφικό για να δω πόσο καλό είναι το φίλτρο μου. Τα αποτελέσματα είναι εκπληκτικά. Φυσικά μπορείτε να χρησιμοποιήσετε το σήμα για να οδηγήσετε έναν κινητήρα ή άλλα πράγματα. Οποιοδήποτε σχόλιο, οποιαδήποτε αμφιβολία, οποιαδήποτε πληροφορία λείπει, απλά πείτε μου και το διορθώνω. Παρακαλώ αν σας αρέσει αυτό, βαθμολογήστε. Σας ευχαριστώ όλους.

Συνιστάται: