Sadržaj:

Proračun vlažnosti, tlaka i temperature pomoću BME280 i povezivanja fotona .: 6 koraka
Proračun vlažnosti, tlaka i temperature pomoću BME280 i povezivanja fotona .: 6 koraka

Video: Proračun vlažnosti, tlaka i temperature pomoću BME280 i povezivanja fotona .: 6 koraka

Video: Proračun vlažnosti, tlaka i temperature pomoću BME280 i povezivanja fotona .: 6 koraka
Video: Podno grijanje na kondenzacijski bojler, 2.dio - Nakon 26-27 dana NEPREKIDNOG grijanja 2024, Juli
Anonim
Proračun vlažnosti, tlaka i temperature pomoću BME280 i fotonskog sučelja
Proračun vlažnosti, tlaka i temperature pomoću BME280 i fotonskog sučelja

Nailazimo na različite projekte koji zahtijevaju praćenje temperature, pritiska i vlažnosti. Tako shvaćamo da ovi parametri zapravo igraju vitalnu ulogu u procjeni radne efikasnosti sistema u različitim atmosferskim uvjetima. I na industrijskom nivou i na ličnim sistemima optimalna temperatura, vlažnost i nivo barometarskog pritiska neophodni su za odgovarajuće performanse sistema.

Zbog toga pružamo cjelovit vodič o ovom senzoru, u ovom vodiču ćemo objasniti rad BME280 senzora vlažnosti, tlaka i temperature s fotonom čestica.

Korak 1: Istraživanje BME280

BME280 Exploration
BME280 Exploration

Elektronički sektor pojačao je svoju igru senzorom BME280, senzorom okoliša s temperaturom, barometrijskim tlakom i vlagom! Ovaj senzor je odličan za sve vrste vremenskih/okolišnih senzora i čak se može koristiti u I2C.

Ovaj precizni senzor BME280 najbolje je rješenje za mjerenje vlažnosti sa ± 3% tačnosti, barometarski pritisak sa ± 1 hPa apsolutnom tačnošću i temperature sa ± 1,0 ° C tačnosti. Budući da se tlak mijenja s nadmorskom visinom, a mjerenja tlaka su toliko dobra, možete ga koristiti i kao visinomjer sa ± 1 metar ili boljom preciznošću! Senzor temperature optimiziran je za najnižu buku i najveću rezoluciju i koristi se za temperaturnu kompenzaciju senzor pritiska, a može se koristiti i za procjenu temperature okoline. Mjerenja s BME280 može izvesti korisnik ili u redovnim intervalima.

Tehnički list: Kliknite za pregled ili preuzimanje podatkovnog lista BME280 senzora.

Korak 2: Lista zahtjeva hardvera

Lista zahteva hardvera
Lista zahteva hardvera

Koristili smo u potpunosti Dcube Store dijelove jer su laki za upotrebu, a nešto o svemu što lijepo pristaje na rešetku od centimetra zaista nas pokreće. Možete koristiti što god želite, ali dijagram ožičenja pretpostavlja da koristite ove dijelove.

  • BME280 senzor I²C mini modul
  • I²C štit za foton čestica
  • Foton čestica
  • I²C kabel
  • Adapter za napajanje

Korak 3: Povezivanje

Interfacing
Interfacing

Odjeljak sučelja u osnovi objašnjava potrebne ožičenje između senzora i fotona čestica. Osiguravanje ispravnih veza osnovna je potreba pri radu na bilo kojem sistemu za željeni izlaz. Dakle, potrebne veze su sljedeće:

BME280 će raditi preko I2C. Evo primjera dijagrama ožičenja koji pokazuje kako spojiti svako sučelje senzora. Out-of-box, ploča je konfigurirana za I2C sučelje, pa kao takvu preporučujemo korištenje ovog sučelja ako ste inače agnostični. Sve što trebate su četiri žice! Potrebna su samo četiri priključka Vcc, Gnd, SCL i SDA pinovi koji se povezuju pomoću I2C kabela. Ove veze su prikazane na gornjim slikama.

Korak 4: Kôd za praćenje temperature, pritiska i vlažnosti

Kôd za praćenje temperature, pritiska i vlažnosti
Kôd za praćenje temperature, pritiska i vlažnosti
Kôd za praćenje temperature, pritiska i vlažnosti
Kôd za praćenje temperature, pritiska i vlažnosti

Čista verzija koda koju ćemo koristiti za pokretanje ovoga dostupna je OVDJE.

Dok koristimo senzorski modul s Arduinom, uključujemo biblioteku application.h i spark_wiring_i2c.h. Biblioteka "application.h" i spark_wiring_i2c.h sadrži funkcije koje olakšavaju i2c komunikaciju između senzora i čestice.

Kliknite OVDJE da otvorite web stranicu za praćenje uređaja

Postavite kôd na svoju ploču i trebao bi početi raditi! Svi podaci mogu se dobiti na web stranici kao što je prikazano na slici.

Kôd se nalazi ispod:

