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:

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.

Wir freuen uns auf die Zusammenarbeit mit Ihnen!