Tartalomjegyzék:

Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával: 6 lépés
Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával: 6 lépés

Videó: Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával: 6 lépés

Videó: Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával: 6 lépés
Videó: BME280 Sensor Test with Arduino: pressure, humidity and temperature for the New Chronograph Project 2024, Július
Anonim
Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával
Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával

Különféle projektekkel találkozunk, amelyek hőmérséklet-, nyomás- és páratartalom -ellenőrzést igényelnek. Így rájövünk, hogy ezek a paraméterek valójában létfontosságú szerepet játszanak abban, hogy megbecsüljék a rendszer működési hatékonyságát különböző légköri körülmények között. Mind az ipari, mind a személyi rendszereknél optimális hőmérséklet, páratartalom és légnyomás szükséges a rendszer megfelelő teljesítményéhez.

Ezért teljes oktatóanyagot nyújtunk erről az érzékelőről, ebben az oktatóanyagban elmagyarázzuk a BME280 páratartalom-, nyomás- és hőmérséklet -érzékelő működését részecskefotonnal.

1. lépés: BME280 feltárása

BME280 Feltárás
BME280 Feltárás

Az elektronikus szektor fokozta játékát a BME280 érzékelővel, amely környezeti érzékelő hőmérséklet, légnyomás és páratartalom tekintetében! Ez az érzékelő nagyszerű mindenféle időjárási/környezeti érzékeléshez, és akár I2C -ben is használható.

Ez a BME280 precíziós érzékelő a legjobb érzékelő megoldás a páratartalom ± 3% -os pontossággal, a légnyomás ± 1 hPa abszolút pontossággal és a hőmérséklet ± 1,0 ° C pontossággal történő mérésére. Mivel a nyomás a tengerszint feletti magassággal változik, és a nyomásmérések olyan jók, magasságmérőként is használható ± 1 méteres vagy jobb pontossággal! A hőmérséklet -érzékelőt a legalacsonyabb zajra és a legnagyobb felbontásra optimalizálták, és a hőmérséklet kompenzálására használják a nyomásérzékelő, és a környezeti hőmérséklet becslésére is használható. A BME280 készülékkel végzett méréseket a felhasználó elvégezheti, vagy rendszeres időközönként elvégezheti.

Adatlap: Kattintson ide a BME280 érzékelő adatlapjának megtekintéséhez vagy letöltéséhez.

2. lépés: Hardverkövetelmények listája

Hardverkövetelmények listája
Hardverkövetelmények listája

Teljesen a Dcube Store alkatrészeket használtuk, mert könnyen kezelhetők, és valami, ami szépen illeszkedik egy centiméteres rácsra, valóban elindít minket. Bármit használhat, de a kapcsolási rajz feltételezi, hogy ezeket az alkatrészeket használja.

  • BME280 érzékelő I²C mini modul
  • I²C pajzs részecske fotonhoz
  • Foton részecske
  • I²C kábel
  • Adapter

3. lépés: Interfész

Interfészek
Interfészek

Az interfész szakasz alapvetően elmagyarázza az érzékelő és a részecske -foton között szükséges huzalozási kapcsolatokat. A megfelelő kapcsolatok biztosítása az alapvető szükséglet, amikor bármilyen rendszeren dolgozik a kívánt kimenet érdekében. Tehát a szükséges kapcsolatok a következők:

A BME280 az I2C -n keresztül fog működni. Íme a példa kapcsolási rajz, amely bemutatja, hogyan kell bekötni az érzékelő egyes interfészeit. A doboz készenlétben I2C interfészre van konfigurálva, ezért javasoljuk, hogy ezt az interfészt használja, ha egyébként agnosztikus. Csak négy vezetékre van szüksége! Csak négy csatlakozóra van szükség Vcc, Gnd, SCL és SDA csapokra, és ezeket I2C kábel segítségével kell csatlakoztatni. Ezeket az összefüggéseket a fenti képek mutatják be.

4. lépés: Hőmérséklet, nyomás és páratartalom ellenőrző kód

Hőmérséklet, nyomás és páratartalom ellenőrző kód
Hőmérséklet, nyomás és páratartalom ellenőrző kód
Hőmérséklet, nyomás és páratartalom ellenőrző kód
Hőmérséklet, nyomás és páratartalom ellenőrző kód

A kód futtatásához használt tiszta verziója ITT érhető el.

Miközben az érzékelő modult használja az Arduino -val, az application.h és a spark_wiring_i2c.h könyvtárat is tartalmazza. Az "application.h" és a spark_wiring_i2c.h könyvtár azokat a funkciókat tartalmazza, amelyek megkönnyítik az i2c kommunikációt az érzékelő és a részecske között.

Kattintson IDE a készülék felügyeletére szolgáló weboldal megnyitásához

Töltse fel a kódot a táblára, és már működnie kell! Minden adat megtalálható a weboldalon a képen látható módon.

A kód az alábbiakban található:

