Arduino Nano-MMA8452Q 3-Axis 12-bitars/8-bitars digital accelerometer Tutorial: 4 steg
Arduino Nano-MMA8452Q 3-Axis 12-bitars/8-bitars digital accelerometer Tutorial: 4 steg
Anonim
Image
Image

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.. !

Vad du behöver..!!
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:

Förbindelse
Förbindelse
Förbindelse
Förbindelse
Förbindelse
Förbindelse
Förbindelse
Förbindelse

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:

Koda
Koda

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.