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

Πώς να χρησιμοποιήσετε τη μονάδα GY511 με το Arduino [Δημιουργήστε μια ψηφιακή πυξίδα]: 11 βήματα
Πώς να χρησιμοποιήσετε τη μονάδα GY511 με το Arduino [Δημιουργήστε μια ψηφιακή πυξίδα]: 11 βήματα

Βίντεο: Πώς να χρησιμοποιήσετε τη μονάδα GY511 με το Arduino [Δημιουργήστε μια ψηφιακή πυξίδα]: 11 βήματα

Βίντεο: Πώς να χρησιμοποιήσετε τη μονάδα GY511 με το Arduino [Δημιουργήστε μια ψηφιακή πυξίδα]: 11 βήματα
Βίντεο: Πώς κάνω κενό στο κλιματιστικό // Γιατί κάνω κενό στο κλιματιστικό // Πώς κάνω σωστό κενό a/c 2024, Νοέμβριος
Anonim
Πώς να χρησιμοποιήσετε τη μονάδα GY511 με το Arduino [Δημιουργήστε μια ψηφιακή πυξίδα]
Πώς να χρησιμοποιήσετε τη μονάδα GY511 με το Arduino [Δημιουργήστε μια ψηφιακή πυξίδα]

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Σε ορισμένα έργα ηλεκτρονικής, πρέπει να γνωρίζουμε τη γεωγραφική θέση ανά πάσα στιγμή και να κάνουμε μια συγκεκριμένη λειτουργία ανάλογα. Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε τη μονάδα πυξίδας LSM303DLHC GY-511 με το Arduino για να δημιουργήσετε μια ψηφιακή πυξίδα. Αρχικά, θα μάθετε για αυτήν την ενότητα και πώς λειτουργεί και, στη συνέχεια, θα δείτε πώς να διασυνδέσετε τη μονάδα LSM303DLHC GY-511 με το Arduino.

Τι θα μάθετε

  • Τι είναι η μονάδα πυξίδας;
  • Ενότητα πυξίδας και διεπαφή Arduino.
  • Φτιάξτε μια ψηφιακή πυξίδα με τη μονάδα GY-511 και το Arduino.

Βήμα 1: Γενικές πληροφορίες σχετικά με την ενότητα πυξίδας

Γενικές πληροφορίες σχετικά με την ενότητα πυξίδας
Γενικές πληροφορίες σχετικά με την ενότητα πυξίδας

Η μονάδα GY-511 περιλαμβάνει επιταχυνσιόμετρο 3 αξόνων και μαγνητόμετρο 3 αξόνων. Αυτός ο αισθητήρας μπορεί να μετρήσει τη γραμμική επιτάχυνση σε πλήρεις κλίμακες ± 2 g / ± 4 g / ± 8 g / ± 16 g και μαγνητικά πεδία σε πλήρεις κλίμακες ± 1.3 / ± 1.9 / ± 2.5 / ± 4.0 / ± 4.7 / ± 5.6 / ± 8.1 Gauss.

Όταν αυτή η μονάδα τοποθετείται σε μαγνητικό πεδίο, σύμφωνα με τον νόμο του Lorentz, προκαλεί ένα ρεύμα διέγερσης στο μικροσκοπικό του πηνίο. Η μονάδα πυξίδας μετατρέπει αυτό το ρεύμα στη διαφορική τάση για κάθε κατεύθυνση συντεταγμένων. Χρησιμοποιώντας αυτές τις τάσεις, μπορείτε να υπολογίσετε το μαγνητικό πεδίο προς κάθε κατεύθυνση και να λάβετε τη γεωγραφική θέση.

Υπόδειξη

Το QMC5883L είναι μια άλλη μονάδα πυξίδας που χρησιμοποιείται συνήθως. Αυτή η ενότητα, η οποία έχει παρόμοια δομή και εφαρμογή με τη μονάδα LMS303, είναι ελαφρώς διαφορετική σε απόδοση. Έτσι, εάν κάνετε τα έργα, να είστε προσεκτικοί σχετικά με τον τύπο της ενότητας σας. Εάν η μονάδα σας είναι QMC5882L, χρησιμοποιήστε την κατάλληλη βιβλιοθήκη και κωδικούς που περιλαμβάνονται επίσης στο σεμινάριο.

Βήμα 2: Απαιτούμενα εξαρτήματα

Απαιτούμενα εξαρτήματα
Απαιτούμενα εξαρτήματα

Συστατικά υλικού

Arduino UNO R3 *1

Επιταχυνσιόμετρο 3 αξόνων GY-511 + Μαγνητόμετρο *1

TowerPro Servo Motor SG-90 *1

1602 LCD μονάδα *1

Άλτες *1

Εφαρμογές λογισμικού

Arduino IDE

Βήμα 3: Διασύνδεση μονάδας πυξίδας GY-511 με Arduino

Διασύνδεση μονάδας πυξίδας GY-511 με Arduino
Διασύνδεση μονάδας πυξίδας GY-511 με Arduino
Διασύνδεση μονάδας πυξίδας GY-511 με Arduino
Διασύνδεση μονάδας πυξίδας GY-511 με Arduino

Η μονάδα πυξίδας GY-511 έχει 8 ακίδες, αλλά χρειάζεστε μόνο 4 από αυτές για διασύνδεση με το Arduino. Αυτή η μονάδα επικοινωνεί με το Arduino χρησιμοποιώντας πρωτόκολλο I2C, οπότε συνδέστε τις καρφίτσες SDA (έξοδο I2C) και SCK (είσοδο ρολογιού I2C) της μονάδας στις ακίδες I2C στην πλακέτα Arduino.

Όπως μπορείτε να δείτε, έχουμε χρησιμοποιήσει την ενότητα GY-511 σε αυτό το έργο. Αλλά μπορείτε να χρησιμοποιήσετε αυτήν την οδηγία για τη ρύθμιση άλλων μονάδων πυξίδας LMS303.

Βήμα 4: Βαθμονόμηση μονάδας πυξίδας GY-511

Για να πλοηγηθείτε, πρέπει πρώτα να βαθμονομήσετε τη μονάδα, που σημαίνει να ορίσετε το εύρος μέτρησης από 0 έως 360 μοίρες. Για να το κάνετε αυτό, συνδέστε τη μονάδα στο Arduino όπως φαίνεται παρακάτω και ανεβάστε τον ακόλουθο κώδικα στον πίνακα σας. Μετά την εκτέλεση του κώδικα, μπορείτε να δείτε τις ελάχιστες και μέγιστες τιμές της περιοχής μέτρησης για τον άξονα Χ, Υ και Ζ στο παράθυρο σειριακής οθόνης. Θα χρειαστείτε αυτούς τους αριθμούς στο επόμενο μέρος, οπότε γράψτε τους.

Βήμα 5: Κύκλωμα

Κύκλωμα
Κύκλωμα

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

Σε αυτόν τον κώδικα, χρειάζεστε τη βιβλιοθήκη Wire.h για επικοινωνία I2C και τη βιβλιοθήκη LMS303.h για τη μονάδα πυξίδας. Μπορείτε να κατεβάσετε αυτές τις βιβλιοθήκες από τους παρακάτω συνδέσμους.

Βιβλιοθήκη LMS303.h

Βιβλιοθήκη Wire.h

ΣημείωσηΑν χρησιμοποιείτε QMC5883, θα χρειαστείτε την ακόλουθη βιβλιοθήκη:

MechaQMC5883L.h

Εδώ, εξηγούμε τον κώδικα για το LMS303, αλλά μπορείτε να κατεβάσετε τους κωδικούς και για την ενότητα QMC.

Ας δούμε μερικές από τις νέες λειτουργίες:

compass.enableDefault ();

Προετοιμασία ενότητας

compass.read ();

Ανάγνωση των τιμών εξόδου της μονάδας πυξίδας

running_min.z = min (running_min.z, πυξίδα.m.z); running_max.x = max (running_max.x, πυξίδα.m.x);

Προσδιορισμός των ελάχιστων και μέγιστων τιμών του εύρους μέτρησης συγκρίνοντας τις μετρημένες τιμές.

Βήμα 7: Δημιουργία ψηφιακής πυξίδας

Μετά τη βαθμονόμηση της μονάδας, πρόκειται να δημιουργήσουμε μια πυξίδα συνδέοντας έναν σερβοκινητήρα στη μονάδα. Έτσι, ο δείκτης σερβο, μας δείχνει πάντα τη βόρεια κατεύθυνση, όπως το κόκκινο βέλος στην πυξίδα. Για να γίνει αυτό, πρώτα η μονάδα πυξίδας υπολογίζει πρώτα τη γεωγραφική κατεύθυνση και τη στέλνει στο Arduino και, στη συνέχεια, εφαρμόζοντας έναν κατάλληλο συντελεστή, θα υπολογίσετε τη γωνία που θα πρέπει να περιστρέφεται ο σερβοκινητήρας έτσι ώστε ο δείκτης του να δείχνει προς τον μαγνητικό βορρά. Τελικά, εφαρμόζουμε αυτή τη γωνία στον σερβοκινητήρα.

Βήμα 8: Κύκλωμα

Κύκλωμα
Κύκλωμα

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

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

Για αυτό το μέρος χρειάζεστε επίσης τη βιβλιοθήκη Servo.h, η οποία είναι εγκατεστημένη στο λογισμικό Arduino από προεπιλογή.

Ας δούμε μερικές από τις νέες λειτουργίες:

Servo Servo1;

Προετοιμασία ενότητας

compass.read ();

Παρουσίαση του αντικειμένου σερβοκινητήρα

Servo1.attach (servoPin); πυξίδα.init (); compass.enableDefault ();

Αρχικοποίηση της μονάδας πυξίδας και του σερβοκινητήρα

Το όρισμα Servo1.attach () είναι ο αριθμός του πείρου που είναι συνδεδεμένος με τον σερβοκινητήρα.

πυξίδα.m_min = (LSM303:: διάνυσμα) { -32767, -32767, -32767}; πυξίδα.m_max = (LSM303:: διάνυσμα) { +32767, +32767, +32767};

Χρησιμοποιώντας αυτές τις γραμμές ορίζετε τις ελάχιστες και μέγιστες τιμές για τη μέτρηση του εύρους που ελήφθη στο προηγούμενο μέρος.

float heading = compass.heading ((LSM303:: vector) {0, 0, 1});

Η συνάρτηση επικεφαλίδας () επιστρέφει τη γωνία μεταξύ του άξονα συντεταγμένων και ενός σταθερού άξονα. Μπορείτε να ορίσετε τον σταθερό άξονα με ένα διάνυσμα στο όρισμα συνάρτησης. Για παράδειγμα, εδώ, καθορίζοντας το (LSM303:: διάνυσμα) {0, 0, 1}, ο άξονας Ζ θεωρείται σταθερός άξονας.

Servo1.write (επικεφαλίδα);

Η συνάρτηση Servo1.write () εφαρμόζει την τιμή ανάγνωσης από τη μονάδα πυξίδας στον σερβοκινητήρα.

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

Συνιστάται: