Taula de continguts:
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-13 06:57
El MMA8452Q és un acceleròmetre intel·ligent, de tres eixos, de baixa potència i capacitiu, micromecanitzat, amb 12 bits de resolució. Es proporcionen opcions programables per a l'usuari amb l'ajut de funcions incrustades a l'acceleròmetre, configurables per a dos pins d'interrupció. Té una escala completa seleccionable per l'usuari de ± 2g / ± 4g / ± 8g amb dades filtrades de filtre de pas alt, així com dades no filtrades disponibles en temps real. Aquí teniu la demostració amb Arduino nano.
Pas 1: el que necessiteu..
1. Arduino Nano
2. MMA8452Q
3. Cable I²C
4. Escut I²C per a Arduino Nano
Pas 2: connexió:
Agafeu un escut I2C per a Arduino Nano i empenyeu-lo suaument sobre els passadors de Nano.
A continuació, connecteu un extrem del cable I2C al sensor MMA8452Q i l’altre extrem al blindatge I2C.
Les connexions es mostren a la imatge superior.
Pas 3: Codi:
El codi arduino per MMMA8452Q es pot descarregar des del nostre dipòsit github- DCUBE Store.
Aquí teniu l’enllaç.
Incloem la biblioteca Wire.h per facilitar la comunicació I2c del sensor amb la placa Arduino.
També podeu copiar el codi des d’aquí, es dóna de la següent manera:
// Distribuïda amb llicència de lliure voluntat.
// Utilitzeu-lo de la manera que vulgueu, sense ànim de lucre o de franc, sempre que encaixi en les llicències de les obres associades.
// MMA8452Q
// Aquest codi està dissenyat per funcionar amb el mini mòdul MMA8452Q_I2CS I2C.
#incloure
// L'adreça MMA8452Q I2C és 0x1C (28)
#define Addr 0x1C
configuració nul·la ()
{
// Inicialitzar la comunicació I2C com a MASTER
Wire.begin ();
// Inicialitzar la comunicació en sèrie, establir la velocitat de transmissió = 9600
Serial.begin (9600);
// Inicieu la transmissió I2C
Wire.beginTransmission (Addr);
// Seleccioneu el registre de control
Wire.write (0x2A);
// Mode StandBy
Wire.write (0x00);
// Atura la transmissió I2C
Wire.endTransmission ();
// Inicieu la transmissió I2C
Wire.beginTransmission (Addr);
// Seleccioneu el registre de control
Wire.write (0x2A);
// Mode actiu
Wire.write (0x01);
// Atura la transmissió I2C
Wire.endTransmission ();
// Inicieu la transmissió I2C
Wire.beginTransmission (Addr);
// Seleccioneu el registre de control
Wire.write (0x0E);
// Estableix l'interval a +/- 2g
Wire.write (0x00);
// Atura la transmissió I2C
Wire.endTransmission ();
retard (300);
}
bucle buit ()
{
dades int sense signar [7];
// Sol·liciteu 7 bytes de dades
Wire.requestFrom (Addr, 7);
// Llegiu 7 bytes de dades
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
if (Wire.available () == 7)
{
dades [0] = Wire.read ();
dades [1] = Wire.read ();
dades [2] = Wire.read ();
dades [3] = Wire.read ();
dades [4] = Wire.read ();
dades [5] = Wire.read ();
dades [6] = Wire.read ();
}
// Converteix les dades a 12 bits
int xAccl = ((dades [1] * 256) + dades [2]) / 16;
if (xAccl> 2047)
{
xAccl - = 4096;
}
int yAccl = ((dades [3] * 256) + dades [4]) / 16;
if (yAccl> 2047)
{
yAccl - = 4096;
}
int zAccl = ((dades [5] * 256) + dades [6]) / 16;
if (zAccl> 2047)
{
zAccl - = 4096;
}
// Sortida de dades al monitor sèrie
Serial.print ("Acceleració a l'eix X:");
Serial.println (xAccl);
Serial.print ("Acceleració a l'eix Y:");
Serial.println (yAccl);
Serial.print ("Acceleració a l'eix Z:");
Serial.println (zAccl);
retard (500);
}
Pas 4: aplicacions:
El MMA8452Q té diverses aplicacions que inclouen aplicacions de brúixola electrònica, detecció d’orientació estàtica que incorpora vertical / horitzontal, amunt / avall, esquerra / dreta, identificació de posició posterior / frontal, portàtil, lector electrònic i detecció de caigudes i caigudes lliures de portàtils, en temps real detecció d’orientació, incloent comentaris sobre la posició de l’usuari en 3D de realitat virtual i jocs, anàlisi d’activitats en temps real, com ara comptador de passos del podòmetre, detecció de caigudes lliures per a disc dur, còpia de seguretat GPS per càlcul i molt més.