// Szabad akaratú licenccel terjesztve. // BME280 // Ezt a kódot a ControlEverything.com webhelyen elérhető BME280_I2CS I2C Mini modullal való együttműködésre tervezték. #include #include // A BME280 I2C címe 0x76 (108) #define Addr 0x76 dupla cTemp = 0, fTemp = 0, nyomás = 0, páratartalom = 0; void setup () {// Particle.variable változó beállítása ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Részecske.változó ("nyomás", nyomás); Részecske.változó ("páratartalom", páratartalom); // Inicializálja az I2C kommunikációt MASTER Wire néven.begin (); // Soros kommunikáció inicializálása, átviteli sebesség beállítása = 9600 Serial.begin (9600); késleltetés (300); } void loop () {unsigned int b1 [24]; előjel nélküli int adatok [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write ((136+i)); // Stop I2C Transmission Wire.endTransmission (); // 1 bájt adat kérése Wire.requestFrom (Addr, 1); // 24 bájt adat olvasása, ha (Wire.available () == 1) {b1 = Wire.read (); }} // Az adatok konvertálása // hőmérsékleti együtthatók 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); // nyomás együtthatói 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 ++) {// Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write ((225+i)); // Stop I2C Transmission Wire.endTransmission (); // 1 bájt adat kérése Wire.requestFrom (Addr, 1); // Olvasson 7 bájt adatot, ha (Wire.available () == 1) {b1 = Wire.read (); }} // Az adatok konvertálása // páratartalom -együtthatók 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]; // Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write (161); // Stop I2C Transmission Wire.endTransmission (); // 1 bájt adat kérése Wire.requestFrom (Addr, 1); // Olvasson 1 bájtnyi adatot, ha (Wire.available () == 1) {dig_H1 = Wire.read (); } // Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Válassza ki a vezérlő páratartalom regisztert Wire.write (0xF2); // Páratartalom mintavételi arány felett = 1 Wire.write (0x01); // Stop I2C Transmission Wire.endTransmission (); // Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Vezérlő mérési regiszter kiválasztása Wire.write (0xF4); // Normál mód, hőmérséklet és nyomás a mintavételi arány felett = 1 Wire.write (0x27); // Stop I2C Transmission Wire.endTransmission (); // Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Válassza ki a konfigurációs regisztert Wire.write (0xF5); // Készenléti idő = 1000 ms Wire.write (0xA0); // Stop I2C Transmission Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write ((247+i)); // Stop I2C Transmission Wire.endTransmission (); // 1 bájt adat kérése Wire.requestFrom (Addr, 1); // Olvasson 8 bájt adatot, ha (Wire.available () == 1) {data = Wire.read (); }} // A nyomás- és hőmérsékleti adatok konvertálása 19 bites hosszúságúvá hosszú) (adatok [2] és 0xF0)) / 16; hosszú adc_t = (((hosszú) (adat [3] és 0xFF) * 65536) + ((hosszú) (adat [4] és 0xFF) * 256) + (hosszú) (adat [5] és 0xF0)) / 16; // A páratartalom adatainak hosszú konvertálása adc_h = ((hosszú) (adatok [6] és 0xFF) * 256 + (hosszú) (adatok [7] és 0xFF)); // Hőmérsékleteltolás számítások double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); dupla var2 = (((((kettős)) adc_t) / 131072.0 - ((dupla) dig_T1) / 8192.0) * (((kettős) adc_t) /131072.0 - ((dupla) dig_T1) / 8192.0)) * ((kettős) dig_T3); dupla t_finom = (hosszú) (var1 + var2); kettős cTemp = (var1 + var2) / 5120,0; kettős fTemp = cTemp * 1,8 + 32; // Nyomáseltolási számítások var1 = ((kettős) t_finom / 2.0) - 64000.0; var2 = var1 * var1 * ((kettős) dig_P6) / 32768.0; var2 = var2 + var1 * ((dupla) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((kettős) dig_P4) * 65536.0); var1 = (((kettős) dig_P3) * var1 * var1 / 524288.0 + ((kettős) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((kettős) dig_P1); kettős p = 1048576,0 - (kettős) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((kettős) dig_P9) * p * p / 2147483648.0; var2 = p * ((kettős) dig_P8) / 32768.0; kettős nyomás = (p + (var1 + var2 + ((dupla) dig_P7)) / 16,0) / 100; // Páratartalom eltolás számítások 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))); kettős páratartalom = var_H * (1,0 - dig_H1 * var_H / 524288.0); if (páratartalom> 100,0) {páratartalom = 100,0; } else if (páratartalom <0,0) {páratartalom = 0,0; } // Adatok kiadása a műszerfalra Particle.publish ("Hőmérséklet Celsius -ban:", String (cTemp)); Particle.publish ("Hőmérséklet Fahrenheitben:", String (fTemp)); Particle.publish ("Nyomás:", String (nyomás)); Particle.publish ("Relatív páratartalom:", String (páratartalom)); késleltetés (1000); }

5. lépés: Alkalmazások:

Alkalmazások
Alkalmazások

A BME280 hőmérséklet-, nyomás- és relatív páratartalom -érzékelő különféle ipari alkalmazásokat tartalmaz, mint például a hőmérséklet -felügyelet, a számítógép perifériás hővédelme, az ipar nyomásfigyelése. Ezt az érzékelőt alkalmaztuk az időjárás -állomások alkalmazásaiban, valamint az üvegházhatást figyelő rendszerben is.

Egyéb alkalmazások lehetnek:

  1. Kontextus -tudatosság, pl. bőrérzékelés, helyiségváltás észlelése.
  2. Fitness ellenőrzés / közérzet - Figyelmeztetés szárazságra vagy magas hőmérsékletre.
  3. A térfogat és a légáramlás mérése.
  4. Az otthoni automatizálás vezérlése.
  5. Fűtés, szellőzés, légkondicionálás (HVAC) vezérlése.
  6. A dolgok internete.
  7. GPS-javítás (pl. Az első javításhoz szükséges idő javítása, halott számítás, lejtésérzékelés).
  8. Beltéri navigáció (padlóváltás, lift észlelése).
  9. Kültéri navigációs, szabadidős és sport alkalmazások.
  10. Időjárás előrejelzés.
  11. Függőleges sebesség kijelzés (emelkedés/süllyedés sebessége).

6. lépés: Videó bemutató

Tekintse meg oktatóvideónkat, amelyen keresztülhaladhat az interfész és a projekt befejezésének lépésein.

Maradjon velünk a többi érzékelő interfészével és működő blogjával kapcsolatban.

Ajánlott: