Tartalomjegyzék:

A gyorsulás mérése ADXL345 és Arduino Nano használatával: 4 lépés
A gyorsulás mérése ADXL345 és Arduino Nano használatával: 4 lépés

Videó: A gyorsulás mérése ADXL345 és Arduino Nano használatával: 4 lépés

Videó: A gyorsulás mérése ADXL345 és Arduino Nano használatával: 4 lépés
Videó: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, November
Anonim
Image
Image

Az ADXL345 egy kicsi, vékony, rendkívül alacsony teljesítményű, 3 tengelyes gyorsulásmérő, nagy felbontású (13 bites) méréssel, ± 16 g-ig. A digitális kimeneti adatok 16 bites kettes kiegészítésként vannak formázva, és az I2 C digitális interfészen keresztül érhetők el. Méri a gravitáció statikus gyorsulását dőlésérzékelő alkalmazásokban, valamint a mozgásból vagy ütésből eredő dinamikus gyorsulást. Nagy felbontása (3,9 mg/LSB) lehetővé teszi az 1,0 ° alatti dőlésváltozások mérését.

Ebben az oktatóanyagban bemutattuk az ADXL345 érzékelő modul és az arduino nano interfészét. A gyorsulási értékek leolvasásához az arduino -t használtuk I2c adapterrel. Ez az I2C adapter megkönnyíti és megbízhatóbbá teszi a kapcsolatot az érzékelőmodullal.

1. lépés: Szükséges hardver:

Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver
Szükséges hardver

A célunk eléréséhez szükséges anyagok a következő hardverkomponenseket tartalmazzák:

1. ADXL345

2. Arduino Nano

3. I2C kábel

4. I2C pajzs az Arduino Nano számára

2. lépés: Hardver csatlakoztatása:

Hardver csatlakoztatása
Hardver csatlakoztatása
Hardver csatlakoztatása
Hardver csatlakoztatása

A hardvercsatlakozási szakasz alapvetően elmagyarázza az érzékelő és az arduino nano között szükséges vezetékeket. A megfelelő kapcsolatok biztosítása az alapvető szükséglet, amikor bármilyen rendszeren dolgozik a kívánt kimenet érdekében. Tehát a szükséges kapcsolatok a következők:

Az ADXL345 az I2C -n keresztül fog működni. Íme a példa kapcsolási rajz, amely bemutatja, hogyan kell bekötni az érzékelő egyes interfészeit.

A doboz készenlétben I2C interfészre van konfigurálva, ezért javasoljuk, hogy használja ezt a csatlakozást, ha egyébként agnosztikus.

Csak négy vezetékre van szüksége! Csak négy csatlakozóra van szükség Vcc, Gnd, SCL és SDA csapokra, és ezeket I2C kábel segítségével kell csatlakoztatni.

Ezeket az összefüggéseket a fenti képek mutatják be.

3. lépés: A gyorsulás mérésének kódja:

A gyorsulás mérésének kódja
A gyorsulás mérésének kódja

Kezdjük most az arduino kóddal.

Miközben az érzékelő modult használja az arduino -val, a Wire.h könyvtárat is tartalmazza. A "Wire" könyvtár azokat a funkciókat tartalmazza, amelyek megkönnyítik az i2c kommunikációt az érzékelő és az arduino kártya között.

A teljes arduino kódot az alábbiakban adjuk meg a felhasználó kényelme érdekében:

#befoglalni

// Az ADXL345 I2C címe 0x53 (83)

#define Addr 0x53

üres beállítás ()

{

// Inicializálja az I2C kommunikációt MASTER -ként

Wire.begin ();

// Inicializálja a soros kommunikációt, állítsa be az átviteli sebességet = 9600

Sorozat.kezdet (9600);

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Válassza ki a sávszélesség -nyilvántartást

Wire.write (0x2C);

// Normál mód, kimeneti adatsebesség = 100 Hz

Wire.write (0x0A);

// Az I2C átvitel leállítása

Wire.endTransmission ();

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Válassza ki a teljesítményszabályozó regisztert

Wire.write (0x2D);

// Automatikus alvás letiltása

Wire.write (0x08);

// Az I2C átvitel leállítása

Wire.endTransmission ();

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Válassza ki az adatformátum regisztert

Wire.write (0x31);

// Az önteszt letiltva, 4 vezetékes interfész, teljes felbontás, tartomány = +/- 2g

Wire.write (0x08);

// Az I2C átvitel leállítása

Wire.endTransmission ();

késleltetés (300);

}

üres hurok ()

{

előjel nélküli int adatok [6];

for (int i = 0; i <6; i ++)

{

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter kiválasztása

Wire.write ((50 + i));

// Az I2C átvitel leállítása

Wire.endTransmission ();

// 1 bájt adat kérése

Wire.requestFrom (Addr, 1);

// 6 bájt adat olvasása

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

ha (Wire.available () == 1)

{

adatok = Wire.read ();

}

}

// Az adatok konvertálása 10 bitesre

int xAccl = ((([adatok] és 0x03) * 256) + adatok [0]);

ha (xAccl> 511)

{

xAccl -= 1024;

}

int yAccl = (((adatok [3] & 0x03) * 256) + adatok [2]);

ha (yAccl> 511)

{

yAccl -= 1024;

}

int zAccl = (((adatok [5] & 0x03) * 256) + adatok [4]);

ha (zAccl> 511)

{

zAccl -= 1024;

}

// Adatok kimenete soros monitorra

Serial.print ("Gyorsulás az X-tengelyben:");

Sorozat.println (xAccl);

Serial.print ("Gyorsulás az Y tengelyen:");

Soros.println (yAccl);

Serial.print ("Gyorsulás a Z-tengelyben:");

Soros.println (zAccl);

késleltetés (300);

}

A vezetékes könyvtárban a Wire.write () és a Wire.read () parancsokat írják és olvassák le az érzékelő kimenetét.

A Serial.print () és a Serial.println () az érzékelő kimenetének megjelenítésére szolgál az Arduino IDE soros monitorán.

Az érzékelő kimenete a fenti képen látható.

4. lépés: Alkalmazások:

Alkalmazások
Alkalmazások

Az ADXL345 egy kicsi, vékony, rendkívül alacsony teljesítményű, 3 tengelyes gyorsulásmérő, amely kézibeszélőkben, orvosi műszerekben stb. Használható. Alkalmazása magában foglalja a játék- és mutatóeszközöket, az ipari műszereket, a személyi navigációs eszközöket és a merevlemez-meghajtó (HDD) védelmét is.

Ajánlott: