Tartalomjegyzék:
Videó: Részecskefoton - MPL3115A2 Precíziós magasságmérő oktató: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
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..
1. Foton részecske
2. MPL3115A2
3. I²C kábel
4. I²C pajzs részecske fotonhoz
2. lépés: 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:
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:
Magasságmérő (magasságmérő) Légköri nyomás alapján: 7 lépés (képekkel)
Magasságmérő (magasságmérő) Légköri nyomás alapján: [Szerkesztés]; Lásd a 2. verziót a 6. lépésben, kézi alapszintű magasságbevitellel. Ez az Arduino Nano és a Bosch BMP180 légnyomás -érzékelő alapján épített magasságmérő (magasságmérő) épületleírása. A kialakítás egyszerű, de a mérések
DropArt - Precíziós két csepp fényképes ütköző: 11 lépés (képekkel)
DropArt - Precíziós két csepp fényképes ütköző: Üdvözlet! Ebben az oktatható formában bemutatom a számítógép által vezérelt két folyadékcsepp -ütköző tervét. Mielőtt belekezdenénk a tervezési részletekbe, úgy gondolom, ésszerű elmagyarázni, hogy pontosan mi a tervezés célja. Szórakoztató, érdekes
Precíziós óra: 3 lépés
Precíziós óra: Mindannyiunknak szüksége van órákra, ezért miért ne készítse el sajátját ebben az oktatóanyagban. Megmutatom, hogyan készítsen precíziós órát, ha beállította, és automatikusan nyomon követi az aktuális időt a háttérben. Miközben csak nagyon kevés kell
Egy precíziós helyreigazítási kísérlet: 11 lépés
Egy precíziós helyreigazítási kísérlet: Nemrégiben végeztem egy kísérletet egy precíziós egyenirányító áramkörön, és kaptam néhány durva következtetést. Tekintettel arra, hogy a precíziós egyenirányító áramkör közös áramkör, a kísérlet eredményei némi referencia információt nyújthatnak. Az e
DIY analóg, variálható padtápegység, precíziós áramkorlátozó: 8 lépés (képekkel)
DIY analóg változó pados tápegység W/ precíziós áramkorlátozó: Ebben a projektben megmutatom, hogyan kell használni a híres LM317T -t egy áramfokozó teljesítménytranzisztorral, és hogyan kell használni a Linear Technology LT6106 áramérzékelő erősítőt a precíziós áramkorlátozóhoz. Ez az áramkör lehetővé teszi 5 A -nál nagyobb feszültséget használhat