Πίνακας περιεχομένων:
Βίντεο: ADXL345 Χρήση Arduino Uno R3: 5 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Σε αυτό το μάθημα, θα μάθουμε πώς να χρησιμοποιούμε τον αισθητήρα επιτάχυνσης ADXL345.
Βήμα 1: Στοιχεία
- Πίνακας Arduino Uno * 1
- Καλώδιο USB * 1
- ADXL345 *1
- Breadboard * 1
- Καλώδια βραχυκυκλωτήρων
Βήμα 2: Αρχή
Ένα επιταχυνσιόμετρο χρησιμοποιείται για τη μέτρηση της δύναμης που παράγεται κατά την επιτάχυνση. Η πιο θεμελιώδης είναι η κοινώς γνωστή επιτάχυνση της βαρύτητας που είναι 1g.
Μετρώντας την επιτάχυνση που προκαλείται από τη βαρύτητα, μπορείτε να υπολογίσετε τη γωνία κλίσης της συσκευής προς την επίπεδη επιφάνεια. Μέσω της ανάλυσης της δυναμικής επιτάχυνσης, μπορείτε να πείτε τον τρόπο με τον οποίο κινείται η συσκευή. Για παράδειγμα, ο πίνακας αυτοεξισορρόπησης ή το hoverboard εφαρμόζουν τον αισθητήρα επιτάχυνσης και το γυροσκόπιο για διόρθωση φίλτρου και στάσης Kalman.
ADXL345
Το ADXL345 είναι ένα μικρό, λεπτό, χαμηλής ισχύος, επιταχυνσιόμετρο 3 αξόνων με μέτρηση υψηλής ανάλυσης (13-bit) έως και g 16 g. Τα ψηφιακά δεδομένα εξόδου διαμορφώνονται ως συμπλήρωμα 16-bit δύο και είναι προσβάσιμα είτε μέσω ψηφιακής διεπαφής SPI (3 ή 4-καλωδίων) είτε I2C. Σε αυτό το πείραμα, χρησιμοποιείται η ψηφιακή διεπαφή I2C.
Είναι κατάλληλο για τη μέτρηση της στατικής επιτάχυνσης της βαρύτητας σε εφαρμογές ανίχνευσης κλίσης, καθώς και τη δυναμική επιτάχυνση που προκύπτει από κίνηση ή κρούση. Η υψηλή του ανάλυση (4 mg/LSB) επιτρέπει τη μέτρηση αλλαγής κλίσης λιγότερο από 1,0 °. Και η εξαιρετική ευαισθησία (3,9mg/LSB @2g) παρέχει έξοδο υψηλής ακρίβειας έως ± 16g.
Πώς λειτουργεί το ADXL345
Το ADXL345 ανιχνεύει την επιτάχυνση με το στοιχείο ανίχνευσης στο μπροστινό μέρος και στη συνέχεια το στοιχείο ανίχνευσης ηλεκτρικού σήματος το μετατρέπει σε ηλεκτρικό σήμα, το οποίο είναι αναλογικό. Στη συνέχεια, ο προσαρμογέας AD ενσωματωμένος στη μονάδα μετατρέπει το αναλογικό σήμα σε ψηφιακό.
Τα X_OUT, Y_OUT και Z_OUT είναι οι τιμές στον άξονα X, Y και Z αντίστοιχα. Τοποθετήστε τη μονάδα με την όψη προς τα πάνω: Το Z_OUT μπορεί να φτάσει το +1g το πολύ, το ελάχιστο X_OUT είναι -1g προς την κατεύθυνση Ax και το ελάχιστο Y_OUT είναι -1g προς την κατεύθυνση Ay. Από την άλλη πλευρά, αναποδογυρίστε τη μονάδα: το ελάχιστο Z_OUT είναι -1g, το μέγιστο X_OUT είναι +1g προς την κατεύθυνση Ax και το μέγιστο Y_OUT είναι +1g προς την κατεύθυνση Ay., όπως φαίνεται παρακάτω. Περιστρέψτε τη μονάδα ADXL345 και θα δείτε την αλλαγή τριών τιμών.
όταν το κανάλι Α αλλάζει από υψηλό σε χαμηλό, εάν το κανάλι Β είναι υψηλό, υποδεικνύει ότι ο περιστροφικός κωδικοποιητής περιστρέφεται δεξιόστροφα (CW). αν εκείνη τη στιγμή το κανάλι Β είναι χαμηλό, σημαίνει περιστροφές αριστερόστροφα (CCW). Έτσι, αν διαβάσουμε την τιμή του καναλιού Β όταν το κανάλι Α είναι χαμηλού επιπέδου, μπορούμε να γνωρίζουμε προς ποια κατεύθυνση περιστρέφεται ο περιστροφικός κωδικοποιητής.
Αρχή: Δείτε το σχηματικό διάγραμμα της ενότητας Rotary Encoder παρακάτω. Από αυτό μπορούμε να δούμε ότι η ακίδα 3 του περιστροφικού κωδικοποιητή, δηλαδή το CLK στη μονάδα, είναι το κανάλι Β. Το pin 5, το οποίο είναι DT, είναι το κανάλι A. Για να γνωρίζετε την κατεύθυνση περιστροφής του καταγραφέα, απλώς διαβάστε την τιμή του CLK και DT.
Υπάρχει ένα τσιπ ρυθμιστή τάσης 3,3v στο κύκλωμα, ώστε να μπορείτε να τροφοδοτείτε τη μονάδα με 5V ή 3.3V.
Δεδομένου ότι το SDO έχει συνδεθεί με το GND, η διεύθυνση I2C του ADXL345 είναι 0x53, 0xA6 για εγγραφή, 0xA7 για ανάγνωση
Συνάρτηση καρφιτσών της μονάδας ADXL345.
Βήμα 3: Διαδικασίες
Βήμα 1. Δημιουργήστε το κύκλωμα.
Βήμα 2:
Κατεβάστε τον κώδικα από τη διεύθυνση
Βήμα 3:
Ανεβάστε το σκίτσο στον πίνακα Arduino Uno
Κάντε κλικ στο εικονίδιο Μεταφόρτωση για να ανεβάσετε τον κωδικό στον πίνακα ελέγχου.
Εάν η ένδειξη "Done uploading" εμφανίζεται στο κάτω μέρος του παραθύρου, σημαίνει ότι το σκίτσο έχει μεταφορτωθεί επιτυχώς.
Μετά τη μεταφόρτωση, ανοίξτε το Serial Monitor, όπου μπορείτε να δείτε τα δεδομένα που εντοπίστηκαν. Όταν αλλάξει η επιτάχυνση της μονάδας, το σχήμα θα αλλάξει ανάλογα στο παράθυρο.
Βήμα 4: Κωδικός
// ADXL335
/********************************
ADXL335
σημείωση: vcc5v, αλλά το ADXL335 Vs είναι 3,3V
Το κύκλωμα:
5V: VCC
αναλογικό 0: άξονας x
αναλογικό 1: άξονας y
αναλογικό 2: άξονας z
Αφού κάψει το
πρόγραμμα, ανοίξτε το παράθυρο εντοπισμού σφαλμάτων σειριακής οθόνης, όπου μπορείτε να δείτε να εμφανίζονται τα δεδομένα που εντοπίστηκαν. Όταν η επιτάχυνση ποικίλλει, το σχήμα θα μεταβάλλεται ανάλογα.
*********************************
/ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ:
// Ιστοσελίδα: www.primerobotics.in
const int xpin =
A0; // άξονας x του επιταχυνσιόμετρου
const int ypin =
Α'1; // άξονας y
const int zpin =
Α2; // άξονας z (μόνο σε μοντέλα 3 αξόνων)
void setup ()
{
// προετοιμάστε τις σειριακές επικοινωνίες:
Serial.begin (9600);
}
κενός βρόχος ()
{
int x = analogRead (xpin); // ανάγνωση από xpin
καθυστέρηση (1)? //
int y = analogRead (ypin); // διαβάζω από το ypin
καθυστέρηση (1)?
int z = analogRead (zpin); // ανάγνωση από zpin
float zero_G = 338,0; // τροφοδοτικό ADXL335
κατά Vs 3.3V: 3.3V/5V*1024 = 676/2 = 338
//Serial.print(x);
//Serial.print("\t ");
//Serial.print(y);
//Serial.print("\t ");
//Serial.print(z);
//Serial.print("\n ");
φλοτέρ
zero_Gx = 331.5; // η έξοδος zero_G του άξονα x: (x_max + x_min)/2
φλοτέρ
zero_Gy = 329.5; // η έξοδος zero_G του άξονα y: (y_max + y_min)/2
float zero_Gz = 340.0; // το
zero_G έξοδος z άξονα: (z_max + z_min)/2
float scale =
67.6; // τροφοδοσία Vs 3.3V: 3.3v/5v *1024/3.3v *330mv/g = 67.6g
float scale_x =
65; // η κλίμακα του άξονα x: x_max/3.3v*330mv/g
float scale_y =
68.5; // η κλίμακα του άξονα y: y_max/3.3v*330mv/g
float scale_z =
68; // η κλίμακα του άξονα z: z_max/3.3v*330mv/g
Serial.print (((float) x
- zero_Gx)/scale_x); // εκτύπωση τιμής x σε σειριακή οθόνη
Serial.print ("\ t");
Serial.print (((float) y
- zero_Gy)/scale_y); // εκτύπωση τιμής y σε σειριακή οθόνη
Serial.print ("\ t");
Serial.print (((float) z
- zero_Gz)/scale_z) // εκτύπωση τιμής z σε σειριακή οθόνη
Serial.print ("\ n");
καθυστέρηση (1000)? // περιμένετε 1 δευτερόλεπτο
}
Βήμα 5: Ανάλυση κώδικα
Ο κώδικας για το πείραμα ADXL345 περιλαμβάνει 3 μέρη: αρχικοποίηση κάθε θύρας και συσκευής, λήψη και αποθήκευση δεδομένων που αποστέλλονται από τους αισθητήρες και μετατροπή των δεδομένων.
Συνιστάται:
Μετεωρολογικός σταθμός με χρήση Arduino UNO: 7 βήματα
Μετεωρολογικός σταθμός χρησιμοποιώντας Arduino UNO: Δημιουργήθηκε από: Hazel Yang Αυτό το έργο είναι ένας μετεωρολογικός σταθμός που χρησιμοποιεί έναν πίνακα Arduino UNO για τον έλεγχο της ροής δεδομένων, έναν αισθητήρα DHT22 για τη συλλογή των δεδομένων και μια οθόνη OLED για την εμφάνιση των δεδομένων
Ανάγνωση θερμοκρασίας με χρήση αισθητήρα θερμοκρασίας LM35 με Arduino Uno: 4 βήματα
Ανάγνωση θερμοκρασίας με χρήση αισθητήρα θερμοκρασίας LM35 με Arduino Uno: Γεια σας παιδιά σε αυτό το εκπαιδευτικό εγχειρίδιο θα μάθουμε πώς να χρησιμοποιούμε το LM35 με το Arduino. Το Lm35 είναι ένας αισθητήρας θερμοκρασίας που μπορεί να διαβάσει τιμές θερμοκρασίας από -55 ° C έως 150 ° C. Είναι μια τερματική συσκευή που παρέχει αναλογική τάση ανάλογη της θερμοκρασίας. Υψηλή
Οθόνη LCD I2C / IIC - Χρήση LCD SPI στην οθόνη LCD I2C Χρήση μονάδας SPI σε IIC με Arduino: 5 βήματα
Οθόνη LCD I2C / IIC | Χρησιμοποιήστε μια οθόνη SPI στην οθόνη I2C LCD χρησιμοποιώντας μονάδα SPI σε IIC με Arduino: Γεια σας παιδιά, καθώς ένα κανονικό SPI LCD 1602 έχει πάρα πολλά καλώδια για να συνδεθεί, οπότε είναι πολύ δύσκολο να το διασυνδέσετε με το arduino, αλλά υπάρχει μια μονάδα διαθέσιμη στην αγορά που μπορεί μετατρέψτε την οθόνη SPI σε οθόνη IIC, οπότε πρέπει να συνδέσετε μόνο 4 καλώδια
Neopixel Ws2812 Rainbow LED Glow With M5stick-C - Εκτέλεση Rainbow σε Neopixel Ws2812 Χρήση M5stack M5stick C Χρήση Arduino IDE: 5 Βήματα
Neopixel Ws2812 Rainbow LED Glow With M5stick-C | Running Rainbow on Neopixel Ws2812 Using M5stack M5stick C Using Arduino IDE: Γεια σας παιδιά σε αυτά τα εκπαιδευτικά θα μάθουμε πώς να χρησιμοποιούμε LED neopixel ws2812 ή led strip ή led matrix ή led με m5stack m5stick-C πίνακα ανάπτυξης με Arduino IDE και θα φτιάξουμε ένα μοτίβο ουράνιου τόξου με αυτό
Αισθητήρας θερμοκρασίας με χρήση θερμίστορ με Arduino Uno: 4 βήματα
Αισθητήρας θερμοκρασίας χρησιμοποιώντας θερμίστορ με Arduino Uno: Γεια σας παιδιά σε αυτό το εκπαιδευτικό εγχειρίδιο θα μάθουμε πώς να χρησιμοποιείτε το Thermistor με το Arduino. Το Thermistor είναι βασικά ένας αντιστάτης του οποίου η αντίσταση ποικίλλει ανάλογα με τη μεταβολή της θερμοκρασίας. Έτσι μπορούμε να διαβάσουμε την αντίστασή του και να πάρουμε τη θερμοκρασία από αυτό & Θερμίστορ