Cuprins:

Photon de particule - MPL3115A2 Tutorial senzor de altimetru de precizie: 4 pași
Photon de particule - MPL3115A2 Tutorial senzor de altimetru de precizie: 4 pași

Video: Photon de particule - MPL3115A2 Tutorial senzor de altimetru de precizie: 4 pași

Video: Photon de particule - MPL3115A2 Tutorial senzor de altimetru de precizie: 4 pași
Video: Particle Photon - MPL3115A2 Precision Altimeter Sensor Tutorial 2024, Noiembrie
Anonim
Image
Image

MPL3115A2 folosește un senzor de presiune MEMS cu o interfață I2C pentru a furniza date precise de presiune / altitudine și temperatură. Ieșirile senzorului sunt digitalizate printr-un ADC de 24 biți de înaltă rezoluție. Procesarea internă elimină sarcinile de compensare din sistemul MCU gazdă. Este capabil să detecteze o schimbare de numai 0,05 kPa care echivalează cu o schimbare de altitudine de 0,3 m. Iată demonstrația sa cu fotonul de particule.

Pasul 1: De ce ai nevoie..

De ce ai nevoie..!!
De ce ai nevoie..!!

1. Fotonul particulelor

2. MPL3115A2

3. Cablu I²C

4. Scutul I²C pentru fotonul de particule

Pasul 2: Conexiuni:

Conexiuni
Conexiuni
Conexiuni
Conexiuni
Conexiuni
Conexiuni
Conexiuni
Conexiuni

Luați un scut I2C pentru fotonul particulelor și împingeți-l ușor peste pinii fotonului particulei.

Apoi conectați capătul cablului I2C la senzorul MPL3115A2 și celălalt capăt la ecranul I2C.

Conexiunile sunt afișate în imaginea de mai sus.

Pasul 3: Cod:

Cod
Cod

Codul de particule pentru MPL3115A2 poate fi descărcat din depozitul nostru Github-Magazin DCUBE.

Iată linkul.

Am folosit două biblioteci pentru codul de particule, care sunt application.h și spark_wiring_i2c.h. Biblioteca Spark_wiring_i2c este necesară pentru a facilita comunicarea I2C cu senzorul.

De asemenea, puteți copia codul de aici, acesta este dat după cum urmează:

// Distribuit cu o licență de liberă voință.

// Folosiți-l în orice mod doriți, profit sau gratuit, cu condiția să se încadreze în licențele lucrărilor sale asociate.

// MPL3115A2

// Acest cod este conceput pentru a funcționa cu Mini-modulul MPL3115A2_I2CS I2C

#include

#include

// Adresa I2C MPL3115A2 este 0x60 (96)

#define Addr 0x60

plutitor cTemp = 0,0, fTemp = 0,0, presiune = 0,0, altitudine = 0,0;

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

configurare nulă ()

{

// Setați variabila

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

Particle.variable ("cTemp", cTemp);

Particle.variable ("presiune", presiune);

Particle.variable ("altitudine", altitudine);

// Inițializați comunicarea I2C

Wire.begin ();

// Inițializați comunicarea în serie, setați baud rate = 9600

Serial.begin (9600);

// Porniți transmisia I2C

Wire.beginTransmission (Addr);

// Selectați registrul de control

Wire.write (0x26);

// Mod activ, OSR = 128, modul altimetru

Wire.write (0xB9);

// Opriți transmisia I2C

Wire.endTransmission ();

// Porniți transmisia I2C

Wire.beginTransmission (Addr);

// Selectați registrul de configurare a datelor

Wire.write (0x13);

// Eveniment pregătit pentru date activat pentru altitudine, presiune, temperatură

Wire.write (0x07);

// Opriți transmisia I2C

Wire.endTransmission ();

întârziere (300);

}

bucla nulă ()

{

date int nesemnate [6];

// Porniți transmisia I2C

Wire.beginTransmission (Addr);

// Selectați registrul de control

Wire.write (0x26);

// Mod activ, OSR = 128, modul altimetru

Wire.write (0xB9);

// Opriți transmisia I2C

Wire.endTransmission ();

întârziere (1000);

// Porniți transmisia I2C

Wire.beginTransmission (Addr);

// Selectați registrul de date

Wire.write (0x00);

// Opriți transmisia I2C

Wire.endTransmission ();

// Solicitați 6 octeți de date

Wire.requestFrom (Addr, 6);

// Citiți 6 octeți de date de la adresa 0x00 (00)

// stare, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

if (Wire.available () == 6)

{

date [0] = Wire.read ();

date [1] = Wire.read ();

date [2] = Wire.read ();

date [3] = Wire.read ();

date [4] = Wire.read ();

date [5] = Wire.read ();

}

// Convertiți datele în 20 de biți

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

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

altitudine = tAltime / 16,0;

cTemp = (temp / 16.0);

fTemp = cTemp * 1,8 + 32;

// Porniți transmisia I2C

Wire.beginTransmission (Addr);

// Selectați registrul de control

Wire.write (0x26);

// Mod activ, OSR = 128, mod barometru

Wire.write (0x39);

// Opriți transmisia I2C

Wire.endTransmission ();

// Porniți transmisia I2C

Wire.beginTransmission (Addr);

// Selectați registrul de date

Wire.write (0x00);

// Opriți transmisia I2C

Wire.endTransmission ();

întârziere (1000);

// Solicitați 4 octeți de date

Wire.requestFrom (Addr, 4);

// Citiți 4 octeți de date

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

if (Wire.available () == 4)

{

date [0] = Wire.read ();

date [1] = Wire.read ();

date [2] = Wire.read ();

date [3] = Wire.read ();

}

// Convertiți datele în 20 de biți

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

presiune = (pres / 4.0) / 1000.0;

// Ieșire date în tabloul de bord

Particle.publish ("Altitudine:", Șir (altitudine));

Particle.publish ("Presiune:", Șir (presiune));

Particle.publish ("Temperatura în grade Celsius:", Șir (cTemp));

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

întârziere (1000);

}

Pasul 4: Aplicații:

Diverse aplicații ale MPL3115A2 includ altimetrie de înaltă precizie, telefoane inteligente / tablete, altimetrie electronică personală etc. Poate fi, de asemenea, încorporată în GPS Dead Reckoning, GPS Enhancement for Emergency Services, Map Assist, Navigation, precum și echipamente pentru stațiile meteorologice.

Recomandat: