Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
L'MMA8452Q è un accelerometro intelligente, a bassa potenza, a tre assi, capacitivo, microlavorato con 12 bit di risoluzione. Opzioni flessibili programmabili dall'utente sono fornite con l'ausilio di funzioni integrate nell'accelerometro, configurabili su due pin di interruzione. Dispone di scale complete selezionabili dall'utente di ±2g/±4g/±8g con dati filtrati con filtro passa-alto e dati non filtrati disponibili in tempo reale. Ecco la sua dimostrazione con Arduino nano.
Passaggio 1: ciò di cui hai bisogno.
1. Arduino Nano
2. MMA8452Q
3. Cavo I²C
4. Scudo I²C per Arduino Nano
Passaggio 2: connessione:
Prendi uno shield I2C per Arduino Nano e spingilo delicatamente sui pin di Nano.
Quindi collegare un'estremità del cavo I2C al sensore MMA8452Q e l'altra estremità allo schermo I2C.
I collegamenti sono mostrati nell'immagine sopra.
Passaggio 3: codice:
Il codice arduino per MMMA8452Q può essere scaricato dal nostro repository github - DCUBE Store.
Ecco il link.
Includiamo la libreria Wire.h per facilitare la comunicazione I2c del sensore con la scheda Arduino.
Puoi anche copiare il codice da qui, è fornito come segue:
// Distribuito con una licenza libera.
// Usalo come vuoi, a scopo di lucro o gratuito, a condizione che rientri nelle licenze delle opere associate.
//MMA8452Q
// Questo codice è progettato per funzionare con il Mini Modulo I2C MMA8452Q_I2CS.
#includere
// L'indirizzo I2C di MMA8452Q è 0x1C(28)
#define Indirizzo 0x1C
configurazione nulla()
{
// Inizializza la comunicazione I2C come MASTER
Wire.begin();
// Inizializza la comunicazione seriale, imposta la velocità di trasmissione = 9600
Serial.begin(9600);
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di controllo
Wire.write(0x2A);
// Modalità standby
Wire.write(0x00);
// Interrompi trasmissione I2C
Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di controllo
Wire.write(0x2A);
// Modalità attiva
Wire.write(0x01);
// Interrompi trasmissione I2C
Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di controllo
Wire.write(0x0E);
// Imposta l'intervallo su +/- 2 g
Wire.write(0x00);
// Interrompi trasmissione I2C
Wire.endTransmission();
ritardo(300);
}
ciclo vuoto()
{
dati int non firmati[7];
// Richiedi 7 byte di dati
Wire.requestFrom(Addr, 7);
// Legge 7 byte di dati
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
if(Filo.disponibile() == 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();
}
// Converti i dati a 12 bit
int xAccl = ((data[1] * 256) + data[2]) / 16;
se (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;
}
// Invia i dati al monitor seriale
Serial.print("Accelerazione nell'asse X: ");
Serial.println(xAccl);
Serial.print("Accelerazione nell'asse Y: ");
Serial.println(yAccl);
Serial.print("Accelerazione nell'asse Z: ");
Serial.println(zAccl);
ritardo (500);
}
Passaggio 4: applicazioni:
MMA8452Q ha varie applicazioni che includono applicazioni E-Compass, rilevamento dell'orientamento statico che incorpora verticale/orizzontale, su/giù, sinistra/destra, identificazione della posizione posteriore/anteriore, notebook, e-reader e rilevamento di caduta e caduta libera del laptop, in tempo reale rilevamento dell'orientamento, tra cui realtà virtuale e feedback sulla posizione dell'utente di gioco 3D, analisi dell'attività in tempo reale come il conteggio dei passi del pedometro, rilevamento della caduta libera per HDD, backup GPS stimata e molto altro.