Kazalo:

Izračun vlažnosti, tlaka in temperature z uporabo BME280 in fotonskega vmesnika .: 6 korakov
Izračun vlažnosti, tlaka in temperature z uporabo BME280 in fotonskega vmesnika .: 6 korakov

Video: Izračun vlažnosti, tlaka in temperature z uporabo BME280 in fotonskega vmesnika .: 6 korakov

Video: Izračun vlažnosti, tlaka in temperature z uporabo BME280 in fotonskega vmesnika .: 6 korakov
Video: Стабилизация биохимических показателей крови. Большой восстановительный рефлекторный каскад 2024, Julij
Anonim
Izračun vlažnosti, tlaka in temperature z uporabo BME280 in fotonskega vmesnika
Izračun vlažnosti, tlaka in temperature z uporabo BME280 in fotonskega vmesnika

Naletimo na različne projekte, ki zahtevajo spremljanje temperature, tlaka in vlažnosti. Tako se zavedamo, da imajo ti parametri dejansko pomembno vlogo pri oceni delovne učinkovitosti sistema v različnih atmosferskih pogojih. Tako na industrijskem nivoju kot v osebnih sistemih so za ustrezno delovanje sistema potrebni optimalna temperatura, vlažnost in barometrični tlak.

Zato nudimo popolno vadbo o tem senzorju, v tem vodiču bomo razložili delovanje senzorja vlažnosti, tlaka in temperature BME280 s fotonom delcev.

1. korak: Raziskovanje BME280

BME280 Raziskovanje
BME280 Raziskovanje

Elektronski sektor je okrepil svojo igro s senzorjem BME280, okoljskim senzorjem s temperaturo, barometričnim tlakom in vlažnostjo! Ta senzor je odličen za vse vrste vremenskega/okoljskega zaznavanja in ga je mogoče uporabiti celo v I2C.

Ta natančni senzor BME280 je najboljša senzorska rešitev za merjenje vlažnosti z natančnostjo ± 3%, barometrični tlak z absolutno natančnostjo ± 1 hPa in temperaturo z natančnostjo ± 1,0 ° C. Ker se tlak spreminja z višino in so meritve tlaka tako dobre, ga lahko uporabite tudi kot višinomer z ± 1 metrom ali boljšo natančnostjo! Temperaturni senzor je optimiziran za najnižji hrup in najvišjo ločljivost ter se uporablja za temperaturno kompenzacijo senzor tlaka in se lahko uporablja tudi za oceno temperature okolice. Meritve z BME280 lahko izvaja uporabnik ali pa jih izvaja v rednih časovnih presledkih.

Podatkovni list: Kliknite za predogled ali prenos podatkovnega lista za senzor BME280.

2. korak: Seznam zahtev strojne opreme

Seznam zahtev strojne opreme
Seznam zahtev strojne opreme

V celoti smo uporabili Dcube Store dele, ker so enostavni za uporabo in nekaj o vsem, kar se lepo prilega centimetrski mreži, nas resnično spravi v akcijo. Uporabite lahko vse, kar želite, vendar shema ožičenja predvideva, da uporabljate te dele.

  • Mini modul senzorja I²C BME280
  • I²C ščit za fotone delcev
  • Foton delcev
  • I²C kabel
  • Polnilec

Korak: Povezovanje

Povezovanje
Povezovanje

Odsek vmesnika v bistvu razlaga potrebne povezave ožičenja med senzorjem in fotonom delcev. Zagotavljanje pravilnih povezav je osnovna potreba pri delu na katerem koli sistemu za želeni izhod. Torej so potrebne povezave naslednje:

BME280 bo deloval preko I2C. Tu je primer sheme ožičenja, ki prikazuje, kako povezati vsak vmesnik senzorja. Plošča je že pripravljena za vmesnik I2C, zato priporočamo uporabo tega vmesnika, če niste agnostiki. Vse kar potrebujete so štiri žice! Potrebne so le štiri povezave Vcc, Gnd, SCL in SDA, ki so povezane s kablom I2C. Te povezave so prikazane na zgornjih slikah.

4. korak: Koda za spremljanje temperature, tlaka in vlažnosti

Koda za spremljanje temperature, tlaka in vlažnosti
Koda za spremljanje temperature, tlaka in vlažnosti
Koda za spremljanje temperature, tlaka in vlažnosti
Koda za spremljanje temperature, tlaka in vlažnosti

Čista različica kode, ki jo bomo uporabili za to, je na voljo TUKAJ.

