ADXL345 3-Achsen-Beschleunigungsmesser und Arduino
Das Tutorial zeigt, wie man die Beschleunigung mit dem ADXL345-Modul mit Arduino misst.
Das Beispiel verwendet die folgenden Elemente:
- Arduino Uno
System mit ADXL345-Modul, z.B. ADXL345 3-Achsen-Digital-Beschleunigungsmesser I2C / SPI - Modul
- Drähte, z.B. mit Haken
- ADXL345-Bibliothek
Anschließen des Sensors mit Arduino:
Das Modul kommuniziert über den beliebten I2C-Bus. Die Verbindung zum Arduino sollte also wie folgt erfolgen:
ADXL345-Modul | Arduino-Stift |
---|---|
VCC | 5 V |
Masse | Masse |
SCL | A5 |
SDA | A4 |
Anschlussplan des ADXL345-Moduls mit Arduino Uno.
Programm für Arduino
Zunächst sollte die Bibliothek zur Arduino-Umgebung hinzugefügt werden (Sketch -> Include Library -> Add .ZIP Library ...). Im Beispiel wurde folgender Code verwendet:
#include#include #include // Eine ID zuweisen Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified (12345); void displaySensorDetails (void) { sensor_t sensor; accel.getSensor (& Sensor); Serial.println ("------------------------------------"); Serial.print ("Sensor:"); Serial.println (sensor.name); Serial.print ("Treiberversion:"); Serial.println (sensor.version); Serial.print ("ID:"); Serial.println (sensor.sensor_id); Serial.print ("Maximalwert:"); Serial.print (sensor.max_value); Serial.println ("m / s ^ 2"); Serial.print ("Mindestwert:"); Serial.print (sensor.min_value); Serial.println ("m / s ^ 2"); Serial.print ("Auflösung:"); Serial.print (Sensor.Auflösung); Serial.println ("m / s ^ 2"); Serial.println ("------------------------------------"); Serial.println (""); Verzögerung (500); } void displayDataRate (void) { Serial.print ("Datengeschwindigkeit:"); Schalter (accel.getDataRate ()) { Fall ADXL345_DATARATE_3200_HZ: Serial.print ("3200"); brechen; Fall ADXL345_DATARATE_1600_HZ: Serial.print ("1600"); brechen; Fall ADXL345_DATARATE_800_HZ: Serial.print ("800"); brechen; Fall ADXL345_DATARATE_400_HZ: Serial.print ("400"); brechen; Fall ADXL345_DATARATE_200_HZ: Serial.print ("200"); brechen; Fall ADXL345_DATARATE_100_HZ: Serial.print ("100"); brechen; Fall ADXL345_DATARATE_50_HZ: Serial.print ("50"); brechen; Fall ADXL345_DATARATE_25_HZ: Serial.print ("25"); brechen; Fall ADXL345_DATARATE_12_5_HZ: Serial.print ("12.5"); brechen; Fall ADXL345_DATARATE_6_25HZ: Serial.print ("6.25"); brechen; Fall ADXL345_DATARATE_3_13_HZ: Serial.print ("3.13"); brechen; Fall ADXL345_DATARATE_1_56_HZ: Serial.print ("1.56"); brechen; Fall ADXL345_DATARATE_0_78_HZ: Serial.print ("0,78"); brechen; Fall ADXL345_DATARATE_0_39_HZ: Serial.print ("0.39"); brechen; Fall ADXL345_DATARATE_0_20_HZ: Serial.print ("0.20"); brechen; Fall ADXL345_DATARATE_0_10_HZ: Serial.print ("0.10"); brechen; Ursprünglich: Serial.print ("????"); brechen; } Serial.println ("Hz"); } void displayRange (void) { Serial.print ("Bereich: +/-"); Schalter (accel.getRange ()) {Fall ADXL345_RANGE_16_G: Serial.print ("16"); brechen; Fall ADXL345_RANGE_8_G: Serial.print ("8"); brechen; Fall ADXL345_RANGE_4_G: Serial.print ("4"); brechen; Fall ADXL345_RANGE_2_G: Serial.print ("2"); brechen; Standard: Serial.print ("??"); brechen; } Serial.println ("g"); } void setup (void) {Serial.begin (9600); Serial.println ("--- ADXL345-Beschleunigungsmessertest ---"); Serial.println (""); // Modulinitialisierung if (! Accel.begin ()) {// Verbindungsfehler Serial.println ("Kein Sensor erkannt ... Verbindung prüfen!"); während (1); } // Bereichsauswahl accel.setRange (ADXL345_RANGE_16_G); // displaySetRange (ADXL345_RANGE_8_G); // displaySetRange (ADXL345_RANGE_4_G); // displaySetRange (ADXL345_RANGE_2_G); // Informationen anzeigen displaySensorDetails (); // Zusätzliche Einstellungen anzeigen displayDataRate (); anzeigebereich (); Serial.println (""); } void Schleife (void) {sensors_event_t event; accel.getEvent (& Ereignis); // Anzeige der Ergebnisse in m / s ^ 2) Serial.print ("X:"); Serial.print (event.beschleunigung.x); Serial.print (""); Serial.print ("Y:"); Serial.print (event.beschleunigung.y); Serial.print (""); Serial.print ("Von:"); Serial.print (event.acceleration.z); Serial.print (""); Serial.println ("m / s ^ 2"); Verzögerung (500); }
Das Programm zeigt die Beschleunigung in drei Achsen an, angegeben in m / s ^ 2. Die Auswirkungen des Programms sind unten zu sehen:
Screenshot des seriellen Monitors.