Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
ADXL345 je malý, tenký, 3-osový akcelerometer s ultra nízkym výkonom a meraním s vysokým rozlíšením (13 bitov) až ± 16 g. Digitálne výstupné údaje sú formátované ako 16-bitové dvojčatá a sú prístupné prostredníctvom digitálneho rozhrania I2 C. Meria statické gravitačné zrýchlenie v aplikáciách snímajúcich náklon, ako aj dynamické zrýchlenie vyplývajúce z pohybu alebo šoku. Jeho vysoké rozlíšenie (3,9 mg/LSB) umožňuje meranie zmien sklonu menej ako 1,0 °.
V tomto návode je ilustrované prepojenie senzorového modulu ADXL345 s arduino nano. Na čítanie hodnôt zrýchlenia sme použili arduino s adaptérom I2c. Vďaka tomuto adaptéru I2C je pripojenie k senzorovému modulu jednoduché a spoľahlivejšie.
Krok 1: Potrebný hardvér:
Materiály, ktoré potrebujeme na dosiahnutie nášho cieľa, obsahujú nasledujúce hardvérové komponenty:
1. ADXL345
2. Arduino Nano
3. Kábel I2C
4. I2C štít pre Arduino Nano
Krok 2: Pripojenie hardvéru:
Časť zapojenia hardvéru v zásade vysvetľuje zapojenie potrebné medzi senzorom a arduino nano. Zabezpečenie správneho pripojenia je základnou potrebou pri práci na akomkoľvek systéme s požadovaným výstupom. Potrebné spojenia sú teda tieto:
ADXL345 bude fungovať cez I2C. Tu je príklad schémy zapojenia, ktorá ukazuje, ako prepojiť každé rozhranie snímača.
Hneď po vybalení je doska nakonfigurovaná na rozhranie I2C, preto vám toto pripojenie odporúčame použiť, ak ste inak agnostik.
Všetko, čo potrebujete, sú štyri drôty! Vyžadujú sa iba štyri pripojenia Vcc, Gnd, SCL a SDA piny, ktoré sú prepojené pomocou kábla I2C.
Tieto spojenia sú znázornené na obrázkoch vyššie.
Krok 3: Kód na meranie zrýchlenia:
Začnime teraz arduino kódom.
Pri použití senzorového modulu s arduinom obsahuje knižnicu Wire.h. Knižnica "Wire" obsahuje funkcie, ktoré uľahčujú komunikáciu i2c medzi senzorom a doskou Arduino.
Celý arduino kód je pre pohodlie užívateľa uvedený nižšie:
#zahrnúť
// Adresa ADXL345 I2C je 0x53 (83)
#define Addr 0x53
neplatné nastavenie ()
{
// Inicializujte komunikáciu I2C ako MASTER
Wire.begin ();
// Inicializujte sériovú komunikáciu, nastavte prenosovú rýchlosť = 9600
Serial.begin (9600);
// Spustite prenos I2C
Wire.beginTransmission (Addr);
// Vyberte register rýchlosti šírky pásma
Wire.write (0x2C);
// Normálny režim, výstupný dátový tok = 100 Hz
Wire.write (0x0A);
// Zastavte prenos I2C
Wire.endTransmission ();
// Spustite prenos I2C
Wire.beginTransmission (Addr);
// Vyberte register riadenia výkonu
Wire.write (0x2D);
// Vypnutie automatického spánku
Wire.write (0x08);
// Zastavte prenos I2C
Wire.endTransmission ();
// Spustite prenos I2C
Wire.beginTransmission (Addr);
// Vyberte register formátu údajov
Wire.write (0x31);
// Automatický test deaktivovaný, 4-vodičové rozhranie, plné rozlíšenie, rozsah = +/- 2 g
Wire.write (0x08);
// Zastavte prenos I2C
Wire.endTransmission ();
oneskorenie (300);
}
prázdna slučka ()
{
nepodpísané int údaje [6];
pre (int i = 0; i <6; i ++)
{
// Spustite prenos I2C
Wire.beginTransmission (Addr);
// Vyberte dátový register
Wire.write ((50 + i));
// Zastavte prenos I2C
Wire.endTransmission ();
// Požiadajte o 1 bajt údajov
Wire.requestFrom (Addr, 1);
// Prečítajte 6 bajtov údajov
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
ak (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Previesť údaje na 10-bitové
int xAccl = (((data [1] & 0x03) * 256) + data [0]);
ak (xAccl> 511)
{
xAccl -= 1024;
}
int yAccl = (((údaje [3] & 0x03) * 256) + údaje [2]);
ak (yAccl> 511)
{
yAccl -= 1024;
}
int zAccl = (((údaje [5] & 0x03) * 256) + údaje [4]);
ak (zAccl> 511)
{
zAccl -= 1024;
}
// Výstup údajov na sériový monitor
Serial.print ("Zrýchlenie v osi X je:");
Serial.println (xAccl);
Serial.print ("Zrýchlenie v osi Y je:");
Serial.println (yAccl);
Serial.print ("Zrýchlenie v osi Z je:");
Serial.println (zAccl);
oneskorenie (300);
}
V knižnici drôtov Wire.write () a Wire.read () sa používajú na zápis príkazov a čítanie výstupu snímača.
Serial.print () a Serial.println () sa používa na zobrazenie výstupu senzora na sériovom monitore Arduino IDE.
Výstup senzora je zobrazený na obrázku vyššie.
Krok 4: Aplikácie:
ADXL345 je malý, tenký, ultraľahký, 3-osový akcelerometer, ktorý je možné použiť v mobilných telefónoch, lekárskych prístrojoch atď. Jeho aplikácia zahŕňa aj herné a ukazovacie zariadenia, priemyselné prístroje, osobné navigačné zariadenia a ochranu pevného disku (HDD).