Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
BMA250 on väike, õhuke, üliväikese võimsusega 3-teljeline kiirendusmõõtur, millel on kõrge eraldusvõimega (13-bitine) mõõtmine kuni ± 16 g. Digitaalsed väljundandmed on vormindatud 16-bitiste kaheosaliste täienditena ja neile on juurdepääs I2C digitaalse liidese kaudu. Mõõdab staatilist raskuskiirendust kaldetundlikes rakendustes, samuti liikumisest või põrutusest tulenevat dünaamilist kiirendust. Selle kõrge eraldusvõime (3,9 mg/LSB) võimaldab mõõta kalde muutusi alla 1,0 °.
Selles õpetuses mõõdame kiirendust kõigis kolmes risti asetsevas teljes, kasutades BMA250 ja Arduino Nano.
Samm: vajalik riistvara:
Eesmärgi saavutamiseks vajalikud materjalid sisaldavad järgmisi riistvarakomponente:
1. BMA250
2. Arduino Nano
3. I2C kaabel
4. I2C kilp Arduino Nano jaoks
2. samm: riistvara ühendamine:
Riistvara ühendamise jaotis selgitab põhimõtteliselt anduri ja arduino vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:
BMA250 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada.
Valmis plaat on konfigureeritud I2C liidese jaoks, seega soovitame seda ühendamist kasutada, kui olete muidu agnostik. Kõik, mida vajate, on neli juhtmest!
Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil.
Neid seoseid on näidatud ülaltoodud piltidel.
Samm: Arduino kiirenduse mõõtmise kood:
Alustame nüüd Arduino koodiga.
Arduinoga andurimoodulit kasutades kaasame Wire.h raamatukogu. Juhtmeraamatukogu sisaldab funktsioone, mis hõlbustavad i2c suhtlust anduri ja Arduino plaadi vahel.
Kogu Arduino kood on kasutaja mugavuse huvides toodud allpool:
#kaasake
// BMA250 I2C aadress on 0x18 (24)
#define Addr 0x18
tühine seadistus ()
{
// Initsialiseeri I2C side kui MASTER
Wire.begin ();
// Initsialiseeri jadaühendus, määrake edastuskiirus = 9600
Seriaalne algus (9600);
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Valige vahemiku valimise register
Wire.write (0x0F);
// Määra vahemik +/- 2g
Wire.write (0x03);
// Peata I2C edastamine
Wire.endTransmission ();
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Valige ribalaiuse register
Wire.write (0x10);
// Määra ribalaius 7,81 Hz
Wire.write (0x08);
// Peata I2C edastamine
Wire.endTransmission (); viivitus (300);}
tühine tsükkel ()
{
allkirjastamata int andmed [0];
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Valige andmeregistrid (0x02 - 0x07)
Wire.write (0x02);
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 6 baiti
Wire.requestFrom (Addr, 6);
// Kuue baidi lugemine
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
kui (Wire.available () == 6)
{
andmed [0] = Wire.read ();
andmed [1] = Wire.read ();
andmed [2] = Wire.read ();
andmed [3] = Wire.read ();
andmed [4] = Wire.read ();
andmed [5] = Wire.read ();
}
viivitus (300);
// Teisendage andmed 10 -bitisteks
ujuk xAccl = ((andmed [1] * 256,0) + (andmed [0] ja 0xC0)) / 64;
kui (xAccl> 511)
{
xAccl -= 1024;
}
ujuk yAccl = ((andmed [3] * 256,0) + (andmed [2] ja 0xC0)) / 64;
kui (yAccl> 511)
{
yAccl -= 1024;
}
ujuk zAccl = ((andmed [5] * 256,0) + (andmed [4] ja 0xC0)) / 64;
kui (zAccl> 511)
{
zAccl -= 1024;
}
// Väljundandmed jadamonitorile
Serial.print ("Kiirendus X-teljel:");
Serial.println (xAccl);
Serial.print ("Kiirendus Y-teljel:");
Serial.println (yAccl);
Serial.print ("Kiirendus Z-teljel:");
Serial.println (zAccl);
}
Traaditeegis kasutatakse käskude kirjutamiseks ja anduri väljundi lugemiseks Wire.write () ja Wire.read (). Serial.print () ja Serial.println () kasutatakse anduri väljundi kuvamiseks Arduino IDE jadamonitoril.
Anduri väljund on näidatud ülaltoodud pildil.
4. samm: rakendused:
Kiirendusmõõturid nagu BMA250 leiavad selle rakenduse enamasti mängudes ja kuvaprofiili vahetamisel. Seda andurimoodulit kasutatakse ka mobiilirakenduste täiustatud toitehaldussüsteemis. BMA250 on kolmeteljeline digitaalne kiirendusandur, mis on ühendatud intelligentse kiibi liikumise käivitatud katkestuskontrolleriga.