Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
MMA8452Q är en smart, lågeffekts, treaxlig, kapacitiv, mikromaskinerad accelerometer med 12 bitars upplösning. Flexibla användarprogrammerbara alternativ tillhandahålls med hjälp av inbyggda funktioner i accelerometern, som kan konfigureras till två avbrottsstift. Den har användarvalbara hela skalor på ± 2g/± 4g/± 8g med högpassfilterfiltrerade data samt icke-filtrerade data tillgängliga i realtid. Här är dess demonstration med Arduino nano.
Steg 1: Vad du behöver.. !
1. Arduino Nano
2. MMA8452Q
3. I²C -kabel
4. I²C -skärm för Arduino Nano
Steg 2: Anslutning:
Ta en I2C -sköld för Arduino Nano och skjut den försiktigt över stiften på Nano.
Anslut sedan den ena änden av I2C -kabeln till MMA8452Q -sensorn och den andra änden till I2C -skärmen.
Anslutningar visas på bilden ovan.
Steg 3: Kod:
Arduino-koden för MMMA8452Q kan laddas ner från vårt github-arkiv- DCUBE Store.
Här är länken.
Vi inkluderar bibliotek Wire.h för att underlätta I2c -kommunikationen mellan sensorn och Arduino -kortet.
Du kan också kopiera koden härifrån, den ges enligt följande:
// Distribueras med en fri vilja licens.
// Använd den hur du vill, vinst eller gratis, förutsatt att den passar i licensen för dess associerade verk.
// MMA8452Q
// Denna kod är utformad för att fungera med MMA8452Q_I2CS I2C Mini Module.
#omfatta
// MMA8452Q I2C -adressen är 0x1C (28)
#define Addr 0x1C
void setup ()
{
// Initiera I2C -kommunikation som MASTER
Wire.begin ();
// Initiera seriell kommunikation, ange överföringshastighet = 9600
Serial.begin (9600);
// Starta I2C -sändning
Wire.beginTransmission (Addr);
// Välj kontrollregister
Wire.write (0x2A);
// Standbyläge
Wire.write (0x00);
// Stoppa I2C -överföring
Wire.endTransmission ();
// Starta I2C -sändning
Wire.beginTransmission (Addr);
// Välj kontrollregister
Wire.write (0x2A);
// Aktivt läge
Wire.write (0x01);
// Stoppa I2C -överföring
Wire.endTransmission ();
// Starta I2C -sändning
Wire.beginTransmission (Addr);
// Välj kontrollregister
Wire.write (0x0E);
// Ställ in intervallet på +/- 2g
Wire.write (0x00);
// Stoppa I2C -överföring
Wire.endTransmission ();
fördröjning (300);
}
void loop ()
{
osignerade int -data [7];
// Begär 7 byte med data
Wire.requestFrom (Addr, 7);
// Läs 7 byte med data
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
om (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 ();
}
// Konvertera data till 12-bitar
int xAccl = ((data [1] * 256) + data [2]) / 16;
om (xAccl> 2047)
{
xAccl -= 4096;
}
int yAccl = ((data [3] * 256) + data [4]) / 16;
om (yAccl> 2047)
{
yAccl -= 4096;
}
int zAccl = ((data [5] * 256) + data [6]) / 16;
om (zAccl> 2047)
{
zAccl -= 4096;
}
// Utdata till seriell bildskärm
Serial.print ("Acceleration i X-Axis:");
Serial.println (xAccl);
Serial.print ("Acceleration i Y-axel:");
Serial.println (yAccl);
Serial.print ("Acceleration i Z-axel:");
Serial.println (zAccl);
fördröjning (500);
}
Steg 4: Ansökningar:
MMA8452Q har olika applikationer som inkluderar E-kompassapplikationer, statisk orienteringsdetektering som innehåller porträtt/liggande, upp/ner, vänster/höger, bakre/främre lägesidentifiering, anteckningsbok, e-läsare och bärbar dator Tumble och Freefall Detection, Realtid orienteringsdetektering inklusive virtuell verklighet och spel 3D-feedback från användarpositioner, aktivitetsanalys i realtid, såsom stegräknare för stegräknare, detektering av fritt fall för hårddisk, dödräknad GPS-säkerhetskopiering och mycket mer.