Përmbajtje:

Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 hapa
Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 hapa

Video: Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 hapa

Video: Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 hapa
Video: Arduino Nano - MPL3115A2 Precision Altimeter Sensor Tutorial 2024, Korrik
Anonim
Image
Image

MPL3115A2 përdor një sensor presioni MEMS me një ndërfaqe I2C për të siguruar të dhëna të sakta të Presionit/Lartësisë dhe Temperaturës. Daljet e sensorit digjitalizohen nga një ADC me rezolucion të lartë 24-bit. Përpunimi i brendshëm heq detyrat e kompensimit nga sistemi pritës MCU. Shtë i aftë të zbulojë një ndryshim në vetëm 0.05 kPa që barazohet me një ndryshim 0.3m në lartësi. Këtu është demonstrimi i tij me Arduino Nano.

Hapi 1: Ajo që ju nevojitet.. !

Ajo qe ju nevojitet.. !!
Ajo qe ju nevojitet.. !!

1. Arduino Nano

2. MPL3115A2

3. Kabllo I²C

4. Mburoja I²C për Arduino Nano

Hapi 2: Lidhjet:

Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet

Merrni një mburojë I2C për Arduino Nano dhe shtyjeni butësisht mbi kunjat e Nanos.

Pastaj lidhni njërin skaj të kabllit I2C me sensorin MPL3115A2 dhe skajin tjetër me mburojën I2C.

Lidhjet janë treguar në figurën e mësipërme.

Hapi 3: Kodi:

Kodi
Kodi

Kodi arduino për MPL3115A2 mund të shkarkohet nga depoja jonë github-Dyqani DCUBE.

Këtu është lidhja për të njëjtën gjë:

github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino

Ne përfshijmë bibliotekën Wire.h për të lehtësuar komunikimin I2c të sensorit me bordin Arduino.

Ju gjithashtu mund të kopjoni kodin nga këtu, ai jepet si më poshtë:

// Shpërndarë me një licencë me vullnet të lirë.

// Përdoreni atë në çdo mënyrë që dëshironi, fitimprurëse ose falas, me kusht që të përshtatet në licencat e veprave të tij shoqëruese.

// MPL3115A2

// Ky kod është krijuar për të punuar me Mini Modulin MPL3115A2_I2CS I2C

#përfshi

// Adresa MPL3115A2 I2C është 0x60 (96)

#përcaktoni Addr 0x60

void setup ()

{

// Filloni komunikimin I2C

Wire.begin ();

// Filloni Komunikimin Serial, vendosur normën e baudit = 9600

Serial.filloj (9600);

// Filloni transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidhni regjistrin e kontrollit

Wire.write (0x26);

// Mënyra aktive, OSR = 128, mënyra e lartësimatës

Wire.write (0xB9);

// Ndaloni transmetimin I2C

Wire.endTransmission ();

// Filloni transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidhni regjistrin e konfigurimit të të dhënave

Wire.write (0x13);

// Ngjarja e gatshme për të dhëna e aktivizuar për lartësinë, presionin, temperaturën

Wire.write (0x07);

// Ndaloni transmetimin I2C

Wire.endTransmission ();

vonesë (300);

}

lak void ()

{

të dhëna int të panënshkruara [6];

// Filloni transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidhni regjistrin e kontrollit

Wire.write (0x26);

// Mënyra aktive, OSR = 128, mënyra e lartësimatës

Wire.write (0xB9);

// Ndaloni transmetimin I2C

Wire.endTransmission ();

vonesa (1000);

// Filloni transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidh regjistrin e të dhënave

Wire.write (0x00);

// Ndaloni transmetimin I2C

Wire.endTransmission ();

// Kërkoni 6 bajt të dhëna

Tela. Kërkohet Nga (Addr, 6);

// Lexoni 6 bajt të dhëna nga adresa 0x00 (00)

// statusi, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

nëse (Wire. në dispozicion () == 6)

{

të dhëna [0] = Wire.read ();

të dhëna [1] = Wire.read ();

të dhëna [2] = Wire.read ();

të dhëna [3] = Wire.read ();

të dhëna [4] = Wire.read ();

të dhëna [5] = Wire.read ();

}

// Shndërroni të dhënat në 20-bit

int tHeight = (((e gjatë) (të dhënat [1] * (e gjatë) 65536) + (të dhënat [2] * 256) + (të dhënat [3] & 0xF0)) / 16);

int temp = ((të dhënat [4] * 256) + (të dhënat [5] & 0xF0)) / 16;

lartësia e notit = tHeight / 16.0;

noton cTemp = (temp / 16.0);

noton fTemp = cTemp * 1.8 + 32;

// Filloni transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidhni regjistrin e kontrollit

Wire.write (0x26);

// Mënyra aktive, OSR = 128, mënyra e barometrit

Wire.write (0x39);

// Ndaloni transmetimin I2C

Wire.endTransmission ();

vonesa (1000);

// Filloni transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidh regjistrin e të dhënave

Wire.write (0x00);

// Ndaloni transmetimin I2C

Wire.endTransmission ();

// Kërkoni 4 bajt të dhëna

Tela. Kërkohet Nga (Addr, 4);

// Lexoni 4 bajt të dhëna

// statusi, pres msb1, pres msb, pres lsb

nëse (Wire. në dispozicion () == 4)

{

të dhëna [0] = Wire.read ();

të dhëna [1] = Wire.read ();

të dhëna [2] = Wire.read ();

të dhëna [3] = Wire.read ();

}

// Shndërroni të dhënat në 20-bit

pres i gjatë = (((i gjatë) të dhëna [1] * (i gjatë) 65536) + (të dhëna [2] * 256) + (të dhëna [3] & 0xF0)) / 16;

presioni notues = (pres / 4.0) / 1000.0;

// Dalja e të dhënave në monitorin serik

Serial.print ("Lartësia mbidetare:");

Serial.print (lartësia);

Serial.println ("m");

Serial.print ("Presioni:");

Serial.print (presion);

Serial.println ("kPa");

Serial.print ("Temperatura në Celsius:");

Serial.print (cTemp);

Serial.println ("C");

Serial.print ("Temperatura në Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

vonesë (500);

}

Hapi 4: Aplikimet:

Aplikime të ndryshme të MPL3115A2 përfshijnë Altimetri të Saktësisë së Lartë, Smartphone/Tableta, Elektronikë Personale Altimetri etj. Gjithashtu mund të inkorporohet në llogaritjen e vdekur të GPS, Përmirësimi i GPS për Shërbimet e Emergjencave, Ndihma në Hartë, Lundrimi si dhe Pajisjet e Stacionit Moti.

Recommended: