Sisällysluettelo:

Arduino Nano - MPL3115A2 Tarkka korkeusmittarin anturin opetusohjelma: 4 vaihetta
Arduino Nano - MPL3115A2 Tarkka korkeusmittarin anturin opetusohjelma: 4 vaihetta

Video: Arduino Nano - MPL3115A2 Tarkka korkeusmittarin anturin opetusohjelma: 4 vaihetta

Video: Arduino Nano - MPL3115A2 Tarkka korkeusmittarin anturin opetusohjelma: 4 vaihetta
Video: Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial 2024, Heinäkuu
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 Arduino Nanon kanssa.

Vaihe 1: Mitä tarvitset..

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

1. Arduino Nano

2. MPL3115A2

3. I²C -kaapeli

4. I²C -kilpi Arduino Nanolle

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 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:

Koodi
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.

Suositeltava: