Satura rādītājs:

Daļiņu fotons - MPL3115A2 Precīzijas altimetra sensora apmācība: 4 soļi
Daļiņu fotons - MPL3115A2 Precīzijas altimetra sensora apmācība: 4 soļi

Video: Daļiņu fotons - MPL3115A2 Precīzijas altimetra sensora apmācība: 4 soļi

Video: Daļiņu fotons - MPL3115A2 Precīzijas altimetra sensora apmācība: 4 soļi
Video: Свет — частица или волна? — Колм Келлехер 2024, Jūnijs
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 daļiņu fotonu.

1. solis: kas jums nepieciešams..

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

1. Daļiņu fotons

2. MPL3115A2

3. I²C kabelis

4. I²C vairogs daļiņu fotonam

2. darbība. Savienojumi:

Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi

Paņemiet I2C vairogu daļiņu fotonam un viegli piespiediet to virs daļiņu fotona 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 daļiņu kodu var lejupielādēt no mūsu Github repozitorija-DCUBE veikala.

Šeit ir saite.

Mēs esam izmantojuši divas bibliotēkas daļiņu kodam, kas ir application.h un spark_wiring_i2c.h. Lai atvieglotu I2C saziņu ar sensoru, ir nepieciešama bibliotēka Spark_wiring_i2c.

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

#iekļaut

// MPL3115A2 I2C adrese ir 0x60 (96)

#define Addr 0x60

pludiņš cTemp = 0,0, fTemp = 0,0, spiediens = 0,0, augstums = 0,0;

int temp = 0, tAugstums = 0; garš pres = 0;

anulēts iestatījums ()

{

// Iestatīt mainīgo

Particle.variable ("i2cdevice", "MPL3115A2");

Particle.variable ("cTemp", cTemp);

Daļiņa.mainīgais ("spiediens", spiediens);

Particle.variable ("augstums", augstums);

// 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

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

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

augstums = tAugstums / 16,0;

cTemp = (temp / 16,0);

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

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet datu reģistru

Wire.write (0x00);

// Apturēt I2C pārraidi

Wire.endTransmission ();

kavēšanās (1000);

// 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

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

spiediens = (pres / 4,0) / 1000,0;

// Izvadiet datus informācijas panelī

Particle.publish ("Augstums:", String (augstums));

Particle.publish ("Spiediens:", Stīga (spiediens));

Particle.publish ("Temperatūra pēc Celsija:", String (cTemp));

Particle.publish ("Temperatūra pēc Fārenheita:", String (fTemp));

kavēšanās (1000);

}

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: