Obsah:

Částicový foton - Výukový senzor přesného výškoměru MPL3115A2: 4 kroky
Částicový foton - Výukový senzor přesného výškoměru MPL3115A2: 4 kroky

Video: Částicový foton - Výukový senzor přesného výškoměru MPL3115A2: 4 kroky

Video: Částicový foton - Výukový senzor přesného výškoměru MPL3115A2: 4 kroky
Video: FS-6.2. Vlnové vlastnosti částic | Fyzika SŠ 2024, Červen
Anonim
Image
Image

MPL3115A2 využívá tlakový senzor MEMS s rozhraním I2C, který poskytuje přesné údaje o tlaku/nadmořské výšce a teplotě. Výstupy senzorů jsou digitalizovány 24bitovým ADC s vysokým rozlišením. Interní zpracování odstraní úlohy kompenzace z hostitelského systému MCU. Je schopen detekovat změnu pouze o 0,05 kPa, což odpovídá změně výšky o 0,3 m. Zde je jeho ukázka s fotonem částic.

Krok 1: Co potřebujete..

Co potřebuješ..!!
Co potřebuješ..!!

1. Foton částic

2. MPL3115A2

3. I²C kabel

4. I²C štít pro částicový foton

Krok 2: Připojení:

Připojení
Připojení
Připojení
Připojení
Připojení
Připojení
Připojení
Připojení

Vezměte I2C štít pro částicový foton a jemně jej zatlačte přes kolíky fotonu částic.

Poté připojte jeden konec kabelu I2C k senzoru MPL3115A2 a druhý konec ke stínění I2C.

Připojení jsou znázorněna na obrázku výše.

Krok 3: Kód:

Kód
Kód

Částicový kód pro MPL3115A2 lze stáhnout z našeho úložiště Github-DCUBE Store.

Tady je odkaz.

Pro částicový kód jsme použili dvě knihovny, kterými jsou application.h a spark_wiring_i2c.h. Pro usnadnění komunikace I2C se senzorem je nutná knihovna Spark_wiring_i2c.

Odtud můžete také zkopírovat kód, který je uveden následovně:

// Distribuováno s licencí svobodné vůle.

// Používejte jej jakýmkoli způsobem, ať už ziskem nebo zdarma, za předpokladu, že se vejde do licencí souvisejících děl.

// MPL3115A2

// Tento kód je navržen tak, aby fungoval s mini modulem MPL3115A2_I2CS I2C

#zahrnout

#zahrnout

// Adresa MPL3115A2 I2C je 0x60 (96)

#define Addr 0x60

float cTemp = 0,0, fTemp = 0,0, tlak = 0,0, nadmořská výška = 0,0;

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

neplatné nastavení ()

{

// Nastavit proměnnou

Proměnná částice ("i2cdevice", "MPL3115A2");

Particle.variable ("cTemp", cTemp);

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

Částice.proměnná ("nadmořská výška", nadmořská výška);

// Inicializace komunikace I2C

Wire.begin ();

// Inicializace sériové komunikace, nastavení přenosové rychlosti = 9600

Serial.begin (9600);

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte řídicí registr

Wire.write (0x26);

// Aktivní režim, OSR = 128, režim výškoměru

Wire.write (0xB9);

// Zastavte přenos I2C

Wire.endTransmission ();

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte registr konfigurace dat

Wire.write (0x13);

// Událost připravenosti dat povolena pro nadmořskou výšku, tlak, teplotu

Wire.write (0x07);

// Zastavte přenos I2C

Wire.endTransmission ();

zpoždění (300);

}

prázdná smyčka ()

{

nepodepsaná int data [6];

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte řídicí registr

Wire.write (0x26);

// Aktivní režim, OSR = 128, režim výškoměru

Wire.write (0xB9);

// Zastavte přenos I2C

Wire.endTransmission ();

zpoždění (1000);

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte datový registr

Wire.write (0x00);

// Zastavte přenos I2C

Wire.endTransmission ();

// Vyžádejte si 6 bajtů dat

Wire.requestFrom (Addr, 6);

// Přečíst 6 bajtů dat z adresy 0x00 (00)

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

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

}

// Převod dat na 20 bitů

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

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

nadmořská výška = tVýška / 16,0;

cTemp = (teplota / 16,0);

fTemp = cTemp * 1,8 + 32;

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte řídicí registr

Wire.write (0x26);

// Aktivní režim, OSR = 128, režim barometru

Wire.write (0x39);

// Zastavte přenos I2C

Wire.endTransmission ();

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte datový registr

Wire.write (0x00);

// Zastavte přenos I2C

Wire.endTransmission ();

zpoždění (1000);

// Vyžádejte si 4 bajty dat

Wire.requestFrom (Addr, 4);

// Přečíst 4 bajty dat

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

pokud (Wire.available () == 4)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

}

// Převod dat na 20 bitů

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

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

// Výstup dat na řídicí panel

Particle.publish ("Nadmořská výška:", Řetězec (nadmořská výška));

Particle.publish ("Tlak:", řetězec (tlak));

Particle.publish ("Teplota ve stupních Celsia:", řetězec (cTemp));

Particle.publish („Teplota ve stupních Fahrenheita:“, řetězec (fTemp));

zpoždění (1000);

}

Krok 4: Aplikace:

Různé aplikace MPL3115A2 zahrnují vysoce přesnou výškoměr, smartphony/tablety, osobní elektronickou výškoměr atd. Lze jej také začlenit do systému GPS Dead Reckoning, GPS Enhancement pro záchranné služby, Map Assist, Navigation a vybavení meteorologické stanice.

Doporučuje: