Ας εξετάσουμε τη σύνδεση της μονάδας GY-273 με την ψηφιακή πυξίδα τριών αξόνων Honeywell HMC5883L. Αυτό το μικροκύκλωμα μπορεί να χρησιμοποιηθεί για μαγνητομετρικές μετρήσεις, κατά την πλοήγηση, εάν δεν απαιτείται υψηλή ακρίβεια μέτρησης (με σφάλμα 1 … 2 μοίρες και δυνατότητα βαθμονόμησης). Η συσκευή συνδέεται μέσω της διεπαφής I2C.
Απαραίτητη
- - Ψηφιακή πυξίδα HMC5883.
- - Arduino;
- - πλακέτα πρωτοτύπου και καλώδια σύνδεσης ·
- - υπολογιστή.
Οδηγίες
Βήμα 1
Αυτά είναι τα κύρια χαρακτηριστικά μιας μαγνητικής πυξίδας:
- Μαγνητικά ευαίσθητος αισθητήρας 3 αξόνων.
- 12-bit ADC με ανάλυση 2 mGs (milligauss).
- ενσωματωμένο αυτοέλεγχο ·
- χαμηλή τάση λειτουργίας και χαμηλή κατανάλωση
- ψηφιακή διεπαφή I2C
- υψηλό ποσοστό ψηφοφορίας - έως και 160 φορές το δευτερόλεπτο (ο χρόνος μιας μέτρησης είναι περίπου 6 ms).
- η ακρίβεια προσδιορισμού της κατεύθυνσης είναι 1 °… 2 ° ·
- μπορεί να χρησιμοποιηθεί σε ισχυρά μαγνητικά πεδία (έως ± 8 Gauss).
Το διάγραμμα για τη σύνδεση του μαγνητικού αισθητήρα HMC5883L με το Arduino φαίνεται στο σχήμα. Είναι πολύ συμπαγές και απλό, γιατί Η διεπαφή δύο καλωδίων I2C είναι εξαιρετική επειδή απαιτεί λίγες συνδέσεις. Μπορείτε να χρησιμοποιήσετε ένα breadboard.
Βήμα 2
Θα πρέπει να μοιάζει με τη φωτογραφία. Θα συνδέσω επίσης έναν λογικό αναλυτή στα δίαυλα SCL και SDA για να παρακολουθώ την ανταλλαγή πληροφοριών μεταξύ του Arduino και της μονάδας HMC5883. Δεν είναι υποχρεωτικό.
Βήμα 3
Ως πρώτη γνωριμία, ας προσπαθήσουμε να διαβάσουμε τους καταχωρητές αναγνώρισης 10 (0xA), 11 (0xB) και 12 (0xC) της ψηφιακής πυξίδας HMC5883 και να γράψουμε ένα τέτοιο σκίτσο όπως στο σχήμα. Διατίθεται με λεπτομερή σχόλια.
Βήμα 4
Το σήμα που λαμβάνεται με τον λογικό αναλυτή θα είναι όπως φαίνεται στην εικόνα.
Τι σημαίνει? Το πρώτο byte είναι η διεύθυνση I2C με την οποία (η κύρια συσκευή, Arduino) δημιουργούμε επικοινωνία (υψηλά 7 bits 0x1E) και τη λειτουργία εγγραφής (low bit - 0x0). ο αριθμός είναι 0x3C. Το δεύτερο byte είναι ο αριθμός 0xA, τον οποίο γράψαμε για τη διεύθυνση 0x1E και το bit επιβεβαίωσης από τον αισθητήρα HMC5883L, ο οποίος είναι ο σκλάβος. Αυτός είναι ο αριθμός μητρώου από τον οποίο θα αρχίσουμε να διαβάζουμε δεδομένα. Αυτό ολοκληρώνει την πρώτη συναλλαγή. Ξεκινά το επόμενο. Το τρίτο byte είναι ένα αίτημα ανάγνωσης από το slave (τα πιο σημαντικά 7 bit είναι η διεύθυνση 0x1E, το 8ο bit είναι η λειτουργία ανάγνωσης 0x1, ο αριθμός που προκύπτει είναι 0x3D). Τα τελευταία 3 τρία byte είναι η απόκριση από το HMC5883L slave από τους καταχωρητές 0xA, 0xB και 0xC, αντίστοιχα.
Η ψηφιακή πυξίδα HMC5883L κινείται μέσω των καταχωρητών ανεξάρτητα κατά τη συνεχή ανάγνωση. Εκείνοι. δεν είναι απαραίτητο (αλλά δεν απαγορεύεται) να καθορίζετε την περίπτωση κάθε φορά. Για παράδειγμα, αν αντί για 0xA γράφουμε 0x3 και διαβάζουμε 10 φορές, θα έχουμε τιμές σε 10 καταχωρητές, ξεκινώντας από τον 3ο έως τον 12ο.
Και ποιοι είναι αυτοί οι τρεις αριθμοί - 0x48, 0x34, 0x33; Χρησιμοποιώντας ξανά το φύλλο δεδομένων για την ψηφιακή πυξίδα HMC5883L, θα δούμε ότι αυτές είναι οι προεπιλεγμένες τιμές για τους τρεις καταχωρητές αναγνώρισης.
Βήμα 5
Για να λάβετε τα δεδομένα ψηφιακής πυξίδας στο μαγνητικό πεδίο, πρέπει να διαβάσετε τους καταχωρητές 3 έως 8, όπως ακριβώς διαβάζουμε τους καταχωρητές αναγνώρισης. Η μόνη διαφορά είναι ότι τα δεδομένα για καθέναν από τους τρεις άξονες X, Y και Z παρουσιάζονται ως αριθμοί διπλού byte. Μετατρέποντάς τα σε δεκαδικά ψηφία, παίρνουμε κατευθύνσεις σε καθέναν από τους τρεις άξονες.