Sadržaj:

Foton čestica - Vodič za senzor preciznog visinomjera MPL3115A2: 4 koraka
Foton čestica - Vodič za senzor preciznog visinomjera MPL3115A2: 4 koraka

Video: Foton čestica - Vodič za senzor preciznog visinomjera MPL3115A2: 4 koraka

Video: Foton čestica - Vodič za senzor preciznog visinomjera MPL3115A2: 4 koraka
Video: Лучшие 3D-принтеры 2024 года: ТОП-5 моделей для ЛЮБОГО бюдж... 2024, Studeni
Anonim
Image
Image

MPL3115A2 koristi MEMS senzor tlaka s I2C sučeljem za pružanje točnih podataka o tlaku/nadmorskoj visini i temperaturi. Izlazi senzora digitalizirani su 24-bitnim ADC-om visoke rezolucije. Interna obrada uklanja zadatke kompenzacije iz host MCU sustava. Sposoban je otkriti promjenu od samo 0,05 kPa, što je jednako promjeni visine 0,3 m. Ovdje je njegova demonstracija s česticama fotona.

Korak 1: Što vam treba..

Što trebaš..!!
Što trebaš..!!

1. Foton čestica

2. MPL3115A2

3. I²C kabel

4. I²C štit za čestice fotona

Korak 2: Veze:

Priključci
Priključci
Priključci
Priključci
Priključci
Priključci
Priključci
Priključci

Uzmite I2C štit za foton čestice i nježno ga gurnite preko igle fotona čestica.

Zatim spojite jedan kraj I2C kabela na senzor MPL3115A2, a drugi kraj na I2C štit.

Priključci su prikazani na gornjoj slici.

Korak 3: Kôd:

Kodirati
Kodirati

Kod čestica za MPL3115A2 može se preuzeti s našeg Github spremišta-DCUBE Store.

Evo linka.

Za kod čestica koristili smo dvije knjižnice, a to su application.h i spark_wiring_i2c.h. Za olakšavanje I2C komunikacije sa senzorom potrebna je knjižnica Spark_wiring_i2c.

Ovdje možete i kopirati kôd, dat je na sljedeći način:

// Distribuirano s licencom slobodne volje.

// Koristite ga kako god želite, profitno ili besplatno, pod uvjetom da se uklapa u licence povezanih djela.

// MPL3115A2

// Ovaj kôd je dizajniran za rad s MPL3115A2_I2CS I2C mini modulom

#uključi

#uključi

// MPL3115A2 I2C adresa je 0x60 (96)

#define Addr 0x60

plovak cTemp = 0,0, fTemp = 0,0, tlak = 0,0, nadmorska visina = 0,0;

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

void setup ()

{

// Postavi varijablu

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

Čestica.varijabilna ("cTemp", cTemp);

Čestica.varijabilna ("tlak", tlak);

Particle.variable ("visina", nadmorska visina);

// Inicializirajte I2C komunikaciju

Wire.begin ();

// Pokretanje serijske komunikacije, postavljena brzina prijenosa = 9600

Serial.begin (9600);

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr);

// Odaberite kontrolni registar

Wire.write (0x26);

// Aktivni način rada, OSR = 128, način rada visinomjera

Wire.write (0xB9);

// Zaustavljanje I2C prijenosa

Wire.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr);

// Odabir registra konfiguracije podataka

Wire.write (0x13);

// Omogućen događaj spremnosti podataka za nadmorsku visinu, tlak, temperaturu

Wire.write (0x07);

// Zaustavljanje I2C prijenosa

Wire.endTransmission ();

kašnjenje (300);

}

void loop ()

{

nepotpisani int podaci [6];

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr);

// Odaberite kontrolni registar

Wire.write (0x26);

// Aktivni način rada, OSR = 128, način rada visinomjera

Wire.write (0xB9);

// Zaustavljanje I2C prijenosa

Wire.endTransmission ();

kašnjenje (1000);

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr);

// Odabir registra podataka

Wire.write (0x00);

// Zaustavljanje I2C prijenosa

Wire.endTransmission ();

// Zatražite 6 bajta podataka

Wire.requestFrom (Addr, 6);

// Očitavanje 6 bajtova podataka s adrese 0x00 (00)

// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

if (Wire.available () == 6)

{

podaci [0] = Wire.read ();

podaci [1] = Wire.read ();

podaci [2] = Wire.read ();

podaci [3] = Wire.read ();

podaci [4] = Wire.read ();

podaci [5] = Wire.read ();

}

// Pretvorimo podatke u 20-bitne

tHeight = ((((dugi) podaci [1] * (dugi) 65536) + (podaci [2] * 256) + (podaci [3] & 0xF0)) / 16);

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

nadmorska visina = tHeight / 16,0;

cTemp = (temp / 16,0);

fTemp = cTemp * 1,8 + 32;

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr);

// Odaberite kontrolni registar

Wire.write (0x26);

// Aktivni način rada, OSR = 128, način rada barometra

Wire.write (0x39);

// Zaustavljanje I2C prijenosa

Wire.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr);

// Odabir registra podataka

Wire.write (0x00);

// Zaustavljanje I2C prijenosa

Wire.endTransmission ();

kašnjenje (1000);

// Zatražite 4 bajta podataka

Wire.requestFrom (Addr, 4);

// Očitavanje 4 bajta podataka

// status, pres msb1, pres msb, pres lsb

if (Wire.available () == 4)

{

podaci [0] = Wire.read ();

podaci [1] = Wire.read ();

podaci [2] = Wire.read ();

podaci [3] = Wire.read ();

}

// Pretvorimo podatke u 20-bitne

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

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

// Izlaženje podataka na nadzornu ploču

Particle.publish ("Visina:", String (nadmorska visina));

Particle.publish ("Tlak:", niz (pritisak));

Particle.publish ("Temperatura u Celzijusima:", String (cTemp));

Particle.publish ("Temperatura u Fahrenheitu:", String (fTemp));

kašnjenje (1000);

}

Korak 4: Aplikacije:

Različite primjene MPL3115A2 uključuju altimetriju visoke točnosti, pametne telefone/tablete, altimetriju osobne elektronike itd. Također se može uključiti u GPS mrtvo računanje, GPS poboljšanje za hitne službe, pomoć pri zemljovidu, navigaciju kao i opremu meteorološke postaje.

Preporučeni: