Turinys:

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

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

Video: Pagreičio matavimas naudojant BMA250 ir „Arduino Nano“: 4 žingsniai
Video: 💦Blackview BV9200 ЧЕСТНЫЙ ОБЗОР ПРОТИВОУДАРНОГО 2024, Lapkritis
Anonim
Image
Image

BMA250 yra mažas, plonas, itin mažos galios, 3 ašių akselerometras, turintis didelės skiriamosios gebos (13 bitų) matavimą iki ± 16 g. Skaitmeniniai išvesties duomenys yra suformatuoti kaip 16 bitų du papildymai ir yra prieinami per I2C 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 mes išmatuosime visų trijų statmenų ašių pagreitį, naudodami BMA250 ir Arduino Nano.

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. BMA250

2. „Arduino Nano“

3. I2C kabelis

4. I2C skydas „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. Užtikrinti teisingas jungtis yra pagrindinė būtinybė dirbant su bet kuria norimos išvesties sistema. Taigi, būtinos jungtys yra šios:

BMA250 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: „Arduino“pagreičio matavimo kodas:

„Arduino“pagreičio matavimo kodas
„Arduino“pagreičio matavimo kodas
„Arduino“pagreičio matavimo kodas
„Arduino“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 pateiktas žemiau, kad būtų patogiau:

#įtraukti

// BMA250 I2C adresas yra 0x18 (24)

#define Addr 0x18

negaliojanti sąranka ()

{

// Inicijuoti I2C komunikaciją kaip MASTER

Wire.begin ();

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

Serial.begin (9600);

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite diapazono pasirinkimo registrą

Wire.write (0x0F);

// Nustatyti diapazoną +/- 2g

Wire.write (0x03);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite pralaidumo registrą

Wire.write (0x10);

// Nustatykite pralaidumą 7,81 Hz

Wire.write (0x08);

// Sustabdyti I2C perdavimą

Wire.endTransmission (); vėlavimas (300);}

tuštumos kilpa ()

{

nepasirašyti int duomenys [0];

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite duomenų registrus (0x02 - 0x07)

Wire.write (0x02);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 6 baitų

Wire.requestFrom (Addr, 6);

// Perskaitykite šešis baitus

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

jei (Wire.available () == 6)

{

duomenys [0] = Wire.read ();

duomenys [1] = Wire.read ();

duomenys [2] = Wire.read ();

duomenys [3] = Wire.read ();

duomenys [4] = Wire.read ();

duomenys [5] = Wire.read ();

}

vėlavimas (300);

// Konvertuokite duomenis į 10 bitų

plūdė xAccl = ((duomenys [1] * 256,0) + (duomenys [0] ir 0xC0)) / 64;

jei (xAccl> 511)

{

xAccl -= 1024;

}

plūdė yAccl = ((duomenys [3] * 256,0) + (duomenys [2] ir 0xC0)) / 64;

jei (yAccl> 511)

{

yAccl -= 1024;

}

plūdė zAccl = ((duomenys [5] * 256,0) + (duomenys [4] ir 0xC0)) / 64;

jei (zAccl> 511)

{

zAccl -= 1024;

}

// Duomenų išvedimas į nuoseklųjį monitorių

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

Serial.println (xAccl);

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

Serial.println (yAccl);

Serial.print („Pagreitis Z ašyje:“);

Serial.println (zAccl);

}

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

Akselerometrai, tokie kaip BMA250, dažniausiai naudojami žaidimuose ir ekrano profilio perjungime. Šis jutiklių modulis taip pat naudojamas pažangioje mobiliųjų programų energijos valdymo sistemoje. BMA250 yra triašis skaitmeninis pagreičio jutiklis, integruotas su išmaniuoju mikroschemo judesio suaktyvintu pertraukimo valdikliu.

Rekomenduojamas: