Talaan ng mga Nilalaman:

Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 na Hakbang
Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 na Hakbang

Video: Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 na Hakbang

Video: Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 na Hakbang
Video: MPL115A2 Arduino LCD1602 2024, Hulyo
Anonim
Image
Image

Ang MPL3115A2 ay gumagamit ng isang sensor ng presyon ng MEMS na may isang interface na I2C upang magbigay ng tumpak na data ng Presyon / Altitude at Temperatura. Ang mga output ng sensor ay na-digitize ng isang mataas na resolusyon na 24-bit ADC. Tinatanggal ng panloob na pagproseso ang mga gawain sa pagbabayad mula sa host MCU system. Ito ay may kakayahang makita ang isang pagbabago sa 0.05 kPa lamang na katumbas ng isang 0.3m na pagbabago sa altitude. Narito ang pagpapakita nito kasama si Arduino Nano.

Hakbang 1: Ano ang Kailangan Mo.. !

Ang iyong kailangan..!!
Ang iyong kailangan..!!

1. Arduino Nano

2. MPL3115A2

3. I²C Cable

4. I²C Shield para sa Arduino Nano

Hakbang 2: Mga Koneksyon:

Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon

Kumuha ng isang kalasag I2C para sa Arduino Nano at dahan-dahang itulak ito sa mga pin ng Nano.

Pagkatapos ikonekta ang isang dulo ng I2C cable sa MPL3115A2 sensor at ang iba pang mga dulo sa I2C kalasag.

Ang mga koneksyon ay ipinapakita sa larawan sa itaas.

Hakbang 3: Code:

Code
Code

Ang arduino code para sa MPL3115A2 ay maaaring ma-download mula sa aming github repository-DCUBE Store.

Narito ang link para sa pareho:

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

Isinasama namin ang library Wire.h upang mapabilis ang komunikasyon ng I2c ng sensor gamit ang Arduino board.

Maaari mo ring kopyahin ang code mula dito, ibinibigay ito tulad ng sumusunod:

// Ipinamamahagi ng isang lisensyang malaya ang kalooban.

// Gumamit nito sa anumang paraan na nais mo, kumita o libre, naibigay na umaangkop ito sa mga lisensya ng mga nauugnay na gawa nito.

// MPL3115A2

// Ang code na ito ay dinisenyo upang gumana sa MPL3115A2_I2CS I2C Mini Module

# isama

// MPL3115A2 I2C address ay 0x60 (96)

# tukuyin ang Addr 0x60

walang bisa ang pag-setup ()

{

// Initialise I2C na komunikasyon

Wire.begin ();

// Initialise Serial Communication, itakda ang baud rate = 9600

Serial.begin (9600);

// Simulan ang paghahatid ng I2C

Wire.beginTransmission (Addr);

// Piliin ang rehistro ng kontrol

Wire.write (0x26);

// Active mode, OSR = 128, altimeter mode

Wire.write (0xB9);

// Ihinto ang paghahatid ng I2C

Wire.endTransmission ();

// Simulan ang paghahatid ng I2C

Wire.beginTransmission (Addr);

// Piliin ang rehistro ng pagsasaayos ng data

Wire.write (0x13);

// Pinagana ang kaganapan na handa na sa data para sa altitude, presyon, temperatura

Wire.write (0x07);

// Ihinto ang paghahatid ng I2C

Wire.endTransmission ();

pagkaantala (300);

}

walang bisa loop ()

{

unsigned int data [6];

// Simulan ang paghahatid ng I2C

Wire.beginTransmission (Addr);

// Piliin ang rehistro ng kontrol

Wire.write (0x26);

// Active mode, OSR = 128, altimeter mode

Wire.write (0xB9);

// Ihinto ang paghahatid ng I2C

Wire.endTransmission ();

pagkaantala (1000);

// Simulan ang paghahatid ng I2C

Wire.beginTransmission (Addr);

// Piliin ang pagrehistro ng data

Wire.write (0x00);

// Ihinto ang paghahatid ng I2C

Wire.endTransmission ();

// Humiling ng 6 bytes ng data

Wire.requestFrom (Addr, 6);

// Basahin ang 6 bytes ng data mula sa address 0x00 (00)

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

kung (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 ();

}

// I-convert ang data sa 20-bit

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

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

float altitude = tKataas / 16.0;

float cTemp = (temp / 16.0);

float fTemp = cTemp * 1.8 + 32;

// Simulan ang paghahatid ng I2C

Wire.beginTransmission (Addr);

// Piliin ang rehistro ng kontrol

Wire.write (0x26);

// Aktibo mode, OSR = 128, mode ng barometer

Wire.write (0x39);

// Ihinto ang paghahatid ng I2C

Wire.endTransmission ();

pagkaantala (1000);

// Simulan ang paghahatid ng I2C

Wire.beginTransmission (Addr);

// Piliin ang pagrehistro ng data

Wire.write (0x00);

// Ihinto ang paghahatid ng I2C

Wire.endTransmission ();

// Humiling ng 4 bytes ng data

Wire.requestFrom (Addr, 4);

// Basahin ang 4 bytes ng data

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

kung (Wire.available () == 4)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

}

// I-convert ang data sa 20-bit

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

float pressure = (pres / 4.0) / 1000.0;

// Output data sa serial monitor

Serial.print ("Altitude:");

Serial.print (altitude);

Serial.println ("m");

Serial.print ("Presyon:");

Serial.print (presyon);

Serial.println ("kPa");

Serial.print ("Temperatura sa Celsius:");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("Temperatura sa Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

pagkaantala (500);

}

Hakbang 4: Mga Aplikasyon:

Ang iba`t ibang mga aplikasyon ng MPL3115A2 ay may kasamang Mataas na Katumpakan Altimetry, Mga Smartphone / Tablet, Personal na Elektronikong Altimetry atbp Maaari din itong isama sa GPS Dead Reckoning, Pagpapahusay ng GPS para sa Mga Serbisyong Pang-emergency, Tulong sa Mapa, Pag-navigate pati na rin Kagamitan ng Weather Station.

Inirerekumendang: