Αυτή τη φορά θα ασχοληθούμε με τη σύνδεση του αναλογικού τριαξονικού επιταχυνσιόμετρου ADXL335 με το Arduino.
Απαραίτητη
- - Arduino;
- - επιταχυνσιόμετρο ADXL335,
- - έναν προσωπικό υπολογιστή με το περιβάλλον ανάπτυξης του Arduino IDE.
Οδηγίες
Βήμα 1
Τα επιταχυνσιόμετρα χρησιμοποιούνται για τον προσδιορισμό του διανύσματος επιτάχυνσης. Το επιταχυνσιόμετρο ADXL335 έχει τρεις άξονες και χάρη σε αυτό, μπορεί να καθορίσει το διάνυσμα επιτάχυνσης σε τρισδιάστατο χώρο. Λόγω του γεγονότος ότι η δύναμη της βαρύτητας είναι επίσης ένα διάνυσμα, το επιταχυνσιόμετρο μπορεί να καθορίσει τον δικό του προσανατολισμό σε τρισδιάστατο χώρο σε σχέση με το κέντρο της Γης.
Στην εικόνα εμφανίζονται εικόνες από το διαβατήριο (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) για το επιταχυνσιόμετρο ADXL335. Εμφανίζονται εδώ οι άξονες συντεταγμένων της ευαισθησίας του επιταχυνσιόμετρου σε σχέση με τη γεωμετρική τοποθέτηση του σώματος της συσκευής στο διάστημα, καθώς και ένας πίνακας τιμών τάσης από 3 κανάλια επιταχυνσιόμετρου ανάλογα με τον προσανατολισμό του στο διάστημα. Τα δεδομένα στον πίνακα δίνονται για έναν αισθητήρα σε ηρεμία.
Ας ρίξουμε μια πιο προσεκτική ματιά σε αυτό που μας δείχνει το επιταχυνσιόμετρο. Αφήστε τον αισθητήρα να βρίσκεται οριζόντια, για παράδειγμα, σε ένα τραπέζι. Στη συνέχεια, η προβολή του διανύσματος επιτάχυνσης θα είναι ίση με 1g κατά μήκος του άξονα Z ή Zout = 1g. Οι άλλοι δύο άξονες θα έχουν μηδενικά: Xout = 0 και Yout = 0. Όταν ο αισθητήρας γυρίζει "στην πλάτη του", θα κατευθύνεται προς την αντίθετη κατεύθυνση σε σχέση με το διάνυσμα βαρύτητας, δηλαδή. Zout = -1g. Ομοίως, λαμβάνονται μετρήσεις και στους τρεις άξονες. Είναι σαφές ότι το επιταχυνσιόμετρο μπορεί να τοποθετηθεί όπως επιθυμείται στο διάστημα, οπότε θα πάρουμε μετρήσεις εκτός από το μηδέν και από τα τρία κανάλια.
Εάν ο ανιχνευτής ανακινείται έντονα κατά μήκος του κάθετου άξονα Ζ, η τιμή Zout θα είναι μεγαλύτερη από "1g". Η μέγιστη μετρήσιμη επιτάχυνση είναι "3g" σε καθέναν από τους άξονες προς οποιαδήποτε κατεύθυνση (δηλαδή και οι δύο με "συν" και "μείον").
Βήμα 2
Νομίζω ότι καταλάβαμε την αρχή λειτουργίας του επιταχυνσιόμετρου. Τώρα ας δούμε το διάγραμμα σύνδεσης.
Το τσιπ αναλογικού επιταχυνσιόμετρου ADXL335 είναι μάλλον μικρό και στεγάζεται σε ένα πακέτο BGA και είναι δύσκολο να το τοποθετήσετε σε έναν πίνακα στο σπίτι. Επομένως, θα χρησιμοποιήσω μια έτοιμη μονάδα GY-61 με επιταχυνσιόμετρο ADXL335. Τέτοιες ενότητες στα κινεζικά διαδικτυακά καταστήματα κοστίζουν σχεδόν μια δεκάρα.
Για να ενεργοποιήσετε το επιταχυνσιόμετρο, είναι απαραίτητο να παρέχετε τάση +3, 3 V στον ακροδέκτη VCC της μονάδας. Τα κανάλια μέτρησης αισθητήρα συνδέονται στις αναλογικές ακίδες του Arduino, για παράδειγμα, "A0", "A1" και " Α2". Αυτό είναι όλο το κύκλωμα:)
Βήμα 3
Ας φορτώσουμε αυτό το σκίτσο στη μνήμη του Arduino. Θα διαβάσουμε τις αναγνώσεις από τις αναλογικές εισόδους σε τρία κανάλια, θα τις μετατρέψουμε σε τάση και θα τις εξάγουμε στη σειριακή θύρα.
Το Arduino διαθέτει ADC 10-bit και η μέγιστη επιτρεπόμενη τάση pin είναι 5 volt. Οι μετρημένες τάσεις κωδικοποιούνται με bit που μπορούν να πάρουν μόνο 2 τιμές - 0 ή 1. Αυτό σημαίνει ότι ολόκληρο το εύρος μέτρησης θα διαιρεθεί με (1 + 1) στη 10η ισχύ, δηλ. σε 1024 ίσα τμήματα.
Για να μετατρέψετε τις μετρήσεις σε βολτ, πρέπει να διαιρέσετε κάθε τιμή που μετρήθηκε στην αναλογική είσοδο με 1024 (τμήματα) και, στη συνέχεια, πολλαπλασιάστε επί 5 (βολτ).
Ας δούμε τι πραγματικά προέρχεται από το επιταχυνσιόμετρο χρησιμοποιώντας τον άξονα Ζ ως παράδειγμα (τελευταία στήλη). Όταν ο αισθητήρας τοποθετείται οριζόντια και κοιτάζει προς τα πάνω, έρχονται οι αριθμοί (2,03 +/- 0,01). Επομένως, αυτό πρέπει να αντιστοιχεί στην επιτάχυνση "+ 1g" κατά μήκος του άξονα Z και γωνία 0 μοιρών. Γυρίστε τον αισθητήρα. Οι αριθμοί φτάνουν (1, 69 +/- 0, 01), οι οποίοι πρέπει να αντιστοιχούν στο "-1g" και γωνία 180 μοιρών.
Βήμα 4
Ας πάρουμε τις τιμές από το επιταχυνσιόμετρο σε γωνίες 90 και 270 μοίρες και να τις εισαγάγουμε στον πίνακα. Ο πίνακας δείχνει τις γωνίες περιστροφής του επιταχυνσιόμετρου (στήλη "A") και τις αντίστοιχες τιμές Zout σε βολτ (στήλη "B").
Για λόγους σαφήνειας, εμφανίζεται μια γραφική παράσταση τάσεων στην έξοδο Zout έναντι της γωνίας περιστροφής. Το μπλε πεδίο είναι το εύρος σε ηρεμία (με επιτάχυνση 1g). Το ροζ κουτί στο γράφημα είναι ένα περιθώριο, ώστε να μπορούμε να μετρήσουμε την επιτάχυνση έως + 3g και έως -3g.
Σε περιστροφή 90 μοιρών, ο άξονας Ζ έχει μηδενική επιτάχυνση. Εκείνοι. η τιμή των 1,67 βολτ είναι μηδενικό υπό όρους Zo για τον άξονα Ζ. Στη συνέχεια, μπορείτε να βρείτε την επιτάχυνση ως εξής:
g = Zout - Zo / ευαισθησία_z, εδώ το Zout είναι η μετρούμενη τιμή σε millivolts, Zo είναι η τιμή σε μηδενική επιτάχυνση σε millivolts, η ευαισθησία_z είναι η ευαισθησία του αισθητήρα κατά μήκος του άξονα Ζ. βαθμονομήστε το επιταχυνσιόμετρο και υπολογίστε την τιμή ευαισθησίας ειδικά για το αισθητήρας χρησιμοποιώντας τον τύπο:
ευαισθησία_z = [Z (0 μοίρες) - Z (90 μοίρες)] * 1000. Σε αυτήν την περίπτωση, η ευαισθησία του επιταχυνσιόμετρου κατά μήκος του άξονα Ζ = (2, 03 - 1, 68) * 1000 = 350 mV. Ομοίως, η ευαισθησία θα πρέπει να υπολογιστεί για τους άξονες Χ και Υ.
Η στήλη "C" του πίνακα δείχνει την επιτάχυνση που υπολογίστηκε για πέντε γωνίες με ευαισθησία 350. Όπως μπορείτε να δείτε, σχεδόν συμπίπτουν με αυτές που φαίνονται στο Σχήμα 1.
Βήμα 5
Θυμόμαστε τη βασική πορεία γεωμετρίας, παίρνουμε τον τύπο για τον υπολογισμό των γωνιών περιστροφής του επιταχυνσιόμετρου:
angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Οι τιμές είναι σε ακτίνια. Για να τις μετατρέψετε σε μοίρες, διαιρέστε με Pi και πολλαπλασιάστε με 180.
Ως αποτέλεσμα, στην εικόνα παρουσιάζεται ένα πλήρες σχέδιο που υπολογίζει τις γωνίες επιτάχυνσης και περιστροφής του επιταχυνσιόμετρου σε όλους τους άξονες. Τα σχόλια παρέχουν εξηγήσεις για τον κωδικό προγράμματος.
Κατά την έξοδο στη θύρα "Serial.print ()", ο χαρακτήρας "\ t" δηλώνει έναν χαρακτήρα καρτέλας έτσι ώστε οι στήλες να είναι ομοιόμορφες και οι τιμές να βρίσκονται το ένα κάτω από το άλλο. "+" σημαίνει συνένωση (συνένωση) χορδών. Επιπλέον, ο χειριστής "String ()" λέει ρητά στον μεταγλωττιστή ότι η αριθμητική τιμή πρέπει να μετατραπεί σε συμβολοσειρά. Ο τελεστής γύρου () στρογγυλεύει τη γωνία στον πλησιέστερο 1 βαθμό.
Βήμα 6
Έτσι, μάθαμε πώς να λαμβάνουμε και να επεξεργαζόμαστε δεδομένα από το αναλογικό επιταχυνσιόμετρο ADXL335 χρησιμοποιώντας το Arduino. Τώρα μπορούμε να χρησιμοποιήσουμε το επιταχυνσιόμετρο στα σχέδιά μας.