Turinys:

Pagreičio matavimas naudojant ADXL345 ir „Arduino Nano“: 4 žingsniai
Pagreičio matavimas naudojant ADXL345 ir „Arduino Nano“: 4 žingsniai

Video: Pagreičio matavimas naudojant ADXL345 ir „Arduino Nano“: 4 žingsniai

Video: Pagreičio matavimas naudojant ADXL345 ir „Arduino Nano“: 4 žingsniai
Video: 5 klase vaizdo pamoka 009 Matlankis. Kaip nubraižyti norimo dydžio kampą? 2024, Lapkritis
Anonim
Image
Image

„ADXL345“yra mažas, plonas, itin mažos galios 3 ašių akselerometras su didelės skiriamosios gebos (13 bitų) matavimu iki ± 16 g. Skaitmeniniai išvesties duomenys yra suformatuoti kaip 16 bitų du papildymai ir yra prieinami per I2 C skaitmeninę sąsają. Jis matuoja statinį gravitacijos pagreitį pasvirimo jutiklyje, taip pat dinaminį pagreitį, atsirandantį dėl judesio ar smūgio. Didelė skiriamoji geba (3,9 mg/LSB) leidžia matuoti nuolydžio pokyčius, mažesnius nei 1,0 °.

Šioje pamokoje buvo parodyta ADXL345 jutiklio modulio sąsaja su arduino nano. Norėdami nuskaityti pagreičio vertes, mes naudojome arduino su I2c adapteriu. Šis I2C adapteris leidžia lengvai ir patikimiau prisijungti prie jutiklio modulio.

1 veiksmas: reikalinga aparatūra:

Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra

Medžiagos, reikalingos mūsų tikslui pasiekti, apima šiuos aparatūros komponentus:

1. ADXL345

2. „Arduino Nano“

3. I2C kabelis

4. „I2C Shield“, skirtas „Arduino Nano“

2 veiksmas: prijungimas prie aparatūros:

Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas

Techninės įrangos prijungimo skyrius iš esmės paaiškina laidų jungtis, reikalingas tarp jutiklio ir „arduino nano“. Užtikrinti teisingas jungtis yra pagrindinė būtinybė dirbant su bet kuria norimos išvesties sistema. Taigi, būtinos jungtys yra šios:

ADXL345 veiks per I2C. Čia yra elektros instaliacijos schemos pavyzdys, parodantis, kaip prijungti kiekvieną jutiklio sąsają.

Iš karto plokštė sukonfigūruota I2C sąsajai, todėl rekomenduojame naudoti šį prijungimą, jei esate kitaip agnostikas.

Viskas, ko jums reikia, yra keturi laidai! Reikia tik keturių jungčių „Vcc“, „Gnd“, „SCL“ir „SDA“kaiščių, kurie yra prijungti naudojant I2C kabelį.

Šie ryšiai parodyti aukščiau esančiose nuotraukose.

3 žingsnis: pagreičio matavimo kodas:

Pagreičio matavimo kodas
Pagreičio matavimo kodas

Pradėkime nuo arduino kodo dabar.

Naudodami jutiklio modulį su arduino, įtraukiame „Wire.h“biblioteką. „Wire“bibliotekoje yra funkcijos, palengvinančios i2c ryšį tarp jutiklio ir arduino plokštės.

Visas arduino kodas vartotojo patogumui pateiktas žemiau:

#įtraukti

// ADXL345 I2C adresas yra 0x53 (83)

#define Addr 0x53

negaliojanti sąranka ()

{

// Inicijuoti I2C komunikaciją kaip MASTER

Wire.begin ();

// Inicijuoti nuoseklųjį ryšį, nustatyti duomenų perdavimo spartą = 9600

Serial.begin (9600);

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite pralaidumo spartos registrą

Wire.write (0x2C);

// Normalus režimas, Išvesties duomenų perdavimo sparta = 100 Hz

Wire.write (0x0A);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite galios valdymo registrą

Wire.write (0x2D);

// Automatinio miego išjungimas

Wire.write (0x08);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite duomenų formatų registrą

Wire.write (0x31);

// Savęs testavimas išjungtas, 4 laidų sąsaja, visa skiriamoji geba, diapazonas = +/- 2 g

Wire.write (0x08);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

vėlavimas (300);

}

tuštumos kilpa ()

{

nepasirašyti int duomenys [6];

už (int i = 0; i <6; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite duomenų registrą

Wire.write ((50 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Perskaitykite 6 baitus duomenų

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

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuokite duomenis į 10 bitų

int xAccl = (((duomenys [1] ir 0x03) * 256) + duomenys [0]);

jei (xAccl> 511)

{

xAccl -= 1024;

}

int yAccl = (((duomenys [3] ir 0x03) * 256) + duomenys [2]);

jei (yAccl> 511)

{

yAccl -= 1024;

}

int zAccl = (((duomenys [5] ir 0x03) * 256) + duomenys [4]);

jei (zAccl> 511)

{

zAccl -= 1024;

}

// Duomenų išvedimas į serijinį monitorių

Serial.print ("pagreitis X ašyje yra:");

Serial.println (xAccl);

Serial.print ("pagreitis Y ašyje yra:");

Serial.println (yAccl);

Serial.print ("Pagreitis Z ašyje yra:");

Serial.println (zAccl);

vėlavimas (300);

}

Laidų bibliotekoje Wire.write () ir Wire.read () naudojami komandoms rašyti ir jutiklio išėjimui skaityti.

Serial.print () ir Serial.println () naudojami jutiklio išėjimui rodyti „Arduino IDE“serijos monitoriuje.

Jutiklio išvestis parodyta aukščiau esančiame paveikslėlyje.

4 žingsnis: programos:

Programos
Programos

ADXL345 yra mažas, plonas, itin mažos galios 3 ašių akselerometras, kurį galima naudoti telefonuose, medicinos prietaisuose ir pan. Jo taikymas taip pat apima žaidimų ir rodymo prietaisus, pramoninius prietaisus, asmeninius navigacijos įrenginius ir standžiojo disko (HDD) apsaugą.

Rekomenduojamas: