Turinys:
Video: Dalelių fotonas - MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
MPL3115A2 naudojamas MEMS slėgio jutiklis su I2C sąsaja, kad būtų gauti tikslūs slėgio/aukščio ir temperatūros duomenys. Jutiklių išėjimai yra skaitmeninami didelės skiriamosios gebos 24 bitų ADC. Vidinis apdorojimas pašalina kompensavimo užduotis iš pagrindinės MCU sistemos. Jis gali aptikti tik 0,05 kPa pokytį, o tai prilygsta 0,3 m aukščio pokyčiui. Čia yra jo demonstravimas su dalelių fotonu.
1 žingsnis: ko jums reikia..
1. Dalelių fotonas
2. MPL3115A2
3. I²C kabelis
4. I²C skydas dalelių fotonui
2 žingsnis: jungtys:
Paimkite dalelių fotono I2C skydą ir švelniai stumkite jį ant dalelių fotono kaiščių.
Tada vieną I2C kabelio galą prijunkite prie MPL3115A2 jutiklio, o kitą - prie I2C skydo.
Sujungimai parodyti aukščiau esančiame paveikslėlyje.
3 žingsnis: kodas:
MPL3115A2 dalelių kodą galima atsisiųsti iš mūsų „Github“saugyklos-DCUBE parduotuvės.
Čia yra nuoroda.
Dalelių kodui panaudojome dvi bibliotekas - application.h ir spark_wiring_i2c.h. Norint palengvinti I2C ryšį su jutikliu, reikalinga „Spark_wiring_i2c“biblioteka.
Taip pat galite nukopijuoti kodą iš čia, jis pateikiamas taip:
// Platinama su laisvos valios licencija.
// Naudokite bet kokiu būdu, pelningai ar nemokamai, jei jis atitinka susijusių darbų licencijas.
// MPL3115A2
// Šis kodas skirtas dirbti su MPL3115A2_I2CS I2C mini moduliu
#įtraukti
#įtraukti
// MPL3115A2 I2C adresas yra 0x60 (96)
#define Addr 0x60
plūdė cTemp = 0.0, fTemp = 0.0, slėgis = 0.0, aukštis = 0.0;
int temp = 0, tAukštis = 0; ilgas presas = 0;
negaliojanti sąranka ()
{
// Nustatyti kintamąjį
Dalelių kintamasis ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Dalelė.kintamas ("slėgis", slėgis);
Dalelė.kintamasis ("aukštis", aukštis);
// Inicijuoti I2C komunikaciją
Wire.begin ();
// Inicijuoti serijinį ryšį, nustatyti duomenų perdavimo spartą = 9600
Serial.begin (9600);
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite valdymo registrą
Wire.write (0x26);
// Aktyvusis režimas, OSR = 128, altimetro režimas
Wire.write (0xB9);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite duomenų konfigūracijos registrą
Wire.write (0x13);
// Įgalintas duomenų paruošimo įvykis aukščiui, slėgiui, temperatūrai
Wire.write (0x07);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
vėlavimas (300);
}
tuštumos kilpa ()
{
nepasirašyti int duomenys [6];
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite valdymo registrą
Wire.write (0x26);
// Aktyvusis režimas, OSR = 128, altimetro režimas
Wire.write (0xB9);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
vėlavimas (1000);
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite duomenų registrą
Wire.write (0x00);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
// Prašyti 6 baitų duomenų
Wire.requestFrom (Addr, 6);
// Perskaitykite 6 baitus duomenų iš adreso 0x00 (00)
// būsena, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
jei (Wire.available () == 6)
{
duomenys [0] = Wire.read ();
duomenys [1] = Wire.read ();
duomenys [2] = Wire.read ();
duomenys [3] = Wire.read ();
duomenys [4] = Wire.read ();
duomenys [5] = Wire.read ();
}
// Konvertuokite duomenis į 20 bitų
tAukštis = (((((ilgi)) duomenys [1] * (ilgas) 65536) + (duomenys [2] * 256) + (duomenys [3] ir 0xF0)) / 16);
temp = ((duomenys [4] * 256) + (duomenys [5] ir 0xF0)) / 16;
aukštis = tAukštis / 16,0;
cTemp = (temp / 16,0);
fTemp = cTemp * 1,8 + 32;
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite valdymo registrą
Wire.write (0x26);
// Aktyvusis režimas, OSR = 128, barometro režimas
Wire.write (0x39);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite duomenų registrą
Wire.write (0x00);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
vėlavimas (1000);
// Prašyti 4 baitų duomenų
Wire.requestFrom (Addr, 4);
// Perskaitykite 4 baitus duomenų
// status, pres msb1, pres msb, pres lsb
jei (Wire.available () == 4)
{
duomenys [0] = Wire.read ();
duomenys [1] = Wire.read ();
duomenys [2] = Wire.read ();
duomenys [3] = Wire.read ();
}
// Konvertuokite duomenis į 20 bitų
pres = (((ilgi) duomenys [1] * (ilgas) 65536) + (duomenys [2] * 256) + (duomenys [3] ir 0xF0)) / 16;
slėgis = (pres / 4,0) / 1000,0;
// Išvesti duomenis į prietaisų skydelį
Particle.publish ("Altitude:", String (altitude));
Particle.publish ("Slėgis:", Styga (slėgis));
Particle.publish ("Temperatūra Celsijaus laipsniais:", Styga (cTemp));
Particle.publish ("Temperatūra Farenheitu:", Styga (fTemp));
vėlavimas (1000);
}
4 žingsnis: programos:
Įvairios MPL3115A2 programos apima didelio tikslumo altimetriją, išmaniuosius telefonus/planšetinius kompiuterius, asmeninės elektronikos aukščio matavimus ir tt. Jis taip pat gali būti įtrauktas į GPS mirusiųjų skaičiavimą, GPS gerinimą skubios pagalbos tarnyboms, žemėlapio pagalbinę įrangą, navigaciją ir orų stoties įrangą.
Rekomenduojamas:
Dalelių fotonas - TCN75A temperatūros jutiklio pamoka: 4 žingsniai
Dalelių fotonas-TCN75A temperatūros jutiklio pamoka: TCN75A yra dviejų laidų nuoseklus temperatūros jutiklis, integruotas su temperatūros ir skaitmenos keitikliu. Jis įtrauktas į vartotojo programuojamus registrus, kurie suteikia lankstumo temperatūros jutiklinėms programoms. Registro nustatymai leidžia vartotojams
Dalelių fotonas - ADT75 temperatūros jutiklio pamoka: 4 žingsniai
Dalelių fotonas - ADT75 temperatūros jutiklio pamoka: ADT75 yra labai tikslus skaitmeninis temperatūros jutiklis. Jį sudaro juostos tarpo temperatūros jutiklis ir 12 bitų analoginis-skaitmeninis keitiklis, skirtas temperatūrai stebėti ir skaitmeninti. Dėl labai jautraus jutiklio man jis yra pakankamai kompetentingas
Dalelių fotonas - STS21 temperatūros jutiklio pamoka: 4 žingsniai
Dalelių fotonas - STS21 temperatūros jutiklio pamoka: STS21 skaitmeninis temperatūros jutiklis pasižymi puikiu našumu ir taupo vietą. Jis teikia kalibruotus, linijinius signalus skaitmeniniu I2C formatu. Šio jutiklio gamyba pagrįsta CMOSens technologija, kuri priskiriama pranašesniam
Dalelių fotonas - HDC1000 temperatūros jutiklio pamoka: 4 žingsniai
Dalelių fotonas - HDC1000 temperatūros jutiklio pamoka: HDC1000 yra skaitmeninis drėgmės jutiklis su integruotu temperatūros jutikliu, kuris užtikrina puikų matavimo tikslumą esant labai mažai galiai. Prietaisas matuoja drėgmę remdamasis nauju talpiniu jutikliu. Drėgmės ir temperatūros jutikliai yra
Dalelių fotonas - TMP100 temperatūros jutiklio pamoka: 4 žingsniai
Dalelių fotonas-TMP100 temperatūros jutiklio pamoka: TMP100 didelio tikslumo, mažos galios, skaitmeninis temperatūros jutiklis I2C MINI modulis. TMP100 idealiai tinka ilgesniam temperatūros matavimui. Šis prietaisas siūlo ± 1 ° C tikslumą, nereikalaujant kalibravimo ar išorinio komponento signalo kondicionavimo. Jis