Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
BMA250 je majhen, tanek, 3-osni merilnik pospeška z izjemno nizko močjo z visoko ločljivostjo (13-bitnimi) meritvami do ± 16 g. Digitalni izhodni podatki so oblikovani kot 16-bitni dvojčki, ki se dopolnjujejo, in so dostopni prek digitalnega vmesnika I2C. Meri statični pospešek gravitacije v aplikacijah za zaznavanje nagiba, pa tudi dinamični pospešek, ki je posledica gibanja ali udarca. Njegova visoka ločljivost (3,9 mg/LSB) omogoča merjenje naklonskih sprememb pod 1,0 °.
V tej vadnici bomo merili pospešek v vseh treh pravokotnih oseh z uporabo BMA250 in Arduino Nano.
1. korak: Potrebna strojna oprema:
Materiali, ki jih potrebujemo za dosego našega cilja, vključujejo naslednje komponente strojne opreme:
1. BMA250
2. Arduino Nano
3. Kabel I2C
4. I2C ščit za Arduino Nano
2. korak: Priključitev strojne opreme:
Oddelek za priključitev strojne opreme v bistvu razlaga potrebne povezave ožičenja med senzorjem in arduinom. Zagotavljanje pravilnih povezav je osnovna potreba pri delu na katerem koli sistemu za želeni izhod. Torej so potrebne povezave naslednje:
BMA250 bo deloval preko I2C. Tu je primer sheme ožičenja, ki prikazuje, kako povezati vsak vmesnik senzorja.
Plošča je že pripravljena za vmesnik I2C, zato priporočamo uporabo te povezave, če niste agnostični. Vse kar potrebujete so štiri žice!
Potrebne so le štiri povezave Vcc, Gnd, SCL in SDA, ki so povezane s kablom I2C.
Te povezave so prikazane na zgornjih slikah.
3. korak: Arduino koda za merjenje pospeška:
Začnimo zdaj s kodo Arduino.
Med uporabo senzorskega modula z Arduinom vključujemo knjižnico Wire.h. Knjižnica "Wire" vsebuje funkcije, ki olajšajo komunikacijo i2c med senzorjem in ploščo Arduino.
Celotna koda Arduino je podana spodaj za udobje uporabnika:
#vključi
// Naslov BMA250 I2C je 0x18 (24)
#define Addr 0x18
void setup ()
{
// Inicializirajte komunikacijo I2C kot MASTER
Wire.begin ();
// Začetek serijske komunikacije, nastavljena hitrost prenosa = 9600
Serial.begin (9600);
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite register za izbiro območja
Wire.write (0x0F);
// Nastavljeno območje +/- 2g
Wire.write (0x03);
// Ustavi prenos I2C
Wire.endTransmission ();
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite register pasovne širine
Wire.write (0x10);
// Nastavi pasovno širino 7,81 Hz
Wire.write (0x08);
// Ustavi prenos I2C
Wire.endTransmission (); zamuda (300);}
void loop ()
{
podpisani int podatki [0];
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izbira podatkovnih registrov (0x02 - 0x07)
Wire.write (0x02);
// Ustavi prenos I2C
Wire.endTransmission ();
// Zahtevaj 6 bajtov
Wire.requestFrom (Addr, 6);
// Preberite šest bajtov
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
če (Wire.available () == 6)
{
podatki [0] = Wire.read ();
podatki [1] = Wire.read ();
podatki [2] = Wire.read ();
podatki [3] = Wire.read ();
podatki [4] = Wire.read ();
podatki [5] = Wire.read ();
}
zamuda (300);
// Pretvorimo podatke v 10 bitov
float xAccl = ((podatki [1] * 256,0) + (podatki [0] & 0xC0)) / 64;
če (xAccl> 511)
{
xAccl -= 1024;
}
float yAccl = ((podatki [3] * 256,0) + (podatki [2] & 0xC0)) / 64;
če (yAccl> 511)
{
yAccl -= 1024;
}
float zAccl = ((podatki [5] * 256,0) + (podatki [4] & 0xC0)) / 64;
če (zAccl> 511)
{
zAccl -= 1024;
}
// Izhodni podatki na serijski monitor
Serial.print ("Pospešek v osi X:");
Serial.println (xAccl);
Serial.print ("Pospešek v osi Y:");
Serial.println (yAccl);
Serial.print ("Pospešek v osi Z:");
Serial.println (zAccl);
}
V knjižnici žic Wire.write () in Wire.read () se uporabljata za pisanje ukazov in branje izhoda senzorja. Serial.print () in Serial.println () se uporabljata za prikaz izhoda senzorja na serijskem monitorju Arduino IDE.
Izhod senzorja je prikazan na zgornji sliki.
4. korak: Aplikacije:
Merilniki pospeška, kot je BMA250, večinoma najdejo svojo uporabo v igrah in preklapljanju profilov zaslona. Ta senzorski modul se uporablja tudi v naprednem sistemu za upravljanje porabe energije za mobilne aplikacije. BMA250 je triosni digitalni senzor pospeška, ki je integriran z inteligentnim krmilnikom prekinitev, ki sproži gibanje na čipu.