Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
MPL3115A2 menggunakan sensor tekanan MEMS dengan antarmuka I2C untuk memberikan data Tekanan/Ketinggian dan Suhu yang akurat. Output sensor didigitalkan oleh ADC 24-bit resolusi tinggi. Pemrosesan internal menghapus tugas kompensasi dari sistem MCU host. Ia mampu mendeteksi perubahan hanya 0,05 kPa yang setara dengan perubahan ketinggian 0,3 m. Berikut adalah demonstrasinya dengan foton Partikel.
Langkah 1: Yang Anda Butuhkan.
1. Foton Partikel
2. MPL3115A2
3. Kabel I²C
4. Perisai I²C untuk Foton Partikel
Langkah 2: Koneksi:
Ambil pelindung I2C untuk foton partikel dan dorong perlahan ke atas pin foton partikel.
Kemudian sambungkan salah satu ujung kabel I2C ke sensor MPL3115A2 dan ujung lainnya ke pelindung I2C.
Koneksi ditunjukkan pada gambar di atas.
Langkah 3: Kode:
Kode partikel untuk MPL3115A2 dapat diunduh dari repositori Github-DCUBE Store kami.
Ini tautannya.
Kami telah menggunakan dua library untuk kode partikel, yaitu application.h dan spark_wiring_i2c.h. Perpustakaan Spark_wiring_i2c diperlukan untuk memfasilitasi komunikasi I2C dengan sensor.
Anda juga dapat menyalin kode dari sini, diberikan sebagai berikut:
// Didistribusikan dengan lisensi kehendak bebas.
// Gunakan sesuka Anda, untung atau gratis, asalkan sesuai dengan lisensi karya terkait.
// MPL3115A2
// Kode ini dirancang untuk bekerja dengan Modul Mini MPL3115A2_I2CS I2C
#termasuk
#termasuk
// Alamat MPL3115A2 I2C adalah 0x60(96)
#tentukan Addr 0x60
float cTemp = 0,0, fTemp = 0,0, tekanan = 0,0, ketinggian = 0,0;
int temp = 0, tTinggi = 0;tekanan panjang = 0;
batalkan pengaturan()
{
// Tetapkan variabel
Particle.variable("i2cdevice", "MPL3115A2");
Particle.variable("cTemp", cTemp);
Particle.variable("tekanan", tekanan);
Particle.variable("ketinggian", ketinggian);
// Inisialisasi komunikasi I2C
Kawat.mulai();
// Inisialisasi Komunikasi Serial, setel baud rate = 9600
Serial.begin(9600);
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih register kontrol
Kawat.tulis (0x26);
// Mode aktif, OSR = 128, mode altimeter
Wire.write(0xB9);
// Hentikan transmisi I2C
Kawat.endTransmisi();
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih register konfigurasi data
Kawat.tulis (0x13);
// Acara siap data diaktifkan untuk ketinggian, tekanan, suhu
Kawat.tulis (0x07);
// Hentikan transmisi I2C
Kawat.endTransmisi();
penundaan (300);
}
lingkaran kosong()
{
data int yang tidak ditandatangani[6];
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih register kontrol
Kawat.tulis (0x26);
// Mode aktif, OSR = 128, mode altimeter
Wire.write(0xB9);
// Hentikan transmisi I2C
Kawat.endTransmisi();
penundaan (1000);
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih daftar data
Kawat.tulis (0x00);
// Hentikan transmisi I2C
Kawat.endTransmisi();
// Meminta 6 byte data
Wire.requestFrom(Addr, 6);
// Baca 6 byte data dari alamat 0x00(00)
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
if(Wire.available() == 6)
{
data[0] = Wire.read();
data[1] = Kawat.baca();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Kawat.baca();
data[5] = Wire.read();
}
// Ubah data menjadi 20-bit
tTinggi = ((((panjang)data[1] * (panjang)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16);
temp = ((data[4] * 256) + (data[5] & 0xF0)) / 16;
ketinggian = tTinggi / 16.0;
cTemp = (suhu / 16.0);
fTemp = cTemp * 1,8 + 32;
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih register kontrol
Kawat.tulis (0x26);
// Mode aktif, OSR = 128, mode barometer
Kawat.tulis (0x39);
// Hentikan transmisi I2C
Kawat.endTransmisi();
// Mulai transmisi I2C
Wire.beginTransmission(Addr);
// Pilih daftar data
Kawat.tulis (0x00);
// Hentikan transmisi I2C
Kawat.endTransmisi();
penundaan (1000);
// Meminta 4 byte data
Wire.requestFrom(Addr, 4);
// Baca 4 byte data
// status, tekan msb1, tekan msb, tekan lsb
if(Wire.available() == 4)
{
data[0] = Wire.read();
data[1] = Kawat.baca();
data[2] = Wire.read();
data[3] = Wire.read();
}
// Ubah data menjadi 20-bit
pres = (((panjang)data[1] * (panjang)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16;
tekanan = (pres / 4.0) / 10000.0;
// Keluarkan data ke dasbor
Particle.publish("Ketinggian:", String(ketinggian));
Particle.publish("Tekanan:", String(tekanan));
Particle.publish("Suhu dalam Celcius:", String(cTemp));
Particle.publish("Suhu dalam Fahrenheit:", String(fTemp));
penundaan (1000);
}
Langkah 4: Aplikasi:
Berbagai aplikasi MPL3115A2 termasuk Altimetri Akurasi Tinggi, Smartphone/Tablet, Altimetri Elektronik Pribadi, dll. Ini juga dapat digabungkan dalam GPS Dead Reckoning, Peningkatan GPS untuk Layanan Darurat, Bantuan Peta, Navigasi, serta Peralatan Stasiun Cuaca.