ADXL345 3osý akcelerometr a Arduino

Výukový program ukazuje, jak měřit zrychlení pomocí modulu ADXL345 s Arduino.

Příklad používá následující prvky:

Připojení senzoru k Arduinu:

Modul komunikuje prostřednictvím populární sběrnice I2C. Připojení k Arduinu by tedy mělo být provedeno následovně:

Modul ADXL345 Pin Arduino
VCC 5 V
GND GND
SCL A5
SDA A4

Schéma zapojení modulu ADXL345 s Arduino Uno.

Program pro Arduino

Nejprve by měla být knihovna přidána do prostředí Arduino (Skica -> Zahrnout knihovnu -> Přidat knihovnu .ZIP ...). V příkladu byl použit následující kód:

 #include 
#include 
#include 

// Přiřaďte ID
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified (12345);

void displaySensorDetails (void)
{
  senzor_t senzor;
  accel.getSensor (& senzor);
  Serial.println ("------------------------------------");
  Serial.print ("Senzor:"); Serial.println (sensor.name);
  Serial.print ("Verze ovladače:"); Serial.println (verze senzoru);
  Serial.print ("ID:"); Serial.println (sensor.sensor_id);
  Serial.print ("Maximální hodnota:"); Serial.print (sensor.max_value); Serial.println ("m / s ^ 2");
  Serial.print ("Minimální hodnota:"); Serial.print (sensor.min_value); Serial.println ("m / s ^ 2");
  Serial.print ("Rozlišení:"); Serial.print (sensor.resolution); Serial.println ("m / s ^ 2");  
  Serial.println ("------------------------------------");
  Serial.println ("");
  zpoždění (500);
}

void displayDataRate (void)
{
  Serial.print ("Rychlost dat:"); 
  
  switch (accel.getDataRate ())
  {
    případ ADXL345_DATARATE_3200_HZ:
      Serial.print ("3200"); 
      přestávka;
    případ ADXL345_DATARATE_1600_HZ:
      Serial.print ("1600"); 
      přestávka;
    případ ADXL345_DATARATE_800_HZ:
      Serial.print ("800"); 
      přestávka;
    případ ADXL345_DATARATE_400_HZ:
      Serial.print ("400"); 
      přestávka;
    případ ADXL345_DATARATE_200_HZ:
      Serial.print ("200"); 
      přestávka;
    případ ADXL345_DATARATE_100_HZ:
      Serial.print ("100"); 
      přestávka;
    případ ADXL345_DATARATE_50_HZ:
      Serial.print ("50"); 
      přestávka;
    případ ADXL345_DATARATE_25_HZ:
      Serial.print ("25"); 
      přestávka;
    případ ADXL345_DATARATE_12_5_HZ:
      Serial.print ("12,5"); 
      přestávka;
    případ ADXL345_DATARATE_6_25HZ:
      Serial.print ("6,25"); 
      přestávka;
    případ ADXL345_DATARATE_3_13_HZ:
      Serial.print ("3,13"); 
      přestávka;
    případ ADXL345_DATARATE_1_56_HZ:
      Serial.print ("1,56"); 
      přestávka;
    případ ADXL345_DATARATE_0_78_HZ:
      Serial.print ("0,78"); 
      přestávka;
    případ ADXL345_DATARATE_0_39_HZ:
      Serial.print ("0,39"); 
      přestávka;
    případ ADXL345_DATARATE_0_20_HZ:
      Serial.print ("0,20"); 
      přestávka;
    případ ADXL345_DATARATE_0_10_HZ:
      Serial.print ("0,10"); přestávka; výchozí: Serial.print ("????"); přestávka; } Serial.println ("Hz"); } void displayRange (void) {Serial.print ("Range: +/-"); switch (accel.getRange ()) {případ ADXL345_RANGE_16_G: Serial.print ("16"); přestávka; případ ADXL345_RANGE_8_G: Serial.print ("8"); přestávka; případ ADXL345_RANGE_4_G: Serial.print ("4"); přestávka; případ ADXL345_RANGE_2_G: Serial.print ("2"); přestávka; výchozí: Serial.print ("??"); přestávka; } Serial.println ("g"); } void setup (void) {Serial.begin (9600); Serial.println ("--- test ADXL345 ---"); Serial.println (""); // Inicializace modulu if (! Accel.begin ()) {// Chyba připojení Serial.println ("Nebyl detekován žádný senzor ... Zkontrolovat připojení!"); while (1); } // Výběr rozsahu accel.setRange (ADXL345_RANGE_16_G); // displaySetRange (ADXL345_RANGE_8_G); // displaySetRange (ADXL345_RANGE_4_G); // displaySetRange (ADXL345_RANGE_2_G); // Zobrazit informace displaySensorDetails (); // Zobrazit další nastavení displayDataRate (); displayRange (); Serial.println (""); } void smyčka (void) {senzory_event_t událost; accel.getEvent (& událost); // Zobrazit výsledky v m / s ^ 2) Serial.print ("X:"); Serial.print (event.acceleration.x); Serial.print (""); Serial.print ("Y:"); Serial.print (event.acceleration.y); Serial.print (""); Serial.print ("Od:"); Serial.print (event.acceleration.z); Serial.print (""); Serial.println ("m / s ^ 2"); zpoždění (500); }

Program zobrazuje zrychlení ve třech osách udávaných v m / s ^ 2. Účinky programu můžeme vidět níže:

Screenshot sériového monitoru.

zveme vás ke spolupráci!