Med uporabo senzorskega modula z Arduinom vključujemo knjižnico application.h in spark_wiring_i2c.h. Knjižnica "application.h" in spark_wiring_i2c.h vsebuje funkcije, ki olajšajo komunikacijo i2c med senzorjem in delcem.

Kliknite TUKAJ, da odprete spletno stran za spremljanje naprave

Naložite kodo na tablo in začela bi delovati! Vse podatke lahko dobite na spletni strani, kot je prikazano na sliki.

Koda je navedena spodaj:

// Razdeljeno z licenco po lastni volji.// Uporabite ga kakor koli želite, dobičkonosno ali brezplačno, pod pogojem, da ustreza licencam pripadajočih del. // BME280 // Ta koda je zasnovana za delo z mini modulom BME280_I2CS I2C, ki je na voljo na spletnem mestu ControlEverything.com. #include #include // Naslov BME280 I2C je 0x76 (108) #define Addr 0x76 dvojni cTemp = 0, fTemp = 0, tlak = 0, vlažnost = 0; void setup () {// Nastavi spremenljivko Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Delci.variable ("fTemp", fTemp); Delci.premenljiva ("tlak", tlak); Delci.premenljiva ("vlažnost", vlažnost); // Inicializirajte komunikacijo I2C kot MASTER Wire.begin (); // Začetek serijske komunikacije, nastavljena hitrost prenosa = 9600 Serial.begin (9600); zamuda (300); } void loop () {unsigned int b1 [24]; podpisani int podatki [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Začni prenos I2C Wire.beginTransmission (Addr); // Izberite podatkovni register Wire.write ((136+i)); // Ustavi I2C prenosno žico.endTransmission (); // Zahtevaj 1 bajt podatkov Wire.requestFrom (Addr, 1); // Preberite 24 bajtov podatkov, če (Wire.available () == 1) {b1 = Wire.read (); }} // pretvorimo podatke // začasne koeficiente int dig_T1 = (b1 [0] & 0xff) + ((b1 [1] & 0xff) * 256); int dig_T2 = b1 [2] + (b1 [3] * 256); int dig_T3 = b1 [4] + (b1 [5] * 256); // tlačni koeficienti int dig_P1 = (b1 [6] & 0xff) + ((b1 [7] & 0xff) * 256); int dig_P2 = b1 [8] + (b1 [9] * 256); int dig_P3 = b1 [10] + (b1 [11] * 256); int dig_P4 = b1 [12] + (b1 [13] * 256); int dig_P5 = b1 [14] + (b1 [15] * 256); int dig_P6 = b1 [16] + (b1 [17] * 256); int dig_P7 = b1 [18] + (b1 [19] * 256); int dig_P8 = b1 [20] + (b1 [21] * 256); int dig_P9 = b1 [22] + (b1 [23] * 256); for (int i = 0; i <7; i ++) {// Začni prenos I2C Wire.beginTransmission (Addr); // Izberite podatkovni register Wire.write ((225+i)); // Ustavi I2C prenosno žico.endTransmission (); // Zahtevaj 1 bajt podatkov Wire.requestFrom (Addr, 1); // Preberite 7 bajtov podatkov, če (Wire.available () == 1) {b1 = Wire.read (); }} // pretvorimo podatke // koeficiente vlažnosti int dig_H2 = b1 [0] + (b1 [1] * 256); int dig_H3 = b1 [2] & 0xFF; int dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF); int dig_H5 = (b1 [4] / 16) + (b1 [5] * 16); int dig_H6 = b1 [6]; // Zaženite prenos I2C Wire.beginTransmission (Addr); // Izberite podatkovni register Wire.write (161); // Ustavi I2C prenosno žico.endTransmission (); // Zahtevaj 1 bajt podatkov Wire.requestFrom (Addr, 1); // Preberite 1 bajt podatkov, če (Wire.available () == 1) {dig_H1 = Wire.read (); } // Zaženi prenos I2C Wire.beginTransmission (Addr); // Izberite register za nadzor vlažnosti Wire.write (0xF2); // Vlažnost nad vzorčenjem = 1 Wire.write (0x01); // Ustavi I2C prenosno žico.endTransmission (); // Zaženite prenos I2C Wire.beginTransmission (Addr); // Izberite kontrolni merilni register Wire.write (0xF4); // Običajen način, temperatura in tlak nad vzorčenjem = 1 Wire.write (0x27); // Ustavi I2C prenosno žico.endTransmission (); // Zaženite prenos I2C Wire.beginTransmission (Addr); // Izberite konfiguracijski register Wire.write (0xF5); // čas pripravljenosti = 1000 ms Wire.write (0xA0); // Ustavi I2C prenosno žico.endTransmission (); for (int i = 0; i <8; i ++) {// Začni prenos I2C Wire.beginTransmission (Addr); // Izberite podatkovni register Wire.write ((247+i)); // Ustavi I2C prenosno žico.endTransmission (); // Zahtevaj 1 bajt podatkov Wire.requestFrom (Addr, 1); // Preberite 8 bajtov podatkov, če (Wire.available () == 1) {data = Wire.read (); }} // Pretvorimo podatke o tlaku in temperaturi v 19-bitne dolžine adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (dolga) (podatki [2] & 0xF0)) / 16; dolg adc_t = (((dolg) (podatki [3] & 0xFF) * 65536) + ((dolgi) (podatki [4] & 0xFF) * 256) + (dolgi) (podatki [5] & 0xF0)) / 16; // pretvorimo podatke o vlažnosti dolgo adc_h = ((dolga) (podatki [6] & 0xFF) * 256 + (dolga) (podatki [7] & 0xFF)); // Izračuni odmika temperature double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); double var2 = ((((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0) * (((double) adc_t) /131072.0 - ((double) dig_T1) /8192.0)) * ((double) dig_T3); dvojno t_fine = (dolgo) (var1 + var2); dvojni cTemp = (var1 + var2) / 5120.0; dvojni fTemp = cTemp * 1,8 + 32; // Izračuni odmika tlaka var1 = ((dvojno) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dvojno) dig_P6) / 32768,0; var2 = var2 + var1 * ((dvojno) dig_P5) * 2,0; var2 = (var2 / 4.0) + (((dvojno) dig_P4) * 65536.0); var1 = (((dvojni) dig_P3) * var1 * var1 / 524288.0 + ((dvojni) dig_P2) * var1) / 524288.0; var1 = (1,0 + var1 / 32768,0) * ((dvojno) dig_P1); dvojni p = 1048576,0 - (dvojni) adc_p; p = (p - (var2 / 4096.0)) * 6250,0 / var1; var1 = ((dvojno) dig_P9) * p * p / 2147483648.0; var2 = p * ((dvojno) dig_P8) / 32768,0; dvojni tlak = (p + (var1 + var2 + ((dvojni) dig_P7)) / 16,0) / 100; // Izračuni odmika vlažnosti double var_H = (((double) t_fine) - 76800.0); var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67108864.0 * var_H))); dvojna vlažnost = var_H * (1,0 - kopa_H1 * var_H / 524288,0); če (vlažnost> 100,0) {vlaga = 100,0; } drugače če (vlažnost <0,0) {vlažnost = 0,0; } // Izhodni podatki na nadzorno ploščo Particle.publish ("Temperatura v Celzijusi:", String (cTemp)); Particle.publish ("Temperatura v Fahrenheitu:", String (fTemp)); Particle.publish ("Tlak:", niz (tlak)); Particle.publish ("Relativna vlažnost:", niz (vlažnost)); zamuda (1000); }

5. korak: Aplikacije:

Aplikacije
Aplikacije

Senzor temperature, tlaka in relativne vlažnosti BME280 ima različne industrijske aplikacije, kot so nadzor temperature, računalniška zunanja toplotna zaščita, nadzor tlaka v industriji. Ta senzor smo uporabili tudi v aplikacijah vremenskih postaj in v sistemu za nadzor rastlinjakov.

Druge aplikacije lahko vključujejo:

  1. Zavedanje konteksta, npr. odkrivanje kože, zaznavanje sprememb prostora.
  2. Spremljanje telesne pripravljenosti / dobro počutje - Opozorilo glede suhosti ali visokih temperatur.
  3. Merjenje prostornine in pretoka zraka.
  4. Nadzor avtomatizacije doma.
  5. Upravljajte ogrevanje, prezračevanje, klimatsko napravo (HVAC).
  6. Internet stvari.
  7. Izboljšanje GPS (npr. Izboljšanje časa do prve popravke, odštevanje, zaznavanje nagiba).
  8. Notranja navigacija (sprememba zaznavanja tal, zaznavanje dvigala).
  9. Zunanja navigacija, prosti čas in športne aplikacije.
  10. Vremenska napoved.
  11. Indikacija navpične hitrosti (hitrost dviga/pomika).

6. korak: Video vadnica

Oglejte si našo video vadnico, kjer boste izvedeli vse korake pri povezovanju in dokončanju projekta.

Ostanite z nami za vmesnike in delovne bloge drugih senzorjev.

Priporočena: