Obsah:

Fotón častíc - Návod na snímač presného výškomera MPL3115A2: 4 kroky
Fotón častíc - Návod na snímač presného výškomera MPL3115A2: 4 kroky

Video: Fotón častíc - Návod na snímač presného výškomera MPL3115A2: 4 kroky

Video: Fotón častíc - Návod na snímač presného výškomera MPL3115A2: 4 kroky
Video: Jak nepostupovat při problémech s filtrem částic 2024, November
Anonim
Image
Image

MPL3115A2 využíva snímač tlaku MEMS s rozhraním I2C, ktorý poskytuje presné údaje o tlaku/nadmorskej výške a teplote. Výstupy senzorov sú digitalizované 24-bitovým ADC s vysokým rozlíšením. Interné spracovanie odstráni úlohy kompenzácie z hostiteľského systému MCU. Je schopný detekovať zmenu iba o 0,05 kPa, čo sa rovná zmene výšky 0,3 m. Tu je jeho ukážka s fotónom častíc.

Krok 1: Čo potrebujete.. !

Čo potrebuješ..!!
Čo potrebuješ..!!

1. Fotón častíc

2. MPL3115A2

3. Kábel I²C

4. I²C štít pre časticový fotón

Krok 2: Pripojenia:

Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia

Vezmite I2C štít pre časticový fotón a jemne ho zatlačte cez kolíky časticového fotónu.

Potom pripojte jeden koniec kábla I2C k senzoru MPL3115A2 a druhý koniec k štítu I2C.

Pripojenia sú znázornené na obrázku vyššie.

Krok 3: Kód:

Kód
Kód

Časticový kód pre MPL3115A2 je možné stiahnuť z nášho úložiska Github-DCUBE Store.

Tu je odkaz.

Na časticový kód sme použili dve knižnice, ktorými sú application.h a spark_wiring_i2c.h. Na uľahčenie komunikácie I2C so senzorom je potrebná knižnica Spark_wiring_i2c.

Odtiaľto môžete tiež skopírovať kód, ktorý je nasledujúci:

// Distribuované s licenciou slobodnej vôle.

// Používajte ho akýmkoľvek spôsobom chcete, so ziskom alebo zadarmo, za predpokladu, že sa zmestí do licencií k ním pridruženým dielam.

// MPL3115A2

// Tento kód je navrhnutý tak, aby pracoval s mini modulom MPL3115A2_I2CS I2C

#zahrnúť

#zahrnúť

// Adresa MPL3115A2 I2C je 0x60 (96)

#define Addr 0x60

plavák cTemp = 0,0, fTemp = 0,0, tlak = 0,0, nadmorská výška = 0,0;

int temp = 0, tHeight = 0; long pres = 0;

neplatné nastavenie ()

{

// Nastavenie premennej

Premenná častica ("i2cdevice", "MPL3115A2");

Particle.variable ("cTemp", cTemp);

Častica.proměnná ("tlak", tlak);

Častica.proměnná ("nadmorská výška", nadmorská výška);

// Inicializácia komunikácie I2C

Wire.begin ();

// Inicializujte sériovú komunikáciu, nastavte prenosovú rýchlosť = 9600

Serial.begin (9600);

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte riadiaci register

Wire.write (0x26);

// Aktívny režim, OSR = 128, režim výškomeru

Wire.write (0xB9);

// Zastavte prenos I2C

Wire.endTransmission ();

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte register konfigurácie údajov

Wire.write (0x13);

// Udalosť pripravená na údaje je povolená pre nadmorskú výšku, tlak, teplotu

Wire.write (0x07);

// Zastavte prenos I2C

Wire.endTransmission ();

oneskorenie (300);

}

prázdna slučka ()

{

nepodpísané int údaje [6];

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte riadiaci register

Wire.write (0x26);

// Aktívny režim, OSR = 128, režim výškomeru

Wire.write (0xB9);

// Zastavte prenos I2C

Wire.endTransmission ();

oneskorenie (1000);

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte dátový register

Wire.write (0x00);

// Zastavte prenos I2C

Wire.endTransmission ();

// Požiadajte o 6 bajtov údajov

Wire.requestFrom (Addr, 6);

// Prečítajte 6 bajtov údajov z adresy 0x00 (00)

// stav, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

ak (Wire.available () == 6)

{

data [0] = Wire.read ();

údaje [1] = Wire.read ();

údaje [2] = Wire.read ();

údaje [3] = Wire.read ();

údaje [4] = Wire.read ();

údaje [5] = Wire.read ();

}

// Previesť údaje na 20-bitové

tHeight = (((((dlhé) údaje [1] * (dlhé) 65536) + (údaje [2] * 256) + (údaje [3] & 0xF0)) / 16);

teplota = ((údaje [4] * 256) + (údaje [5] & 0xF0)) / 16;

nadmorská výška = tVýška / 16,0;

cTemp = (teplota / 16,0);

fTemp = cTemp * 1,8 + 32;

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte riadiaci register

Wire.write (0x26);

// Aktívny režim, OSR = 128, režim barometra

Wire.write (0x39);

// Zastavte prenos I2C

Wire.endTransmission ();

// Spustite prenos I2C

Wire.beginTransmission (Addr);

// Vyberte dátový register

Wire.write (0x00);

// Zastavte prenos I2C

Wire.endTransmission ();

oneskorenie (1000);

// Požiadajte o 4 bajty údajov

Wire.requestFrom (Addr, 4);

// Prečítajte 4 bajty údajov

// stav, pres msb1, pres msb, pres lsb

ak (Wire.available () == 4)

{

data [0] = Wire.read ();

údaje [1] = Wire.read ();

údaje [2] = Wire.read ();

údaje [3] = Wire.read ();

}

// Previesť údaje na 20-bitové

pres = (((dlhé) údaje [1] * (dlhé) 65536) + (údaje [2] * 256) + (údaje [3] & 0xF0)) / 16;

tlak = (prez / 4,0) / 1000,0;

// Výstup údajov na informačný panel

Particle.publish ("Nadmorská výška:", Reťazec (nadmorská výška));

Particle.publish ("Tlak:", Reťazec (tlak));

Particle.publish („Teplota v stupňoch Celzia:“, reťazec (cTemp));

Particle.publish („Teplota vo Fahrenheite:“, reťazec (fTemp));

oneskorenie (1000);

}

Krok 4: Aplikácie:

Rôzne aplikácie MPL3115A2 zahŕňajú vysoko presnú výškomer, smartphony/tablety, osobnú elektronickú výškomer atď. Môže byť tiež začlenený do systému GPS Dead Reckoning, GPS Enhancement for Emergency Services, Map Assist, Navigation, rovnako ako vybavenie meteorologickej stanice.

Odporúča: