Isi kandungan:

Tutorial Arduino Nano - MPL3115A2 Precision Altimeter Sensor: 4 Langkah
Tutorial Arduino Nano - MPL3115A2 Precision Altimeter Sensor: 4 Langkah

Video: Tutorial Arduino Nano - MPL3115A2 Precision Altimeter Sensor: 4 Langkah

Video: Tutorial Arduino Nano - MPL3115A2 Precision Altimeter Sensor: 4 Langkah
Video: Pressure Sensor with Arduino | BMP180 Pressure, Temperature & Altitude Sensors | @g2ज्ञानkey #shorts 2024, Julai
Anonim
Image
Image

MPL3115A2 menggunakan sensor tekanan MEMS dengan antara muka I2C untuk memberikan data Tekanan / Ketinggian dan Suhu yang tepat. Keluaran sensor didigitalkan oleh ADC 24-bit resolusi tinggi. Pemprosesan dalaman membuang tugas pampasan dari sistem MCU tuan rumah. Ia mampu mengesan perubahan hanya 0.05 kPa yang setara dengan perubahan ketinggian 0.3m. Inilah demonstrasinya dengan Arduino Nano.

Langkah 1: Apa yang Anda Perlu..

Apa yang kamu perlu..!!
Apa yang kamu perlu..!!

1. Arduino Nano

2. MPL3115A2

3. Kabel I²C

4. Perisai I²C untuk Arduino Nano

Langkah 2: Sambungan:

Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan
Sambungan

Ambil pelindung I2C untuk Arduino Nano dan perlahan-lahan menolaknya ke atas pin Nano.

Kemudian sambungkan satu hujung kabel I2C ke sensor MPL3115A2 dan hujung yang lain ke pelindung I2C.

Sambungan ditunjukkan dalam gambar di atas.

Langkah 3: Kod:

Kod
Kod

Kod arduino untuk MPL3115A2 boleh dimuat turun dari github repositori-DCUBE Store kami.

Berikut adalah pautan yang sama:

github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino

Kami menyertakan perpustakaan Wire.h untuk memudahkan komunikasi sensor I2c dengan papan Arduino.

Anda juga boleh menyalin kod dari sini, ia diberikan seperti berikut:

// Diagihkan dengan lesen kehendak bebas.

// Gunakan dengan cara yang anda mahukan, untung atau percuma, dengan syarat ia sesuai dengan lesen karya yang berkaitan.

// MPL3115A2

// Kod ini direka untuk berfungsi dengan Modul Mini MPL3115A2_I2CS I2C

#sertakan

// Alamat MPL3115A2 I2C ialah 0x60 (96)

#tentukan Addr 0x60

persediaan tidak sah ()

{

// Memulakan komunikasi I2C

Wire.begin ();

// Inisialisasi Serial Communication, tetapkan baud rate = 9600

Serial.begin (9600);

// Mulakan penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar kawalan

Wire.write (0x26);

// Mod aktif, OSR = 128, mod altimeter

Wire.write (0xB9);

// Hentikan penghantaran I2C

Wire.endTransmission ();

// Mulakan penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar konfigurasi data

Wire.write (0x13);

// Acara siap data diaktifkan untuk ketinggian, tekanan, suhu

Wire.write (0x07);

// Hentikan penghantaran I2C

Wire.endTransmission ();

kelewatan (300);

}

gelung kosong ()

{

data int yang tidak ditandatangani [6];

// Mulakan penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar kawalan

Wire.write (0x26);

// Mod aktif, OSR = 128, mod altimeter

Wire.write (0xB9);

// Hentikan penghantaran I2C

Wire.endTransmission ();

kelewatan (1000);

// Mulakan penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar data

Wire.write (0x00);

// Hentikan penghantaran I2C

Wire.endTransmission ();

// Minta 6 bait data

Wire.requestFrom (Addr, 6);

// Baca 6 bait data dari alamat 0x00 (00)

// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

jika (Wire.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

// Tukarkan data menjadi 20-bit

int tHeight = (((panjang) (data [1] * (panjang) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);

int temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;

ketinggian apungan = tHeight / 16.0;

apungan cTemp = (temp / 16.0);

apungan fTemp = cTemp * 1.8 + 32;

// Mulakan penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar kawalan

Wire.write (0x26);

// Mod aktif, OSR = 128, mod barometer

Wire.write (0x39);

// Hentikan penghantaran I2C

Wire.endTransmission ();

kelewatan (1000);

// Mulakan penghantaran I2C

Wire.beginTransmission (Addr);

// Pilih daftar data

Wire.write (0x00);

// Hentikan penghantaran I2C

Wire.endTransmission ();

// Minta 4 bait data

Wire.requestFrom (Addr, 4);

// Baca 4 bait data

// status, pres msb1, pres msb, pres lsb

jika (Wire.available () == 4)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

}

// Tukarkan data menjadi 20-bit

long pres = (((long) data [1] * (long) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;

tekanan apungan = (pres / 4.0) / 1000.0;

// Keluarkan data ke monitor bersiri

Serial.print ("Ketinggian:");

Serial.print (ketinggian);

Serial.println ("m");

Serial.print ("Tekanan:");

Cetakan bersiri (tekanan);

Serial.println ("kPa");

Serial.print ("Suhu dalam Celsius:");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("Suhu di Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

kelewatan (500);

}

Langkah 4: Aplikasi:

Pelbagai aplikasi MPL3115A2 termasuk Altimetri Ketepatan Tinggi, Telefon Pintar / Tablet, Altimetri Elektronik Peribadi dan lain-lain. Ia juga dapat digabungkan dalam Perangkaan Mati GPS, Peningkatan GPS untuk Perkhidmatan Kecemasan, Bantuan Peta, Navigasi dan juga Peralatan Stesen Cuaca.

Disyorkan: