Satura rādītājs:

Arduino Nano - MPL3115A2 Precīzijas altimetra sensora apmācība: 4 soļi
Arduino Nano - MPL3115A2 Precīzijas altimetra sensora apmācība: 4 soļi

Video: Arduino Nano - MPL3115A2 Precīzijas altimetra sensora apmācība: 4 soļi

Video: Arduino Nano - MPL3115A2 Precīzijas altimetra sensora apmācība: 4 soļi
Video: Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial 2024, Jūlijs
Anonim
Image
Image

MPL3115A2 izmanto MEMS spiediena sensoru ar I2C saskarni, lai nodrošinātu precīzus spiediena/augstuma un temperatūras datus. Sensora izejas tiek digitalizētas ar augstas izšķirtspējas 24 bitu ADC. Iekšējā apstrāde noņem kompensācijas uzdevumus no resursdatora MCU sistēmas. Tas spēj noteikt izmaiņas tikai 0,05 kPa, kas atbilst 0,3 m augstuma izmaiņām. Šeit ir tā demonstrācija ar Arduino Nano.

1. solis: kas jums nepieciešams..

Ko tev vajag..!!
Ko tev vajag..!!

1. Arduino Nano

2. MPL3115A2

3. I²C kabelis

4. I²C vairogs Arduino Nano

2. darbība. Savienojumi:

Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi

Paņemiet I2C vairogu Arduino Nano un viegli piespiediet to pār Nano tapām.

Pēc tam pievienojiet I2C kabeļa vienu galu MPL3115A2 sensoram un otru galu pie I2C vairoga.

Savienojumi ir parādīti attēlā iepriekš.

3. darbība: kods:

Kods
Kods

MPL3115A2 arduino kodu var lejupielādēt no mūsu github repozitorija-DCUBE Store.

Šeit ir saite uz to pašu:

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

Mēs iekļaujam bibliotēku Wire.h, lai atvieglotu sensora I2c komunikāciju ar Arduino plati.

Varat arī nokopēt kodu no šejienes, tas ir norādīts šādi:

// Izplatīts ar brīvās gribas licenci.

// Izmantojiet to jebkurā veidā, bez peļņas vai bez maksas, ja tas iekļaujas saistīto darbu licencēs.

// MPL3115A2

// Šis kods ir paredzēts darbam ar MPL3115A2_I2CS I2C mini moduli

#iekļaut

// MPL3115A2 I2C adrese ir 0x60 (96)

#define Addr 0x60

anulēts iestatījums ()

{

// Inicializēt I2C komunikāciju

Wire.begin ();

// Inicializēt seriālo komunikāciju, iestatīt pārraides ātrumu = 9600

Sērijas sākums (9600);

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet vadības reģistru

Wire.write (0x26);

// Aktīvais režīms, OSR = 128, altimetra režīms

Wire.write (0xB9);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet datu konfigurācijas reģistru

Wire.write (0x13);

// Datu gatavs notikums ir iespējots augstumam, spiedienam, temperatūrai

Wire.write (0x07);

// Apturēt I2C pārraidi

Wire.endTransmission ();

kavēšanās (300);

}

tukša cilpa ()

{

neparakstīti int dati [6];

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet vadības reģistru

Wire.write (0x26);

// Aktīvais režīms, OSR = 128, altimetra režīms

Wire.write (0xB9);

// Apturēt I2C pārraidi

Wire.endTransmission ();

kavēšanās (1000);

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet datu reģistru

Wire.write (0x00);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 6 baitus datu

Wire.requestFrom (Addr, 6);

// Nolasīt 6 baitus datu no adreses 0x00 (00)

// statuss, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

ja (Wire.available () == 6)

{

dati [0] = Wire.read ();

dati [1] = Wire.read ();

dati [2] = Wire.read ();

dati [3] = Wire.read ();

dati [4] = Wire.read ();

dati [5] = Wire.read ();

}

// Pārvērst datus par 20 bitiem

int tAugstums = (((garš) (dati [1] * (garš) 65536) + (dati [2] * 256) + (dati [3] un 0xF0)) / 16);

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

pludiņa augstums = tAugstums / 16,0;

pludiņš cTemp = (temp / 16,0);

pludiņš fTemp = cTemp * 1,8 + 32;

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet vadības reģistru

Wire.write (0x26);

// Aktīvais režīms, OSR = 128, barometra režīms

Wire.write (0x39);

// Apturēt I2C pārraidi

Wire.endTransmission ();

kavēšanās (1000);

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet datu reģistru

Wire.write (0x00);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 4 baitus datu

Wire.requestFrom (Addr, 4);

// Lasīt 4 baitus datu

// statuss, pres msb1, pres msb, pres lsb

ja (Wire.available () == 4)

{

dati [0] = Wire.read ();

dati [1] = Wire.read ();

dati [2] = Wire.read ();

dati [3] = Wire.read ();

}

// Pārvērst datus par 20 bitiem

garš pres = (((gari) dati [1] * (garš) 65536) + (dati [2] * 256) + (dati [3] un 0xF0)) / 16;

pludiņa spiediens = (pres / 4,0) / 1000,0;

// Izvadiet datus uz seriālo monitoru

Serial.print ("Augstums:");

Sērijas nospiedums (augstums);

Serial.println ("m");

Serial.print ("Spiediens:");

Sērijas nospiedums (spiediens);

Serial.println ("kPa");

Serial.print ("Temperatūra pēc Celsija:");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("Temperatūra pēc Fārenheita:");

Sērijas nospiedums (fTemp);

Serial.println ("F");

kavēšanās (500);

}

4. darbība. Lietojumprogrammas:

Dažādi MPL3115A2 pielietojumi ietver augstas precizitātes altimetriju, viedtālruņus/planšetdatorus, personīgās elektronikas altimetriju utt. To var iekļaut arī GPS mirušo aprēķinā, GPS uzlabojumos ārkārtas dienestiem, karšu palīglīdzekļos, navigācijā, kā arī meteoroloģisko staciju aprīkojumā.

Ieteicams: