Innehållsförteckning:
Video: Particle Photon - MPL3115A2 Precision Altimeter Sensor Handledning: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
MPL3115A2 använder en MEMS -trycksensor med ett I2C -gränssnitt för att ge exakta tryck/höjd- och temperaturdata. Sensorutgångarna digitaliseras med en högupplöst 24-bitars ADC. Intern behandling tar bort kompensationsuppgifter från värd -MCU -systemet. Den kan upptäcka en förändring på endast 0,05 kPa vilket motsvarar en höjdförändring på 0,3 m. Här är dess demonstration med partikelfoton.
Steg 1: Vad du behöver.. !
1. Partikelfoton
2. MPL3115A2
3. I²C -kabel
4. I²C -skärm för partikelfoton
Steg 2: Anslutningar:
Ta en I2C -skärm för partikelfoton och tryck försiktigt över stiften på partikelfoton.
Anslut sedan den ena änden av I2C -kabeln till MPL3115A2 -sensorn och den andra änden till I2C -skärmen.
Anslutningar visas på bilden ovan.
Steg 3: Kod:
Partikelkoden för MPL3115A2 kan laddas ner från vårt Github-arkiv-DCUBE Store.
Här är länken.
Vi har använt två bibliotek för partikelkod, som är application.h och spark_wiring_i2c.h. Spark_wiring_i2c -biblioteket krävs för att underlätta I2C -kommunikationen med sensorn.
Du kan också kopiera koden härifrån, den ges enligt följande:
// Distribueras med en fri vilja licens.
// Använd den hur du vill, vinst eller gratis, förutsatt att den passar i licensen för dess associerade verk.
// MPL3115A2
// Denna kod är utformad för att fungera med MPL3115A2_I2CS I2C Mini Module
#omfatta
#omfatta
// MPL3115A2 I2C -adressen är 0x60 (96)
#define Addr 0x60
float cTemp = 0,0, fTemp = 0,0, tryck = 0,0, höjd = 0,0;
int temp = 0, tHeight = 0; long pres = 0;
void setup ()
{
// Ange variabel
Partikelvariabel ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Partikel. Variabel ("tryck", tryck);
Partikel.variabel ("höjd", höjd);
// Initiera I2C -kommunikation
Wire.begin ();
// Initiera seriell kommunikation, ange överföringshastighet = 9600
Serial.begin (9600);
// Starta I2C -överföring
Wire.beginTransmission (Addr);
// Välj kontrollregister
Wire.write (0x26);
// Aktivt läge, OSR = 128, höjdmätarläge
Wire.write (0xB9);
// Stoppa I2C -överföring
Wire.endTransmission ();
// Starta I2C -överföring
Wire.beginTransmission (Addr);
// Välj datakonfigurationsregister
Wire.write (0x13);
// Dataklar händelse aktiverad för höjd, tryck, temperatur
Wire.write (0x07);
// Stoppa I2C -överföring
Wire.endTransmission ();
fördröjning (300);
}
void loop ()
{
osignerade int -data [6];
// Starta I2C -överföring
Wire.beginTransmission (Addr);
// Välj kontrollregister
Wire.write (0x26);
// Aktivt läge, OSR = 128, höjdmätarläge
Wire.write (0xB9);
// Stoppa I2C -överföring
Wire.endTransmission ();
fördröjning (1000);
// Starta I2C -överföring
Wire.beginTransmission (Addr);
// Välj dataregister
Wire.write (0x00);
// Stoppa I2C -överföring
Wire.endTransmission ();
// Begär 6 byte med data
Wire.requestFrom (Addr, 6);
// Läs 6 byte med data från adressen 0x00 (00)
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
om (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 ();
}
// Konvertera data till 20-bitar
tHöjd = ((((lång) data [1] * (lång) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);
temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;
höjd = tHöjd / 16,0;
cTemp = (temp / 16,0);
fTemp = cTemp * 1,8 + 32;
// Starta I2C -överföring
Wire.beginTransmission (Addr);
// Välj kontrollregister
Wire.write (0x26);
// Aktivt läge, OSR = 128, barometerläge
Wire.write (0x39);
// Stoppa I2C -överföring
Wire.endTransmission ();
// Starta I2C -överföring
Wire.beginTransmission (Addr);
// Välj dataregister
Wire.write (0x00);
// Stoppa I2C -överföring
Wire.endTransmission ();
fördröjning (1000);
// Begär 4 byte med data
Wire.requestFrom (Addr, 4);
// Läs 4 byte med data
// status, pres msb1, pres msb, pres lsb
om (Wire.available () == 4)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
}
// Konvertera data till 20-bitar
pres = (((lång) data [1] * (lång) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;
tryck = (pres / 4,0) / 1000,0;
// Utdata till instrumentpanelen
Particle.publish ("Altitude:", String (altitude));
Particle.publish ("Pressure:", String (pressure));
Particle.publish ("Temperatur i Celsius:", String (cTemp));
Particle.publish ("Temperatur i Fahrenheit:", String (fTemp));
fördröjning (1000);
}
Steg 4: Ansökningar:
Olika tillämpningar av MPL3115A2 inkluderar hög noggrannhetsmätning, smartphones/surfplattor, personlig elektronisk höjdmätning etc. Det kan också införlivas med GPS Dead Reckoning, GPS -förbättring för räddningstjänster, kartassistans, navigering samt väderstationsutrustning.
Rekommenderad:
Particle Photon - TCN75A Temperatursensor Handledning: 4 steg
Particle Photon-TCN75A Temperatursensor Handledning: TCN75A är en tvåtrådig seriell temperatursensor med temperatur-till-digital-omvandlare. Det är integrerat med användarprogrammerbara register som ger flexibilitet för temperaturavkännande applikationer. Registerinställningarna tillåter användare
Particle Photon - ADT75 Temperatursensor Handledning: 4 steg
Particle Photon - ADT75 Temperatursensor Handledning: ADT75 är en mycket exakt, digital temperatursensor. Den består av en temperaturgivare för bandgap och en 12-bitars analog till digital omvandlare för övervakning och digitalisering av temperaturen. Dess mycket känsliga sensor gör den tillräckligt kompetent för mig
Particle Photon - HDC1000 Temperatursensor Handledning: 4 steg
Particle Photon - HDC1000 Temperatursensor Handledning: HDC1000 är en digital fuktighetssensor med integrerad temperatursensor som ger utmärkt mätnoggrannhet vid mycket låg effekt. Enheten mäter luftfuktighet baserat på en ny kapacitiv sensor. Luft- och temperatursensorerna är
Particle Photon - BH1715 Digital Ambient Light Sensor Sensor Handledning: 4 steg
Particle Photon - BH1715 Digital Ambient Light Sensor Sensor Handledning: BH1715 är en digital Ambient Light Sensor med ett I²C -bussgränssnitt. BH1715 används vanligtvis för att erhålla data från omgivande ljus för justering av LCD- och knappsatsens bakgrundsbelysning för mobila enheter. Den här enheten har en 16-bitars upplösning och en justering
Particle Photon - TMP100 Temperatursensor Handledning: 4 steg
Particle Photon-TMP100 Temperatursensor Handledning: TMP100 High-Precision, Low-Power, Digital Temperature Sensor I2C MINI module. TMP100 är idealisk för utökad temperaturmätning. Denna enhet erbjuder en noggrannhet på ± 1 ° C utan att kräva kalibrering eller extern komponentsignalkonditionering. Han