Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
De MMA8452Q is een slimme, energiezuinige, drie-assige, capacitieve, micromachined accelerometer met 12 bits resolutie. Flexibele door de gebruiker programmeerbare opties worden geboden met behulp van ingebouwde functies in de accelerometer, configureerbaar tot twee interrupt-pinnen. Het heeft door de gebruiker selecteerbare volledige schalen van ±2g/±4g/±8g met high-pass filter gefilterde data en niet-gefilterde data die in realtime beschikbaar zijn. Hier is de demonstratie met Arduino nano.
Stap 1: Wat je nodig hebt.
1. Arduino Nano
2. MMA8452Q
3. I²C-kabel
4. I²C-schild voor Arduino Nano
Stap 2: Aansluiting:
Neem een I2C-schild voor Arduino Nano en duw het voorzichtig over de pinnen van Nano.
Sluit vervolgens het ene uiteinde van de I2C-kabel aan op de MMA8452Q-sensor en het andere uiteinde op de I2C-afscherming.
De aansluitingen zijn weergegeven in de afbeelding hierboven.
Stap 3: Coderen:
De arduino-code voor MMMA8452Q kan worden gedownload van onze github-repository - DCUBE Store.
Hier is de link.
We nemen bibliotheek Wire.h op om de I2c-communicatie van de sensor met het Arduino-bord te vergemakkelijken.
U kunt de code ook hier kopiëren, deze wordt als volgt gegeven:
// Gedistribueerd met een vrije wilslicentie.
// Gebruik het zoals je wilt, winst of gratis, op voorwaarde dat het past in de licenties van de bijbehorende werken.
// MMA8452Q
// Deze code is ontworpen om te werken met de MMA8452Q_I2CS I2C Mini Module.
#erbij betrekken
// MMA8452Q I2C-adres is 0x1C (28)
#define Addr 0x1C
ongeldige setup()
{
// Initialiseer I2C-communicatie als MASTER
Draad.begin();
// Initialiseer seriële communicatie, stel baudrate in = 9600
Serieel.begin(9600);
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Selecteer controleregister
Draad.schrijven (0x2A);
// Standby modus
Draad.schrijven (0x00);
// Stop I2C-verzending
Wire.endTransmission();
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Selecteer controleregister
Draad.schrijven (0x2A);
// Actieve modus
Draad.schrijven (0x01);
// Stop I2C-verzending
Wire.endTransmission();
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Selecteer controleregister
Draad.schrijven (0x0E);
// Stel bereik in op +/- 2g
Draad.schrijven (0x00);
// Stop I2C-verzending
Wire.endTransmission();
vertraging (300);
}
lege lus()
{
niet-ondertekende int-gegevens[7];
// Vraag 7 bytes aan gegevens aan
Wire.requestFrom(Addr, 7);
// Lees 7 bytes aan gegevens
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
if(Draad.beschikbaar() == 7)
{
data[0] = Draad.lezen();
data[1] = Draad.lezen();
data[2] = Draad.lezen();
data[3] = Draad.lezen();
data[4] = Draad.lezen();
data[5] = Draad.lezen();
data[6] = Draad.lezen();
}
// Converteer de gegevens naar 12-bits
int xAccl = ((gegevens[1] * 256) + gegevens[2]) / 16;
als (xAccl > 2047)
{
xAccl-= 4096;
}
int yAccl = ((gegevens[3] * 256) + gegevens[4]) / 16;
als (yAccl > 2047)
{
yAccl-= 4096;
}
int zAccl = ((gegevens[5] * 256) + gegevens[6]) / 16;
als (zAccl > 2047)
{
zAccl-= 4096;
}
// Gegevens uitvoeren naar seriële monitor
Serial.print("Versnelling in X-as: ");
Serieel.println(xAccl);
Serial.print("Versnelling in Y-as: ");
Serial.println(yAccl);
Serial.print("Versnelling in Z-as: ");
Serieel.println(zAccl);
vertraging (500);
}
Stap 4: Toepassingen:
MMA8452Q heeft verschillende toepassingen, waaronder E-kompas-toepassingen, detectie van statische oriëntatie met detectie van portret/landschap, omhoog/omlaag, links/rechts, positie-identificatie achter/voor, notebook, e-reader en tuimel- en vrije valdetectie van laptops, realtime oriëntatiedetectie inclusief virtual reality en gaming 3D-gebruikerspositiefeedback, real-time activiteitenanalyse zoals stappenteller tellen, vrije val-valdetectie voor HDD, gegist bestede GPS-back-up en nog veel meer.