Orodha ya maudhui:

Chembe Photon - MPL3115A2 Mafunzo ya sensa ya usahihi wa Altimeter: Hatua 4
Chembe Photon - MPL3115A2 Mafunzo ya sensa ya usahihi wa Altimeter: Hatua 4

Video: Chembe Photon - MPL3115A2 Mafunzo ya sensa ya usahihi wa Altimeter: Hatua 4

Video: Chembe Photon - MPL3115A2 Mafunzo ya sensa ya usahihi wa Altimeter: Hatua 4
Video: Профилактика деменции: советы экспертов от врача! 2024, Juni
Anonim
Image
Image

MPL3115A2 inaajiri sensa ya shinikizo la MEMS na kiolesura cha I2C ili kutoa data sahihi ya Shinikizo / Urefu na Joto. Matokeo ya sensa ni digitized na azimio kubwa 24-bit ADC. Usindikaji wa ndani huondoa kazi za fidia kutoka kwa mfumo wa mwenyeji wa MCU. Inauwezo wa kugundua mabadiliko katika 0.05 kPa tu ambayo ni sawa na mabadiliko ya 0.3m kwa urefu. Hapa kuna maonyesho yake na Particle photon.

Hatua ya 1: Unachohitaji.. !

Unachohitaji..!!
Unachohitaji..!!

1. Particle Photon

2. MPL3115A2

3. I²C Cable

4. I²C Shield kwa Particle Photon

Hatua ya 2: Miunganisho:

Miunganisho
Miunganisho
Miunganisho
Miunganisho
Miunganisho
Miunganisho
Miunganisho
Miunganisho

Chukua ngao ya I2C kwa chembe chembe na usukume kwa upole juu ya pini za chembe chembe.

Kisha unganisha mwisho mmoja wa kebo ya I2C kwa sensorer ya MPL3115A2 na mwisho mwingine kwenye ngao ya I2C.

Uunganisho umeonyeshwa kwenye picha hapo juu.

Hatua ya 3: Nambari:

Nambari
Nambari

Nambari ya chembe ya MPL3115A2 inaweza kupakuliwa kutoka kwa duka yetu ya Github-Duka la DCUBE.

Hapa kuna kiunga.

Tumetumia maktaba mbili kwa nambari ya chembe, ambazo ni application.h na spark_wiring_i2c.h. Maktaba ya Spark_wiring_i2c inahitajika kuwezesha mawasiliano ya I2C na sensa.

Unaweza pia kunakili nambari kutoka hapa, imepewa kama ifuatavyo:

// Imesambazwa na leseni ya hiari.

// Itumie kwa njia yoyote unayotaka, faida au bure, mradi inafaa katika leseni za kazi zake zinazohusiana.

// MPL3115A2

// Nambari hii imeundwa kufanya kazi na Moduli ya MPL3115A2_I2CS I2C Mini

# pamoja

# pamoja

// Anwani ya MPL3115A2 I2C ni 0x60 (96)

#fafanua Addr 0x60

kuelea cTemp = 0.0, fTemp = 0.0, shinikizo = 0.0, urefu = 0.0;

muda = 0, tUrefu = 0; pres ya muda mrefu = 0;

kuanzisha batili ()

{

// Weka tofauti

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

Chembe. Hubadilika ("cTemp", cTemp);

Chembe inaweza kubadilika ("shinikizo", shinikizo);

Chembe. Hubadilika ("urefu", urefu);

// Anzisha mawasiliano ya I2C

Wire.begin ();

// Awali Mawasiliano ya Siri, weka kiwango cha baud = 9600

Kuanzia Serial (9600);

// Anzisha usambazaji wa I2C

Uwasilishaji wa waya (Addr);

// Chagua rejista ya kudhibiti

Andika waya (0x26);

// Hali inayotumika, OSR = 128, hali ya altimeter

Andika waya (0xB9);

// Acha usambazaji wa I2C

Uwasilishaji wa waya ();

// Anzisha usambazaji wa I2C

Uwasilishaji wa waya (Addr);

// Chagua rejista ya usanidi wa data

Andika waya (0x13);

// Tukio tayari la data limewezeshwa kwa urefu, shinikizo, joto

Andika waya (0x07);

// Acha usambazaji wa I2C

Uwasilishaji wa waya ();

kuchelewesha (300);

}

kitanzi batili ()

{

data isiyoingia [6];

// Anzisha usambazaji wa I2C

Uwasilishaji wa waya (Addr);

// Chagua rejista ya kudhibiti

Andika waya (0x26);

// Hali inayotumika, OSR = 128, hali ya altimeter

Andika waya (0xB9);

// Acha usambazaji wa I2C

Uwasilishaji wa waya ();

kuchelewesha (1000);

// Anzisha usambazaji wa I2C

Uwasilishaji wa waya (Addr);

// Chagua rejista ya data

Andika waya (0x00);

// Acha usambazaji wa I2C

Uwasilishaji wa waya ();

// Omba ka 6 za data

Ombi la Wire. Toka (Addr, 6);

// Soma ka 6 za data kutoka kwa anwani 0x00 (00)

// hadhi, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

ikiwa (Waya haipatikani () == 6)

{

data [0] = Wire.read ();

data [1] = soma kwa waya ();

data [2] = soma kwa waya ();

data [3] = soma kwa waya ();

data [4] = soma kwa waya ();

data [5] = soma kwa waya ();

}

// Badilisha data iwe 20-bits

tHeight = (((((muda mrefu) data [1] * (ndefu) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);

temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;

urefu = tUrefu / 16.0;

cTemp = (temp / 16.0);

fTemp = cTemp * 1.8 + 32;

// Anzisha usambazaji wa I2C

Uwasilishaji wa waya (Addr);

// Chagua rejista ya kudhibiti

Andika waya (0x26);

// Hali inayotumika, OSR = 128, hali ya barometer

Andika waya (0x39);

// Acha usambazaji wa I2C

Uwasilishaji wa waya ();

// Anzisha usambazaji wa I2C

Uwasilishaji wa waya (Addr);

// Chagua rejista ya data

Andika waya (0x00);

// Acha usambazaji wa I2C

Uwasilishaji wa waya ();

kuchelewesha (1000);

// Omba ka 4 za data

Ombi la Wire. Toka (Addr, 4);

// Soma ka 4 za data

// hadhi, pres msb1, pres msb, pres lsb

ikiwa (Waya haipatikani () == 4)

{

data [0] = Wire.read ();

data [1] = soma kwa waya ();

data [2] = soma kwa waya ();

data [3] = soma kwa waya ();

}

// Badilisha data iwe 20-bits

pres = (((ndefu) data [1] * (ndefu) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;

shinikizo = (pres / 4.0) / 1000.0;

// Pato la data kwenye dashibodi

Chembe.chapisha ("Urefu:", Kamba (urefu));

Kuchapisha chembe ("Shinikizo:", Kamba (shinikizo));

Kuchapisha chembe ("Joto katika Celsius:", Kamba (cTemp));

Kuchapisha chembe ("Joto katika Fahrenheit:", Kamba (fTemp));

kuchelewesha (1000);

}

Hatua ya 4: Maombi:

Matumizi anuwai ya MPL3115A2 ni pamoja na Altimetry ya Usahihi wa Juu, Simu za Mkononi / Kompyuta Kibao, Upimaji wa Elektroniki za kibinafsi n.k. Inaweza pia kuingizwa katika Uhesabuji wa Wafu wa GPS, Uboreshaji wa GPS kwa Huduma za Dharura, Msaada wa Ramani, Urambazaji pamoja na Vifaa vya Kituo cha Hali ya Hewa.

Ilipendekeza: