Tartalomjegyzék:

Részecskefoton - MPL3115A2 Precíziós magasságmérő oktató: 4 lépés
Részecskefoton - MPL3115A2 Precíziós magasságmérő oktató: 4 lépés

Videó: Részecskefoton - MPL3115A2 Precíziós magasságmérő oktató: 4 lépés

Videó: Részecskefoton - MPL3115A2 Precíziós magasságmérő oktató: 4 lépés
Videó: Supersymmetry Theory Explained in 60 Seconds 2024, November
Anonim
Image
Image

Az MPL3115A2 MEMS nyomásérzékelőt alkalmaz I2C interfésszel a pontos nyomás/magasság és hőmérséklet adatok biztosításához. Az érzékelő kimeneteit egy nagy felbontású 24 bites ADC digitalizálja. A belső feldolgozás eltávolítja a kompenzációs feladatokat a gazda MCU rendszerből. Csak 0,05 kPa változást képes észlelni, ami 0,3 m magasságváltozással egyenlő. Itt a demonstráció részecske fotonnal.

1. lépés: Amire szüksége van..

Amire szükséged van..!!
Amire szükséged van..!!

1. Foton részecske

2. MPL3115A2

3. I²C kábel

4. I²C pajzs részecske fotonhoz

2. lépés: Csatlakozások:

Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások
Csatlakozások

Vegyünk egy I2C pajzsot a részecske fotonhoz, és óvatosan toljuk át a részecske foton csapjain.

Ezután csatlakoztassa az I2C kábel egyik végét az MPL3115A2 érzékelőhöz, a másik végét pedig az I2C árnyékoláshoz.

A csatlakozásokat a fenti kép mutatja.

3. lépés: Kód:

Kód
Kód

Az MPL3115A2 részecske kódja letölthető a Github tárhelyünkről-DCUBE Store.

Itt a link.

A részecskekódhoz két könyvtárat használtunk, ezek az application.h és a spark_wiring_i2c.h. A Spark_wiring_i2c könyvtár szükséges az I2C kommunikáció megkönnyítéséhez az érzékelővel.

Innen is másolhatja a kódot, ez a következőképpen van megadva:

// Szabad akaratú licenccel terjesztik.

// Bármilyen módon használhatja, haszonnal vagy ingyen, feltéve, hogy illeszkedik a kapcsolódó művek licenceihez.

// MPL3115A2

// Ez a kód az MPL3115A2_I2CS I2C Mini modullal való együttműködésre készült

#befoglalni

#befoglalni

// Az MPL3115A2 I2C címe 0x60 (96)

#define Addr 0x60

úszó cTemp = 0,0, fTemp = 0,0, nyomás = 0,0, magasság = 0,0;

int temp = 0, tHeight = 0; long pres = 0;

üres beállítás ()

{

// Változó beállítása

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

Particle.variable ("cTemp", cTemp);

Részecske.változó ("nyomás", nyomás);

Particle.variable ("magasság", magasság);

// Inicializálja az I2C kommunikációt

Wire.begin ();

// Inicializálja a soros kommunikációt, állítsa be az átviteli sebességet = 9600

Sorozat.kezdet (9600);

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Vezérlőregiszter kiválasztása

Wire.write (0x26);

// Aktív mód, OSR = 128, magasságmérő mód

Wire.write (0xB9);

// Az I2C átvitel leállítása

Wire.endTransmission ();

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatkonfigurációs regiszter kiválasztása

Wire.write (0x13);

// Adatok kész esemény engedélyezve a magasság, nyomás, hőmérséklet

Wire.write (0x07);

// Az I2C átvitel leállítása

Wire.endTransmission ();

késleltetés (300);

}

üres hurok ()

{

előjel nélküli int adatok [6];

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Vezérlőregiszter kiválasztása

Wire.write (0x26);

// Aktív mód, OSR = 128, magasságmérő mód

Wire.write (0xB9);

// Az I2C átvitel leállítása

Wire.endTransmission ();

késleltetés (1000);

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter kiválasztása

Wire.write (0x00);

// Az I2C átvitel leállítása

Wire.endTransmission ();

// 6 bájt adat kérése

Wire.requestFrom (Addr, 6);

// 6 bájt adat olvasása a 0x00 (00) címről

// állapot, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

ha (Wire.available () == 6)

{

adatok [0] = Wire.read ();

adatok [1] = Wire.read ();

adatok [2] = Wire.read ();

adatok [3] = Wire.read ();

adatok [4] = Wire.read ();

adatok [5] = Wire.read ();

}

// Az adatok konvertálása 20 bitesre

tMagasság = (((((hosszú) adatok [1] * (hosszú) 65536) + (adatok [2] * 256) + (adatok [3] és 0xF0)) / 16);

temp = ((adatok [4] * 256) + (adatok [5] és 0xF0)) / 16;

magasság = tMagasság / 16,0;

cTemp = (temp / 16,0);

fTemp = cTemp * 1,8 + 32;

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Vezérlőregiszter kiválasztása

Wire.write (0x26);

// Aktív mód, OSR = 128, barométer mód

Wire.write (0x39);

// Az I2C átvitel leállítása

Wire.endTransmission ();

// Indítsa el az I2C átvitelt

Wire.beginTransmission (Addr);

// Adatregiszter kiválasztása

Wire.write (0x00);

// Az I2C átvitel leállítása

Wire.endTransmission ();

késleltetés (1000);

// 4 bájt adat kérése

Wire.requestFrom (Addr, 4);

// 4 bájt adat olvasása

// állapot, pres msb1, pres msb, pres lsb

ha (Wire.available () == 4)

{

adatok [0] = Wire.read ();

adatok [1] = Wire.read ();

adatok [2] = Wire.read ();

adatok [3] = Wire.read ();

}

// Az adatok konvertálása 20 bitesre

pres = (((hosszú) adatok [1] * (hosszú) 65536) + (adatok [2] * 256) + (adatok [3] és 0xF0)) / 16;

nyomás = (pres / 4,0) / 1000,0;

// Adatok kimenete a műszerfalra

Particle.publish ("Magasság:", Karakterlánc (magasság));

Particle.publish ("Nyomás:", String (nyomás));

Particle.publish ("Hőmérséklet Celsius -ban:", String (cTemp));

Particle.publish ("Hőmérséklet Fahrenheitben:", String (fTemp));

késleltetés (1000);

}

4. lépés: Alkalmazások:

Az MPL3115A2 különféle alkalmazásai közé tartozik a nagy pontosságú magasságmérés, az okostelefonok/táblagépek, a személyi elektronikai magasságmérés, stb. Beépíthető a GPS holtszámlálásba, a GPS segélyhívó szolgáltatások javításába, a térképsegédbe, a navigációba és az időjárás -állomás berendezésekbe is.

Ajánlott: