Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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 Arduino Nanon kanssa.
Vaihe 1: Mitä tarvitset..
1. Arduino Nano
2. MPL3115A2
3. I²C -kaapeli
4. I²C -kilpi Arduino Nanolle
Vaihe 2: Liitännät:
Ota I2C -suoja Arduino Nanolle ja työnnä sitä varovasti Nanon 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:
MPL3115A2: n arduino-koodi voidaan ladata github-arkistostamme-DCUBE Storesta.
Tässä linkki samaan:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
Mukana on kirjasto Wire.h, joka helpottaa anturin I2c -tiedonsiirtoa Arduino -kortin 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ää
// MPL3115A2 I2C -osoite on 0x60 (96)
#define Addr 0x60
mitätön asennus ()
{
// 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
int tKorkeus = (((pitkä) (data [1] * (pitkä) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);
int temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;
kellukorkeus = tKorkeus / 16,0;
kelluva cTemp = (lämpötila / 16,0);
kelluva 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 ();
viive (1000);
// Aloita I2C -lähetys
Wire.beginTransmission (Addr);
// Valitse tietorekisteri
Wire.write (0x00);
// Pysäytä I2C -lähetys
Wire.endTransmission ();
// 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
pitkä pres = (((pitkä) data [1] * (pitkä) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;
kelluva paine = (pres / 4,0) / 1000,0;
// Tulostustiedot sarjamittarille
Serial.print ("Korkeus:");
Sarjajälki (korkeus);
Sarja.println ("m");
Serial.print ("Paine:");
Sarjajälki (paine);
Serial.println ("kPa");
Serial.print ("Lämpötila celsiusasteina:");
Serial.print (cTemp);
Serial.println ("C");
Serial.print ("Lämpötila Fahrenheit:");
Serial.print (fTemp);
Serial.println ("F");
viive (500);
}
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.