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

ADXL345 Χρήση Arduino Uno R3: 5 βήματα
ADXL345 Χρήση Arduino Uno R3: 5 βήματα

Βίντεο: ADXL345 Χρήση Arduino Uno R3: 5 βήματα

Βίντεο: ADXL345 Χρήση Arduino Uno R3: 5 βήματα
Βίντεο: Акселерометр ADXL 345 + Servo мотор SG90 - Arduino! 2024, Νοέμβριος
Anonim
ADXL345 Χρήση του Arduino Uno R3
ADXL345 Χρήση του Arduino Uno R3

Σε αυτό το μάθημα, θα μάθουμε πώς να χρησιμοποιούμε τον αισθητήρα επιτάχυνσης 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 μέρη: αρχικοποίηση κάθε θύρας και συσκευής, λήψη και αποθήκευση δεδομένων που αποστέλλονται από τους αισθητήρες και μετατροπή των δεδομένων.

Συνιστάται: