Indholdsfortegnelse:
Video: Particle Photon - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
MPL3115A2 anvender en MEMS -trykføler med en I2C -grænseflade til at levere nøjagtige data om tryk/højde og temperatur. Sensorudgangene digitaliseres med en højopløselig 24-bit ADC. Intern behandling fjerner kompensationsopgaver fra værts -MCU -systemet. Det er i stand til at detektere en ændring på kun 0,05 kPa, hvilket svarer til en højdeændring på 0,3 m. Her er dens demonstration med Particle foton.
Trin 1: Hvad du har brug for..
1. Partikelfoton
2. MPL3115A2
3. I²C -kabel
4. I²C -skærm til partikelfoton
Trin 2: Forbindelser:
Tag et I2C -skjold for partikelfoton og skub det forsigtigt hen over stifterne af partikelfoton.
Tilslut derefter den ene ende af I2C -kablet til MPL3115A2 -sensoren og den anden ende til I2C -skærmen.
Forbindelser er vist på billedet ovenfor.
Trin 3: Kode:
Partikelkoden til MPL3115A2 kan downloades fra vores Github repository-DCUBE Store.
Her er linket.
Vi har brugt to biblioteker til partikelkode, som er application.h og spark_wiring_i2c.h. Spark_wiring_i2c bibliotek er påkrævet for at lette I2C -kommunikationen med sensoren.
Du kan også kopiere koden herfra, den er givet som følger:
// Distribueret med en fri vilje licens.
// Brug den, som du vil, profit eller gratis, forudsat at den passer ind i licenserne til de tilhørende værker.
// MPL3115A2
// Denne kode er designet til at fungere med MPL3115A2_I2CS I2C Mini Module
#omfatte
#omfatte
// MPL3115A2 I2C -adressen er 0x60 (96)
#define Addr 0x60
flyde cTemp = 0,0, fTemp = 0,0, tryk = 0,0, højde = 0,0;
int temp = 0, tHeight = 0; lang pres = 0;
ugyldig opsætning ()
{
// Indstil variabel
Partikel.variabel ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Partikel.variabel ("tryk", tryk);
Particle.variable ("højde", højde);
// Initialiser I2C -kommunikation
Wire.begin ();
// Initialiser seriel kommunikation, indstil baudhastighed = 9600
Serial.begin (9600);
// Start I2C -transmission
Wire.beginTransmission (Addr);
// Vælg kontrolregister
Wire.write (0x26);
// Aktiv tilstand, OSR = 128, højdemåler -tilstand
Wire.write (0xB9);
// Stop I2C -transmission
Wire.endTransmission ();
// Start I2C -transmission
Wire.beginTransmission (Addr);
// Vælg datakonfigurationsregister
Wire.write (0x13);
// Dataklar begivenhed aktiveret for højde, tryk, temperatur
Wire.write (0x07);
// Stop I2C -transmission
Wire.endTransmission ();
forsinkelse (300);
}
hulrum ()
{
usignerede int -data [6];
// Start I2C -transmission
Wire.beginTransmission (Addr);
// Vælg kontrolregister
Wire.write (0x26);
// Aktiv tilstand, OSR = 128, højdemåler -tilstand
Wire.write (0xB9);
// Stop I2C -transmission
Wire.endTransmission ();
forsinkelse (1000);
// Start I2C -transmission
Wire.beginTransmission (Addr);
// Vælg dataregister
Wire.write (0x00);
// Stop I2C -transmission
Wire.endTransmission ();
// Anmod om 6 bytes data
Wire.requestFrom (Addr, 6);
// Læs 6 bytes data fra adresse 0x00 (00)
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
hvis (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 ();
}
// Konverter dataene til 20-bit
tHeight = ((((lange) data [1] * (lang) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16);
temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;
højde = tHøjde / 16,0;
cTemp = (temp / 16,0);
fTemp = cTemp * 1,8 + 32;
// Start I2C -transmission
Wire.beginTransmission (Addr);
// Vælg kontrolregister
Wire.write (0x26);
// Aktiv tilstand, OSR = 128, barometer -tilstand
Wire.write (0x39);
// Stop I2C -transmission
Wire.endTransmission ();
// Start I2C -transmission
Wire.beginTransmission (Addr);
// Vælg dataregister
Wire.write (0x00);
// Stop I2C -transmission
Wire.endTransmission ();
forsinkelse (1000);
// Anmod om 4 bytes data
Wire.requestFrom (Addr, 4);
// Læs 4 bytes data
// status, pres msb1, pres msb, pres lsb
hvis (Wire.available () == 4)
{
data [0] = Wire.read ();
data [1] = Wire.read ();
data [2] = Wire.read ();
data [3] = Wire.read ();
}
// Konverter dataene til 20-bit
pres = (((lange) data [1] * (lang) 65536) + (data [2] * 256) + (data [3] & 0xF0)) / 16;
tryk = (pres / 4,0) / 1000,0;
// Output data til dashboard
Particle.publish ("Altitude:", String (altitude));
Particle.publish ("Pressure:", String (pressure));
Particle.publish ("Temperatur i Celsius:", String (cTemp));
Particle.publish ("Temperatur i Fahrenheit:", String (fTemp));
forsinkelse (1000);
}
Trin 4: Ansøgninger:
Forskellige applikationer af MPL3115A2 inkluderer høj nøjagtigheds -altimetri, smartphones/tablets, personlig elektronik -altimetri osv. Det kan også inkorporeres i GPS Dead Reckoning, GPS -forbedring til nødservice, Map Assist, Navigation samt vejrstationsudstyr.
Anbefalede:
Particle Photon - TCN75A Temperatursensor Tutorial: 4 trin
Particle Photon-TCN75A Temperatursensor Tutorial: TCN75A er en to-leders seriel temperatursensor, der er indbygget i temperatur-til-digital-omformer. Det er integreret med brugerprogrammerbare registre, der giver fleksibilitet til temperaturfølende applikationer. Registerindstillingerne tillader brugere
Particle Photon - ADT75 Temperature Sensor Tutorial: 4 trin
Particle Photon - ADT75 Temperature Sensor Tutorial: ADT75 er en meget præcis, digital temperatursensor. Det består af en båndgab temperatur sensor og en 12-bit analog til digital konverter til overvågning og digitalisering af temperaturen. Dens meget følsomme sensor gør den kompetent nok for mig
Particle Photon - STS21 Temperature Sensor Tutorial: 4 trin
Particle Photon - STS21 Temperature Sensor Tutorial: STS21 Digital Temperature Sensor tilbyder overlegen ydeevne og et pladsbesparende fodaftryk. Det giver kalibrerede, lineariserede signaler i digitalt I2C -format. Fremstilling af denne sensor er baseret på CMOSens -teknologi, som tilskrives den overlegne
Particle Photon - HDC1000 Temperatursensor Tutorial: 4 trin
Particle Photon - HDC1000 Temperatursensor Tutorial: HDC1000 er en digital fugtighedsføler med integreret temperatursensor, der giver fremragende målenøjagtighed ved meget lav effekt. Enheden måler fugtighed baseret på en ny kapacitiv sensor. Fugtigheds- og temperatursensorerne er fac
Particle Photon - BH1715 Digital Ambient Light Sensor Tutorial: 4 trin
Particle Photon - BH1715 Digital Ambient Light Sensor Tutorial: BH1715 er en digital Ambient Light Sensor med en I²C busgrænseflade. BH1715 bruges almindeligvis til at indhente omgivelseslysdata til justering af LCD- og tastaturets baggrundsbelysning til mobile enheder. Denne enhed tilbyder en 16-bit opløsning og en justering