// Distribuirano s licencom za slobodnu volju.// Koristite ga kako god želite, profitno ili besplatno, pod uvjetom da se uklapa u licence povezanih djela. // BME280 // Ovaj kod je dizajniran za rad s BME280_I2CS I2C mini modulom dostupnim na ControlEverything.com. #include #include // BME280 I2C adresa je 0x76 (108) #define Addr 0x76 dvostruki cTemp = 0, fTemp = 0, pritisak = 0, vlažnost = 0; void setup () {// Postavi varijablu Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Čestica.varijabilna ("pritisak", pritisak); Čestica.varijabilna ("vlažnost", vlažnost); // Pokreće I2C komunikaciju kao MASTER Wire.begin (); // Pokretanje serijske komunikacije, postavljena brzina prijenosa = 9600 Serial.begin (9600); kašnjenje (300); } void loop () {unsigned int b1 [24]; nepotpisani int podaci [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra podataka Wire.write ((136+i)); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Čitanje 24 bajta podataka ako (Wire.available () == 1) {b1 = Wire.read (); }} // Pretvorimo podatke // temp koeficijenti 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); // koeficijenti pritiska 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 ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra podataka Wire.write ((225+i)); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Čita 7 bajtova podataka ako (Wire.available () == 1) {b1 = Wire.read (); }} // Pretvorimo podatke // koeficijenti 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]; // Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra podataka Wire.write (161); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Očitavanje 1 bajta podataka ako (Wire.available () == 1) {dig_H1 = Wire.read (); } // Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odaberite registar kontrolne vlažnosti Wire.write (0xF2); // Vlažnost preko uzorkovanja = 1 Wire.write (0x01); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odaberite registar kontrolnih mjerenja Wire.write (0xF4); // Normalni način rada, temperatura i pritisak preko uzorkovanja = 1 Wire.write (0x27); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra konfiguracije Wire.write (0xF5); // Vrijeme pripravnosti = 1000ms Wire.write (0xA0); // Zaustavljanje I2C prijenosa Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra podataka Wire.write ((247+i)); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Čita 8 bajtova podataka ako (Wire.available () == 1) {data = Wire.read (); }} // Pretvorimo podatke o pritisku i temperaturi u 19-bitne podatke adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (long) (podaci [2] & 0xF0)) / 16; long adc_t = (((long) (podaci [3] & 0xFF) * 65536) + ((long) (podaci [4] & 0xFF) * 256) + (dugački) (podaci [5] & 0xF0)) / 16; // Pretvorimo podatke o vlažnosti long adc_h = ((long) (podaci [6] & 0xFF) * 256 + (long) (podaci [7] & 0xFF)); // Izračuni pomaka 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); dvostruko t_fine = (dugo) (var1 + var2); dvostruki cTemp = (var1 + var2) / 5120.0; dvostruki fTemp = cTemp * 1,8 + 32; // Proračuni pomaka pritiska var1 = ((dvostruko) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dvostruko) dig_P6) / 32768.0; var2 = var2 + var1 * ((dvostruko) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dvostruko) dig_P4) * 65536.0); var1 = (((double) dig_P3) * var1 * var1 / 524288.0 + ((double) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dvostruko) dig_P1); double p = 1048576.0 - (double) adc_p; p = (p - (var2 / 4096.0)) * 6250,0 / var1; var1 = ((dvostruko) dig_P9) * p * p / 2147483648.0; var2 = p * ((dvostruko) dig_P8) / 32768.0; dvostruki pritisak = (p + (var1 + var2 + ((dvostruko) dig_P7)) / 16,0) / 100; // Izračuni pomaka 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))); dvostruka vlažnost = var_H * (1,0 - dig_H1 * var_H / 524288,0); if (vlažnost> 100,0) {vlažnost = 100,0; } else if (vlažnost <0,0) {vlažnost = 0,0; } // Izlaženje podataka na nadzornu ploču Particle.publish ("Temperatura u Celzijusima:", String (cTemp)); Particle.publish ("Temperatura u Fahrenheitu:", String (fTemp)); Particle.publish ("Pritisak:", niz (pritisak)); Particle.publish ("Relativna vlažnost:", niz (vlažnost)); kašnjenje (1000); }

Korak 5: Aplikacije:

Prijave
Prijave

BME280 senzor temperature, pritiska i relativne vlažnosti ima različite industrijske primjene poput nadzora temperature, kompjuterske termičke zaštite periferije, nadzora tlaka u industriji. Ovaj senzor smo takođe koristili u aplikacijama meteoroloških stanica, kao i u sistemu nadzora staklenika.

Druge aplikacije mogu uključivati:

  1. Svijest o kontekstu, npr. detekcija kože, detekcija promjene sobe.
  2. Nadzor fitnesa / dobrobit - Upozorenje u pogledu suhoće ili visokih temperatura.
  3. Mjerenje volumena i protoka zraka.
  4. Upravljanje kućnom automatizacijom.
  5. Upravljajte grijanjem, ventilacijom, klimatizacijom (HVAC).
  6. Internet stvari.
  7. Poboljšanje GPS-a (npr. Poboljšanje vremena do prvog popravka, mrtvo računanje, otkrivanje nagiba).
  8. Unutrašnja navigacija (promjena detekcije poda, detekcija lifta).
  9. Vanjske aplikacije za navigaciju, zabavu i sport.
  10. Vremenska prognoza.
  11. Indikacija okomite brzine (porast/brzina poniranja)..

Korak 6: Video vodič

Pogledajte naš video vodič kako biste prošli sve korake u povezivanju i dovršavanju projekta.

Pratite druge blogove za povezivanje i rad drugih senzora.

Preporučuje se: