Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Der MMA8452Q ist ein intelligenter, stromsparender, dreiachsiger, kapazitiver, mikrobearbeiteter Beschleunigungsmesser mit 12 Bit Auflösung. Flexible, vom Benutzer programmierbare Optionen werden mit Hilfe eingebetteter Funktionen im Beschleunigungsmesser bereitgestellt, die auf zwei Interrupt-Pins konfigurierbar sind. Es verfügt über vom Benutzer wählbare Skalenendwerte von ±2g/±4g/±8g mit hochpassfiltergefilterten Daten sowie ungefilterten Daten, die in Echtzeit verfügbar sind. Hier ist seine Demonstration mit Arduino Nano.
Schritt 1: Was Sie brauchen.
1. Arduino Nano
2. MMA8452Q
3. I²C-Kabel
4. I²C-Schild für Arduino Nano
Schritt 2: Verbindung:
Nehmen Sie ein I2C-Shield für Arduino Nano und schieben Sie es vorsichtig über die Pins von Nano.
Verbinden Sie dann das eine Ende des I2C-Kabels mit dem MMA8452Q-Sensor und das andere Ende mit der I2C-Abschirmung.
Die Anschlüsse sind im Bild oben dargestellt.
Schritt 3: Code:
Der Arduino-Code für MMMA8452Q kann von unserem Github-Repository heruntergeladen werden - DCUBE Store.
Hier ist der Link.
Wir binden die Bibliothek Wire.h ein, um die I2c-Kommunikation des Sensors mit dem Arduino-Board zu erleichtern.
Sie können den Code auch von hier kopieren, er wird wie folgt angegeben:
// Wird mit einer frei wählbaren Lizenz vertrieben.
// Verwenden Sie es, wie Sie wollen, gewinnbringend oder kostenlos, sofern es in die Lizenzen der zugehörigen Werke passt.
// MMA8452Q
// Dieser Code wurde entwickelt, um mit dem MMA8452Q_I2CS I2C Mini-Modul zu arbeiten.
#enthalten
// MMA8452Q I2C-Adresse ist 0x1C(28)
#define Addr 0x1C
Void-Setup ()
{
// I2C-Kommunikation als MASTER initialisieren
Wire.begin();
// Serielle Kommunikation initialisieren, Baudrate = 9600. einstellen
Serial.begin (9600);
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Steuerregister auswählen
Wire.write (0x2A);
// Standby Modus
Wire.write (0x00);
// I2C-Übertragung stoppen
Wire.endTransmission();
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Steuerregister auswählen
Wire.write (0x2A);
// Aktiver Modus
Wire.write (0x01);
// I2C-Übertragung stoppen
Wire.endTransmission();
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Steuerregister auswählen
Wire.write(0x0E);
// Bereich auf +/- 2g. setzen
Wire.write (0x00);
// I2C-Übertragung stoppen
Wire.endTransmission();
Verzögerung (300);
}
Leere Schleife ()
{
unsignierte int-Daten[7];
// 7 Byte Daten anfordern
Wire.requestFrom(Addr, 7);
// 7 Byte Daten lesen
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
if(Draht.verfügbar() == 7)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
Daten[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
Daten[6] = Wire.read();
}
// Konvertieren Sie die Daten in 12-Bit
int xAccl = ((Daten[1] * 256) + Daten[2]) / 16;
if (xAccl > 2047)
{
xAccl –= 4096;
}
int yAccl = ((Daten[3] * 256) + Daten[4]) / 16;
if (yAccl > 2047)
{
yAccl –= 4096;
}
int zAccl = ((Daten[5] * 256) + Daten[6]) / 16;
if (zAccl > 2047)
{
zAccl –= 4096;
}
// Daten an seriellen Monitor ausgeben
Serial.print ("Beschleunigung in der X-Achse: ");
Serial.println (xAccl);
Serial.print ("Beschleunigung in der Y-Achse: ");
Serial.println (yAccl);
Serial.print ("Beschleunigung in der Z-Achse: ");
Serial.println (zAccl);
Verzögerung (500);
}
Schritt 4: Anwendungen:
MMA8452Q verfügt über verschiedene Anwendungen, darunter E-Kompass-Anwendungen, statische Orientierungserkennung, die Hochformat/Querformat, Oben/Unten, Links/Rechts, Hinten/Vorder-Positionserkennung, Notebook, E-Reader und Laptop-Sturz- und Freifall-Erkennung in Echtzeit umfasst Orientierungserkennung einschließlich Virtual Reality und Gaming 3D-Benutzerpositions-Feedback, Echtzeit-Aktivitätsanalyse wie Schrittzähler, Freifall-Erkennung für HDD, Koppelnavigations-GPS-Backup und vieles mehr.