2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
MMA8452Q, 12 bit qətnamə ilə ağıllı, aşağı güclü, üç oxlu, tutumlu, mikromaşinli sürətləndiricidir. İstifadəçi tərəfindən proqramlaşdırıla bilən seçimlər, iki fasilə sancağına konfiqurasiya edilə bilən akselerometrdə quraşdırılmış funksiyaların köməyi ilə təmin edilir. İstifadəçinin seçə biləcəyi tam ölçülü ± 2g/± 4g/± 8g yüksək keçid filtrli məlumatları və real vaxtda süzülməmiş məlumatları var. İşdə Arduino nano ilə nümayişidir.
Addım 1: Nə Lazımdır..
1. Arduino Nano
2. MMA8452Q
3. I²C Kabel
4. Arduino Nano üçün I²C Shield
Addım 2: Bağlantı:
Arduino Nano üçün bir I2C qalxanı götürün və Nanonun sancaqlarından yumşaq bir şəkildə itələyin.
Sonra I2C kabelinin bir ucunu MMA8452Q sensoruna, digər ucunu isə I2C ekranına bağlayın.
Bağlantılar yuxarıdakı şəkildə göstərilmişdir.
Addım 3: Kod:
MMMA8452Q üçün arduino kodu github depomuzdan yüklənə bilər- DCUBE Mağazası.
İşdə link.
Sensorun Arduino lövhəsi ilə I2c əlaqəsini asanlaşdırmaq üçün Wire.h kitabxanasına daxildir.
Kodu buradan da kopyalaya bilərsiniz, belə verilir:
// Azad iradə lisenziyası ilə paylanmışdır.
// İstənilən şəkildə, mənfəət və ya pulsuz istifadə edin, əlaqəli əsərlərinin lisenziyalarına uyğun gəlir.
// MMA8452Q
// Bu kod MMA8452Q_I2CS I2C Mini Modulu ilə işləmək üçün hazırlanmışdır.
#daxil edin
// MMA8452Q I2C ünvanı 0x1C (28)
#Addr 0x1C təyin edin
boş quraşdırma ()
{
// I2C ünsiyyətini MASTER olaraq başladın
Wire.begin ();
// Serial Rabitəni Başlatın, baud dərəcəsini = 9600 olaraq təyin edin
Serial.begin (9600);
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Nəzarət reyestrini seçin
Wire.write (0x2A);
// Gözləmə rejimi
Wire.write (0x00);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Nəzarət reyestrini seçin
Wire.write (0x2A);
// Aktiv rejim
Wire.write (0x01);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
// I2C ötürülməsinə başlayın
Wire.beginTransmission (Addr);
// Nəzarət reyestrini seçin
Wire.write (0x0E);
// Aralığı +/- 2g olaraq təyin edin
Wire.write (0x00);
// I2C ötürülməsini dayandırın
Wire.endTransmission ();
gecikmə (300);
}
boşluq döngəsi ()
{
imzasız int data [7];
// 7 bayt məlumat tələb edin
Wire.requestFrom (Addr, 7);
// 7 bayt məlumat oxuyun
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
əgər (Tel.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 ();
}
// Məlumatı 12 bitə çevirin
int xAccl = ((data [1] * 256) + data [2]) / 16;
əgər (xAccl> 2047)
{
xAccl -= 4096;
}
int yAccl = ((data [3] * 256) + data [4]) / 16;
əgər (yAccl> 2047)
{
yAccl -= 4096;
}
int zAccl = ((data [5] * 256) + data [6]) / 16;
əgər (zAccl> 2047)
{
zAccl -= 4096;
}
// Məlumatların serial monitora çıxarılması
Serial.print ("X-Eksenində Sürətləndirmə:");
Serial.println (xAccl);
Serial.print ("Y Eksenində Sürətləndirmə:");
Serial.println (yAccl);
Serial.print ("Z Eksenində Sürətləndirmə:");
Serial.println (zAccl);
gecikmə (500);
}
Addım 4: Tətbiqlər:
MMA8452Q, E-Pusula tətbiqləri, Portret/Landşaft, Yuxarı/Aşağı, Sol/Sağ, Arxa/Ön mövqe identifikasiyası, Notebook, e-oxucu və Laptop Tumble and Freefall Detection, Real-time daxil olan Statik oriyentasiya aşkarlamasını özündə birləşdirən müxtəlif tətbiqlərə malikdir. virtual reallıq və oyun 3D istifadəçi mövqeyi geribildirimi, pedometr addım sayma, HDD üçün sərbəst düşmə algılama, ölü hesablama GPS ehtiyatı və daha çox kimi real vaxt fəaliyyət təhlili də daxil olmaqla oriyentasiya aşkarlanması.