Sisällysluettelo:

Hiukkasfotoni - MPL3115A2 Tarkka korkeusmittarin anturin opetusohjelma: 4 vaihetta
Hiukkasfotoni - MPL3115A2 Tarkka korkeusmittarin anturin opetusohjelma: 4 vaihetta

Video: Hiukkasfotoni - MPL3115A2 Tarkka korkeusmittarin anturin opetusohjelma: 4 vaihetta

Video: Hiukkasfotoni - MPL3115A2 Tarkka korkeusmittarin anturin opetusohjelma: 4 vaihetta
Video: Урок 96: Датчик атмосферного давления, температуры, приблизительной высоты BMP390 с ЖК-дисплеем 2024, Marraskuu
Anonim
Image
Image

MPL3115A2 käyttää MEMS -paineanturia, jossa on I2C -liitäntä, joka antaa tarkat paine-/korkeus- ja lämpötilatiedot. Anturilähdöt digitalisoidaan korkean resoluution 24-bittisellä ADC: llä. Sisäinen käsittely poistaa korvaustehtävät isäntä MCU -järjestelmästä. Se pystyy havaitsemaan muutoksen vain 0,05 kPa, mikä vastaa 0,3 metrin korkeuden muutosta. Tässä on sen esittely hiukkasfotonilla.

Vaihe 1: Mitä tarvitset..

Mitä tarvitset..!!
Mitä tarvitset..!!

1. Hiukkasfotoni

2. MPL3115A2

3. I²C -kaapeli

4. I²C -suoja hiukkasfotonille

Vaihe 2: Liitännät:

Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät

Ota I2C -suoja hiukkasfotonille ja työnnä sitä varovasti hiukkasfotonin nastojen yli.

Liitä sitten I2C -kaapelin toinen pää MPL3115A2 -anturiin ja toinen pää I2C -suojaan.

Liitännät näkyvät yllä olevassa kuvassa.

Vaihe 3: Koodi:

Koodi
Koodi

MPL3115A2-hiukkaskoodin voi ladata Github-arkistostamme DCUBE-kaupasta.

Tässä on linkki.

Olemme käyttäneet hiukkaskoodissa kahta kirjastoa, joita ovat application.h ja spark_wiring_i2c.h. Spark_wiring_i2c -kirjasto tarvitaan I2C -tiedonsiirron helpottamiseksi anturin kanssa.

Voit myös kopioida koodin täältä, se annetaan seuraavasti:

// Jaetaan vapaaehtoisella lisenssillä.

// Käytä sitä haluamallasi tavalla, voittoa tai ilmaiseksi, jos se sopii siihen liittyvien teosten lisensseihin.

// MPL3115A2

// Tämä koodi on suunniteltu toimimaan MPL3115A2_I2CS I2C Mini -moduulin kanssa

#sisältää

#sisältää

// MPL3115A2 I2C -osoite on 0x60 (96)

#define Addr 0x60

kelluva cTemp = 0,0, fTemp = 0,0, paine = 0,0, korkeus = 0,0;

int temp = 0, tKorkeus = 0; pitkä pres = 0;

mitätön asennus ()

{

// Aseta muuttuja

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

Particle.variable ("cTemp", cTemp);

Partikkeli.muuttuja ("paine", paine);

Particle.variable ("korkeus", korkeus);

// Alusta I2C -viestintä

Wire.begin ();

// Alusta sarjaliikenne, aseta baudinopeus = 9600

Sarja.alku (9600);

// Aloita I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse ohjausrekisteri

Wire.write (0x26);

// Aktiivinen tila, OSR = 128, korkeusmittari

Wire.write (0xB9);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Aloita I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse tietojen määritysrekisteri

Wire.write (0x13);

// Data ready -tapahtuma käytössä korkeudessa, paineessa, lämpötilassa

Wire.write (0x07);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

viive (300);

}

tyhjä silmukka ()

{

allekirjoittamattomat int -tiedot [6];

// Aloita I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse ohjausrekisteri

Wire.write (0x26);

// Aktiivinen tila, OSR = 128, korkeusmittari

Wire.write (0xB9);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

viive (1000);

// Aloita I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse tietorekisteri

Wire.write (0x00);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 6 tavua dataa

Wire.requestFrom (Addr, 6);

// Lue 6 tavua dataa osoitteesta 0x00 (00)

// tila, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

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

}

// Muunna tiedot 20-bittisiksi

tKorkeus = (((((pitkä)) data [1] * (pitkä) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);

lämpötila = ((data [4] * 256) + (data [5] & 0xF0)) / 16;

korkeus = tKorkeus / 16,0;

cTemp = (lämpötila / 16,0);

fTemp = cTemp * 1,8 + 32;

// Aloita I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse ohjausrekisteri

Wire.write (0x26);

// Aktiivinen tila, OSR = 128, barometritila

Wire.write (0x39);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Aloita I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse tietorekisteri

Wire.write (0x00);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

viive (1000);

// Pyydä 4 tavua dataa

Wire.requestFrom (Addr, 4);

// Lue 4 tavua dataa

// tila, pres msb1, pres msb, pres lsb

jos (Wire.available () == 4)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

}

// Muunna tiedot 20-bittisiksi

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

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

// Tulosta tiedot kojelautaan

Particle.publish ("Korkeus:", Jono (korkeus));

Particle.publish ("Paine:", Jono (paine));

Particle.publish ("Lämpötila Celsius:", Jono (cTemp));

Particle.publish ("Lämpötila Fahrenheit:", Jono (fTemp));

viive (1000);

}

Vaihe 4: Sovellukset:

MPL3115A2: n eri sovelluksiin kuuluu korkean tarkkuuden korkeusmittari, älypuhelimet/tabletit, henkilökohtaisen elektroniikan korkeusmittari jne. Se voidaan sisällyttää myös GPS -kuolleen laskennan, hätäpalvelujen GPS -parannuksen, kartta -avustimen, navigoinnin ja sääaseman laitteisiin.

Suositeltava: