2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
MMA8452Q, 12 bit çözünürlüğe sahip akıllı, düşük güçlü, üç eksenli, kapasitif, mikro makinede işlenmiş bir ivmeölçerdir. İvmeölçerdeki yerleşik fonksiyonların yardımıyla, iki kesme pinine yapılandırılabilen esnek, kullanıcı tarafından programlanabilen seçenekler sunulur. Kullanıcı tarafından seçilebilen ±2g/±4g/±8g tam ölçeklere sahip olup, yüksek geçişli filtre filtreli veriler ve filtrelenmemiş veriler gerçek zamanlı olarak mevcuttur. İşte Arduino nano ile gösterimi.
Adım 1: İhtiyacınız Olan Şey..!
1. Arduino Nano
2. MMA8452Q
3. I²C Kablosu
4. Arduino Nano için I²C Kalkanı
Adım 2: Bağlantı:
Arduino Nano için bir I2C kalkanı alın ve yavaşça Nano'nun pimlerinin üzerine itin.
Ardından I2C kablosunun bir ucunu MMA8452Q sensörüne ve diğer ucunu I2C blendajına bağlayın.
Bağlantılar yukarıdaki resimde gösterilmiştir.
Adım 3: Kod:
MMMA8452Q için arduino kodu, github depomuz olan DCUBE Store'dan indirilebilir.
Bağlantı burada.
Sensörün Arduino kartı ile I2c iletişimini kolaylaştırmak için Wire.h kitaplığını ekledik.
Kodu buradan da kopyalayabilirsiniz, aşağıdaki şekilde verilmiştir:
// Özgür irade lisansıyla dağıtılır.
// İlişkili çalışmalarının lisanslarına uyması koşuluyla, istediğiniz şekilde, kârlı veya ücretsiz olarak kullanın.
// MMA8452Q
// Bu kod, MMA8452Q_I2CS I2C Mini Modülü ile çalışmak üzere tasarlanmıştır.
#Dahil etmek
// MMA8452Q I2C adresi 0x1C(28)
#define Addr 0x1C
geçersiz kurulum()
{
// I2C iletişimini MASTER olarak başlat
Wire.begin();
// Seri İletişimi Başlat, baud hızını ayarla = 9600
Seri.başla(9600);
// I2C İletimini Başlat
Wire.beginTransmission(Adr);
// Kontrol kaydı seç
Wire.write(0x2A);
// Bekleme modu
Wire.write(0x00);
// I2C İletimini Durdur
Wire.endTransmission();
// I2C İletimini Başlat
Wire.beginTransmission(Adr);
// Kontrol kaydı seç
Wire.write(0x2A);
// Aktif mod
Wire.write(0x01);
// I2C İletimini Durdur
Wire.endTransmission();
// I2C İletimini Başlat
Wire.beginTransmission(Adr);
// Kontrol kaydı seç
Wire.write(0x0E);
// Aralığı +/- 2g olarak ayarla
Wire.write(0x00);
// I2C İletimini Durdur
Wire.endTransmission();
gecikme(300);
}
boşluk döngüsü()
{
imzasız int veri[7];
// 7 bayt veri iste
Wire.requestFrom(Adr, 7);
// 7 bayt veri oku
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
if(Wire.available() == 7)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
veri[3] = Wire.read();
veri[4] = Wire.read();
veri[5] = Wire.read();
veri[6] = Wire.read();
}
// Veriyi 12 bit'e çevir
int xAccl = ((veri[1] * 256) + veri[2]) / 16;
eğer (xAccl > 2047)
{
xAccl -= 4096;
}
int yAccl = ((veri[3] * 256) + veri[4]) / 16;
if (yAccl > 2047)
{
yAccl -= 4096;
}
int zAccl = ((veri[5] * 256) + veri[6]) / 16;
if (zAccl > 2047)
{
zAccl -= 4096;
}
// Verileri seri monitöre çıkar
Serial.print("X Ekseninde Hızlanma: ");
Serial.println(xAccl);
Serial.print("Y Ekseninde İvme: ");
Seri.println(yAccl);
Serial.print("Z Ekseninde İvme: ");
Serial.println(zAccl);
gecikme(500);
}
Adım 4: Uygulamalar:
MMA8452Q, E-Pusula uygulamaları, Dikey/Yatay, Yukarı/Aşağı, Sol/Sağ, Arka/Ön konum tanımlama, Dizüstü Bilgisayar, e-okuyucu ve Dizüstü Bilgisayar Düşme ve Serbest Düşme Algılamayı içeren Statik yön algılama, Gerçek zamanlı gibi çeşitli uygulamalara sahiptir. sanal gerçeklik ve oyun 3D kullanıcı konumu geri bildirimi dahil oryantasyon algılama, pedometre adım sayma gibi gerçek zamanlı etkinlik analizi, HDD için serbest düşüş algılama, ölü hesaplama GPS yedekleme ve çok daha fazlası.