Përmbajtje:

Pjesë Photon - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 hapa
Pjesë Photon - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 hapa

Video: Pjesë Photon - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 hapa

Video: Pjesë Photon - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 hapa
Video: BeagleBone Black HP203B Precision Barometer & Altimeter Sensor 'C' Code Tutorial 2024, Nëntor
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 fotonin e grimcave.

Hapi 1: Ajo që ju nevojitet.. !

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

1. Fotoni i grimcave

2. MPL3115A2

3. Kabllo I²C

4. Mburoja I²C për fotonin e grimcave

Hapi 2: Lidhjet:

Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet

Merrni një mburojë I2C për fotonin e grimcave dhe butësisht shtyjeni atë mbi kunjat e fotonit të grimcave.

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 i grimcave për MPL3115A2 mund të shkarkohet nga depoja jonë Github-Dyqani DCUBE.

Këtu është lidhja.

Ne kemi përdorur dy biblioteka për kodin e grimcave, të cilat janë application.h dhe spark_wiring_i2c.h. Biblioteka Spark_wiring_i2c kërkohet për të lehtësuar komunikimin I2C me sensorin.

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

#përfshi

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

#përcaktoni Addr 0x60

noton cTemp = 0.0, fTemp = 0.0, presion = 0.0, lartësi = 0.0;

int temp = 0, tHeight = 0; pres i gjatë = 0;

void setup ()

{

// Vendos ndryshoren

Particle.variable ("i2cdevice", "MPL3115A2");

Particle.variable ("cTemp", cTemp);

Grimca. E ndryshueshme ("presion", presion);

Grimca. E ndryshueshme ("lartësi", lartësi);

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

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

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

lartësi = tHeight / 16.0;

cTemp = (temp / 16.0);

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 ();

// Filloni transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidh regjistrin e të dhënave

Wire.write (0x00);

// Ndaloni transmetimin I2C

Wire.endTransmission ();

vonesa (1000);

// 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 = (((e gjatë) të dhëna [1] * (e gjatë) 65536) + (të dhëna [2] * 256) + (të dhëna [3] & 0xF0)) / 16;

presion = (pres / 4.0) / 1000.0;

// Dalja e të dhënave në pult

Particle.publish ("Lartësia mbidetare:", Vargu (lartësia));

Particle.publish ("Presioni:", String (presion));

Particle.publish ("Temperatura në Celsius:", String (cTemp));

Particle.publish ("Temperatura në Fahrenheit:", String (fTemp));

vonesa (1000);

}

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: