2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
MMA8452Q je chytrý, tříosý, kapacitní, mikroosý akcelerometr s nízkým výkonem a 12bitovým rozlišením. Flexibilní uživatelsky programovatelné možnosti jsou poskytovány pomocí vestavěných funkcí v akcelerometru, konfigurovatelných na dva kolíky přerušení. Má uživatelem volitelná plná měřítka ± 2 g/± 4 g/± 8 g s filtrovanými daty filtrovanými horním průchodem i nefiltrovanými daty, která jsou k dispozici v reálném čase. Zde je jeho ukázka s Arduino nano.
Krok 1: Co potřebujete..
1. Arduino Nano
2. MMA8452Q
3. I²C kabel
4. I²C štít pro Arduino Nano
Krok 2: Připojení:
Vezměte štít I2C pro Arduino Nano a jemně jej zatlačte přes kolíky Nano.
Poté připojte jeden konec kabelu I2C k senzoru MMA8452Q a druhý konec ke stínění I2C.
Připojení jsou znázorněna na obrázku výše.
Krok 3: Kód:
Arduino kód pro MMMA8452Q lze stáhnout z našeho úložiště github- DCUBE Store.
Tady je odkaz.
Zahrnujeme knihovnu Wire.h pro usnadnění I2c komunikace senzoru s deskou Arduino.
Odtud můžete také zkopírovat kód, který je uveden následovně:
// Distribuováno s licencí svobodné vůle.
// Používejte jej jakýmkoli způsobem, ať už ziskem nebo zdarma, za předpokladu, že se vejde do licencí souvisejících děl.
// MMA8452Q
// Tento kód je navržen tak, aby fungoval s mini modulem MMA8452Q_I2CS I2C.
#zahrnout
// Adresa I2C MMA8452Q je 0x1C (28)
#define Addr 0x1C
neplatné nastavení ()
{
// Inicializujte komunikaci I2C jako MASTER
Wire.begin ();
// Inicializace sériové komunikace, nastavení přenosové rychlosti = 9600
Serial.begin (9600);
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte řídicí registr
Wire.write (0x2A);
// Pohotovostní režim
Wire.write (0x00);
// Zastavte přenos I2C
Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte řídicí registr
Wire.write (0x2A);
// Aktivní režim
Wire.write (0x01);
// Zastavte přenos I2C
Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr);
// Vyberte řídicí registr
Wire.write (0x0E);
// Nastavit rozsah na +/- 2g
Wire.write (0x00);
// Zastavte přenos I2C
Wire.endTransmission ();
zpoždění (300);
}
prázdná smyčka ()
{
nepodepsaná int data [7];
// Vyžádejte si 7 bajtů dat
Wire.requestFrom (Addr, 7);
// Přečíst 7 bajtů dat
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
pokud (Wire.available () == 7)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
data [4] = Wire.read ();
data [5] = Wire.read ();
data [6] = Wire.read ();
}
// Převod dat na 12bitové
int xAccl = ((data [1] * 256) + data [2]) / 16;
if (xAccl> 2047)
{
xAccl -= 4096;
}
int yAccl = ((data [3] * 256) + data [4]) / 16;
if (yAccl> 2047)
{
yAccl -= 4096;
}
int zAccl = ((data [5] * 256) + data [6]) / 16;
if (zAccl> 2047)
{
zAccl -= 4096;
}
// Výstup dat na sériový monitor
Serial.print ("Zrychlení v ose X:");
Serial.println (xAccl);
Serial.print ("Zrychlení v ose Y:");
Serial.println (yAccl);
Serial.print ("Zrychlení v ose Z:");
Serial.println (zAccl);
zpoždění (500);
}
Krok 4: Aplikace:
MMA8452Q má různé aplikace, které zahrnují aplikace E-Compass, detekci statické orientace, která zahrnuje portrét/krajina, nahoru/dolů, doleva/doprava, identifikace polohy zezadu/zepředu, notebook, elektronická čtečka a detekce pádu a volného pádu notebooku, v reálném čase detekce orientace včetně virtuální reality a hraní 3D zpětná vazba o poloze uživatele, analýza aktivity v reálném čase, jako je počítání kroků krokoměru, detekce pádu volného pádu pro pevný disk, zálohování GPS s mrtvým účtem a mnoho dalšího.