2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
MMA8452Q je pameten, triosni, kapacitivni, mikroobdelovalni merilnik pospeška z nizko porabo energije z ločljivostjo 12 bitov. Prilagodljive možnosti, ki jih lahko programira uporabnik, so na voljo s pomočjo vgrajenih funkcij v merilniku pospeška, ki jih je mogoče konfigurirati na dva prekinitvena zatiča. Ima polne lestvice, ki jih lahko izbere uporabnik ± 2 g/± 4 g/± 8 g, z visokofrekvenčnimi filtriranimi podatki in nefiltriranimi podatki, ki so na voljo v realnem času. Tukaj je njegova predstavitev z Arduino nano.
Korak: Kaj potrebujete.. !
1. Arduino Nano
2. MMA8452Q
3. Kabel I²C
4. I²C ščit za Arduino Nano
2. korak: Povezava:
Vzemite ščit I2C za Arduino Nano in ga nežno potisnite čez zatiče Nano.
Nato en konec kabla I2C priključite na senzor MMA8452Q, drugi konec pa na ščit I2C.
Povezave so prikazane na zgornji sliki.
3. korak: Koda:
Kodo arduino za MMMA8452Q lahko prenesete iz našega skladišča github- DCUBE Store.
Tukaj je povezava.
Vključujemo knjižnico Wire.h za olajšanje komunikacije senzorja I2c s ploščo Arduino.
Kodo lahko tudi kopirate od tu, podana je na naslednji način:
// Razdeljeno z licenco za svobodno voljo.
// Uporabljajte ga kakor koli želite, dobičkonosno ali brezplačno, pod pogojem, da ustreza licencam povezanih del.
// MMA8452Q
// Ta koda je zasnovana za delo z mini modulom MMA8452Q_I2CS I2C.
#vključi
// Naslov MMA8452Q I2C je 0x1C (28)
#define Addr 0x1C
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 kontrolni register
Wire.write (0x2A);
// Stanje pripravljenosti
Wire.write (0x00);
// Ustavi prenos I2C
Wire.endTransmission ();
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite kontrolni register
Wire.write (0x2A);
// Aktivni način
Wire.write (0x01);
// Ustavi prenos I2C
Wire.endTransmission ();
// Zagon prenosa I2C
Wire.beginTransmission (Addr);
// Izberite kontrolni register
Wire.write (0x0E);
// Nastavite obseg na +/- 2g
Wire.write (0x00);
// Ustavi prenos I2C
Wire.endTransmission ();
zamuda (300);
}
void loop ()
{
podpisani int podatki [7];
// Zahtevajte 7 bajtov podatkov
Wire.requestFrom (Addr, 7);
// Preberite 7 bajtov podatkov
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
če (Wire.available () == 7)
{
podatki [0] = Wire.read ();
podatki [1] = Wire.read ();
podatki [2] = Wire.read ();
podatki [3] = Wire.read ();
podatki [4] = Wire.read ();
podatki [5] = Wire.read ();
podatki [6] = Wire.read ();
}
// Pretvorimo podatke v 12-bitne
int xAccl = ((podatki [1] * 256) + podatki [2]) / 16;
če (xAccl> 2047)
{
xAccl -= 4096;
}
int yAccl = ((podatki [3] * 256) + podatki [4]) / 16;
če (yAccl> 2047)
{
yAccl -= 4096;
}
int zAccl = ((podatki [5] * 256) + podatki [6]) / 16;
če (zAccl> 2047)
{
zAccl -= 4096;
}
// 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);
zamuda (500);
}
4. korak: Aplikacije:
MMA8452Q ima različne aplikacije, ki vključujejo aplikacije za e-kompas, zaznavanje statične orientacije, ki vključujejo pokončno/ležeče, gor/dol, levo/desno, identifikacijo položaja zadaj/spredaj, prenosni računalnik, e-bralnik ter zaznavanje padca in prenosnika prenosnega računalnika v realnem času odkrivanje orientacije, vključno z navidezno resničnostjo in povratnimi informacijami o položaju uporabnika v igrah 3D, analizo aktivnosti v realnem času, kot je štetje korakov pedometra, zaznavanje padcev prostega padca za trdi disk, varnostno kopiranje GPS-a in še veliko več.