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, Srpanj
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 razne projekte koji zahtijevaju praćenje temperature, tlaka i vlažnosti. Tako shvaćamo da ti parametri zapravo igraju vitalnu ulogu u procjeni radne učinkovitosti sustava u različitim atmosferskim uvjetima. I na industrijskoj razini i na osobnim sustavima optimalna temperatura, vlaga i razina barometarskog tlaka potrebni su za odgovarajuće performanse sustava.

Zato nudimo cjelovit vodič o ovom senzoru, u ovom ćemo vodiču objasniti rad BME280 osjetnika vlage, tlaka i temperature s fotonom čestica.

Korak 1: Istraživanje BME280

BME280 Istraživanje
BME280 Istraživanje

Elektronički sektor pojačao je svoju igru senzorom BME280, senzorom okoliša s temperaturom, barometrijskim tlakom i vlagom! Ovaj je senzor izvrstan za sve vrste osjetljivosti na vremenske uvjete/okoliš, a može se čak koristiti i u I2C.

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

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

Korak 2: Popis hardverskih zahtjeva

Popis hardverskih zahtjeva
Popis hardverskih zahtjeva

Koristili smo u potpunosti Dcube Store dijelove jer su jednostavni 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 shema ožičenja pretpostavlja da koristite ove dijelove.

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

Korak 3: Povezivanje

Povezivanje
Povezivanje

Dio sučelja u osnovi objašnjava potrebne ožičenje između senzora i fotona čestica. Osiguravanje ispravnih veza osnovna je potreba tijekom rada na bilo kojem sustavu 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, tlaka i vlažnosti

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

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

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

Pritisnite OVDJE za otvaranje web stranice za praćenje uređaja

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

Kôd se nalazi ispod:

// Distribuirano s licencom za slobodnu volju.// Koristite ga na koji god način ž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 stranici ControlEverything.com. #include #include // BME280 I2C adresa je 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, tlak = 0, vlažnost = 0; void setup () {// Postavi varijablu Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Čestica.varijabilna ("tlak", tlak); Čestica.promjenjiva ("vlažnost", vlažnost); // Inicializirajte 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 ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra podataka Wire.write ((136+i)); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Pročitajte 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 tlaka 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 ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra podataka Wire.write ((225+i)); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Očitavanje 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]; // Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra podataka Wire.write (161); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Očitavanje 1 bajta podataka ako (Wire.available () == 1) {dig_H1 = Wire.read (); } // Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odaberite registar kontrolne vlažnosti Wire.write (0xF2); // Vlažnost preko uzorkovanja = 1 Wire.write (0x01); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odaberite registar kontrolnih mjerenja Wire.write (0xF4); // Normalni način rada, temperatura i tlak preko uzorkovanja = 1 Wire.write (0x27); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra konfiguracije Wire.write (0xF5); // Vrijeme pripravnosti = 1000ms Wire.write (0xA0); // Zaustavi I2C prijenosnu žicu.endTransmission (); for (int i = 0; i <8; i ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra podataka Wire.write ((247+i)); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Čitanje 8 bajtova podataka ako (Wire.available () == 1) {data = Wire.read (); }} // Pretvorimo podatke o tlaku 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) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (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; // Izračuni pomaka tlaka 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); dvostruki p = 1048576,0 - (dvostruki) 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 tlak = (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 - kopanje_H1 * var_H / 524288,0); if (vlažnost> 100,0) {vlažnost = 100,0; } else if (vlaga <0,0) {vlažnost = 0,0; } // Izlazni podaci na nadzornu ploču Particle.publish ("Temperatura u Celzijusu:", String (cTemp)); Particle.publish ("Temperatura u Fahrenheitu:", String (fTemp)); Particle.publish ("Tlak:", niz (tlak)); Particle.publish ("Relativna vlažnost:", niz (vlažnost)); kašnjenje (1000); }

5. korak: Prijave:

Prijave
Prijave

BME280 osjetnik temperature, tlaka i relativne vlažnosti ima različite industrijske primjene poput nadzora temperature, periferne toplinske zaštite računala, nadzora tlaka u industriji. Ovaj smo senzor također upotrijebili u aplikacijama meteoroloških stanica, kao i u sustavu nadzora staklenika.

Druge aplikacije mogu uključivati:

  1. Osviještenost konteksta, npr. detekcija kože, detekcija promjene sobe.
  2. Praćenje kondicije / 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. Unutarnja navigacija (promjena detekcije poda, detekcija dizala).
  9. Vanjske aplikacije za navigaciju, slobodno vrijeme i sport.
  10. Vremenska prognoza.
  11. Indikacija okomite brzine (porast/pad brzine)..

Korak 6: Video vodič

Pogledajte naš video vodič kako biste prošli sve korake povezivanja i dovršetka projekta.

Pratite ostale sučelja i radne blogove drugih senzora.

Preporučeni: