Daftar Isi:

Particle Photon - Tutorial Sensor Altimeter Presisi MPL3115A2: 4 Langkah
Particle Photon - Tutorial Sensor Altimeter Presisi MPL3115A2: 4 Langkah

Video: Particle Photon - Tutorial Sensor Altimeter Presisi MPL3115A2: 4 Langkah

Video: Particle Photon - Tutorial Sensor Altimeter Presisi MPL3115A2: 4 Langkah
Video: BeagleBone Black HP203B Precision Barometer & Altimeter Sensor 'C' Code Tutorial 2024, Juni
Anonim
Image
Image

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.

Apa yang kau butuhkan..!!
Apa yang kau butuhkan..!!

1. Foton Partikel

2. MPL3115A2

3. Kabel I²C

4. Perisai I²C untuk Foton Partikel

Langkah 2: Koneksi:

Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
Koneksi
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
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.

Direkomendasikan: