
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47


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 bemutatója az Arduino Nano -val.
1. lépés: Amire szüksége van..

1. Arduino Nano
2. MPL3115A2
3. I²C kábel
4. I²C pajzs az Arduino Nano számára
2. lépés: Csatlakozások:




Vegyünk egy I2C pajzsot az Arduino Nano számára, és óvatosan toljuk át a Nano csapjaira.
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 arduino kódja letölthető a github tárhelyünkről-DCUBE Store.
Itt a link ugyanerre:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
Tartalmazzuk a Wire.h könyvtárat, hogy megkönnyítsük az érzékelő I2c kommunikációját az Arduino táblával.
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
// Az MPL3115A2 I2C címe 0x60 (96)
#define Addr 0x60
üres beállítás ()
{
// 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
int tHeight = (((hosszú) (adat [1] * (hosszú) 65536) + (adat [2] * 256) + (adat [3] és 0xF0)) / 16);
int temp = ((adatok [4] * 256) + (adatok [5] és 0xF0)) / 16;
úszó magasság = tMagasság / 16,0;
float cTemp = (temp / 16,0);
float 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 ();
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 ();
// 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
hosszú pres = (((hosszú) adatok [1] * (hosszú) 65536) + (adatok [2] * 256) + (adatok [3] és 0xF0)) / 16;
úszónyomás = (pres / 4,0) / 1000,0;
// Adatok kimenete soros monitorra
Serial.print ("Magasság:");
Soros.nyomat (magasság);
Soros.println ("m");
Serial.print ("Nyomás:");
Soros.nyomtatás (nyomás);
Serial.println ("kPa");
Serial.print ("Hőmérséklet Celsius -ban:");
Serial.print (cTemp);
Serial.println ("C");
Serial.print ("Hőmérséklet Fahrenheitben:");
Serial.print (fTemp);
Serial.println ("F");
késleltetés (500);
}
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
Piszok olcsó szennyeződés-mérő-$ 9 Arduino alapú hallható magasságmérő: 4 lépés (képekkel)

Dirt Olcsó Dirt-O-Meter-$ 9 Arduino-alapú hallható magasságmérő: A Dytters (A.K.A. Hallható magasságmérők) annyi évig mentette meg az ejtőernyősök életét. Most az Audible Abby is pénzt takarít meg nekik. Az alap Dytters négy riasztóval rendelkezik, az egyik felfelé, és három a lefelé. Felrepüléskor az ejtőernyősöknek tudniuk kell, mikor
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
Arduino: Precíziós Lib a léptetőmotorhoz: 19 lépés

Arduino: Precision Lib a léptetőmotorhoz: Ma megmutatok egy könyvtárat egy teljes lépcsős motorvezérlőnek végálláskapcsolókkal, valamint a motor mozgásával gyorsítással és mikro lépéssel. Ez a Lib, amely mind az Arduino Uno -n, mind az Arduino Mega -n működik, lehetővé teszi a motorok mozgatását, nem pedig alapon
Arduino magasságmérő BMP és SPI vagy I2C OLED használatával: 5 lépés

Arduino magasságmérő BMP és SPI vagy I2C OLED használatával: Hosszú ideig egyetlen érzékelővel kerestem a magasságmérőt és a hőmérsékletet, és megjelenítettem az SPI alapú OLED számára. Mivel nem találtam semmi pontosat, úgy gondoltam, hogy az U8glib könyvtár használatával építem fel a sajátomat. Van egy tutorial a youtubon