Cuprins:
Video: Photon de particule - MPL3115A2 Tutorial senzor de altimetru de precizie: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
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..
1. Fotonul particulelor
2. MPL3115A2
3. Cablu I²C
4. Scutul I²C pentru fotonul de particule
Pasul 2: 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:
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:
Photon de particule - Tutorial senzor de temperatură TCN75A: 4 pași
Particle Photon - Tutorial senzor de temperatură TCN75A: TCN75A este un senzor de temperatură serial cu două fire încorporat cu convertor de temperatură la digital. Este încorporat cu registre programabile de utilizator care oferă flexibilitate pentru aplicațiile de detectare a temperaturii. Setările de înregistrare permit utilizatorilor
Photon de particule - Tutorial senzor de temperatură ADT75: 4 pași
Particle Photon - Tutorial senzor de temperatură ADT75: ADT75 este un senzor digital de temperatură extrem de precis. Acesta cuprinde un senzor de temperatură de bandă și un convertor analogic digital pe 12 biți pentru monitorizarea și digitalizarea temperaturii. Senzorul său extrem de sensibil îl face suficient de competent pentru mine
Photon de particule - Tutorial senzor de temperatură STS21: 4 pași
Particle Photon - Tutorial senzor de temperatură STS21: senzorul digital de temperatură STS21 oferă performanțe superioare și o amprentă de economisire a spațiului. Oferă semnale calibrate, liniarizate în format digital, I2C. Fabricarea acestui senzor se bazează pe tehnologia CMOSens, care se atribuie superiorului
Photon de particule - Tutorial senzor de temperatură HDC1000: 4 pași
Particle Photon - Tutorial senzor de temperatură HDC1000: HDC1000 este un senzor digital de umiditate cu senzor de temperatură integrat care oferă o precizie excelentă de măsurare la o putere foarte mică. Dispozitivul măsoară umiditatea pe baza unui nou senzor capacitiv. Senzorii de umiditate și temperatură sunt fac
Photon de particule - Tutorial senzor digital de lumină ambientală BH1715: 4 pași
Photon de particule - BH1715 Tutorial senzor digital de lumină ambientală: BH1715 este un senzor digital de lumină ambientală cu o interfață de magistrală I²C. BH1715 este utilizat în mod obișnuit pentru a obține datele de lumină ambientală pentru reglarea puterii de iluminare a ecranului LCD și a tastaturii pentru dispozitive mobile. Acest dispozitiv oferă o rezoluție de 16 biți și un reglaj