Sisällysluettelo:

Kosteus-, paine- ja lämpötilalaskenta käyttämällä BME280- ja fotoniliitäntää: 6 vaihetta
Kosteus-, paine- ja lämpötilalaskenta käyttämällä BME280- ja fotoniliitäntää: 6 vaihetta

Video: Kosteus-, paine- ja lämpötilalaskenta käyttämällä BME280- ja fotoniliitäntää: 6 vaihetta

Video: Kosteus-, paine- ja lämpötilalaskenta käyttämällä BME280- ja fotoniliitäntää: 6 vaihetta
Video: Kaasun paineen ja lämpötilan mikroskooppinen tarkastelu 2024, Heinäkuu
Anonim
Kosteus-, paine- ja lämpötilalaskenta BME280- ja fotoniliitäntöjen avulla
Kosteus-, paine- ja lämpötilalaskenta BME280- ja fotoniliitäntöjen avulla

Tapaamme erilaisia projekteja, jotka edellyttävät lämpötilan, paineen ja kosteuden seurantaa. Näin ymmärrämme, että näillä parametreilla on itse asiassa tärkeä rooli arvioitaessa järjestelmän tehokkuutta erilaisissa ilmakehän olosuhteissa. Sekä teollisella tasolla että henkilökohtaisissa järjestelmissä järjestelmän asianmukainen toiminta edellyttää optimaalista lämpötilaa, kosteutta ja ilmanpainetta.

Siksi tarjoamme täydellisen oppaan tästä anturista, tässä opetusohjelmassa selitämme BME280 -kosteus-, paine- ja lämpötila -anturin toimintaa hiukkasfotonilla.

Vaihe 1: BME280 -tutkimus

BME280 etsintä
BME280 etsintä

Elektroniikka on tehostanut peliään BME280 -anturilla, joka on lämpötila -anturi, ilmanpaine ja kosteus! Tämä anturi soveltuu erinomaisesti kaikenlaisiin sää-/ympäristötunnistuksiin, ja sitä voidaan käyttää jopa I2C: ssä.

Tämä tarkkuusanturi BME280 on paras mittausratkaisu kosteuden mittaamiseen ± 3%: n tarkkuudella, ilmanpaineeseen ± 1 hPa: n absoluuttisella tarkkuudella ja lämpötilalle ± 1,0 ° C: n tarkkuudella. Koska paine muuttuu korkeuden mukaan ja painemittaukset ovat niin hyviä, voit käyttää sitä myös korkeusmittarina, jonka tarkkuus on ± 1 metri! paineanturia ja sitä voidaan käyttää myös ympäristön lämpötilan arviointiin. Käyttäjä voi suorittaa mittaukset BME280: lla tai suorittaa ne säännöllisin väliajoin.

Tietolomake: Napsauta esikatsellaksesi tai ladataksesi BME280 -anturin tietolomakkeen.

Vaihe 2: Laitteistovaatimusten luettelo

Laitteistovaatimusten luettelo
Laitteistovaatimusten luettelo

Käytimme täysin Dcube -kauppaosia, koska niitä on helppo käyttää, ja jotain kaikesta, joka sopii hienosti senttimetriseen verkkoon, saa meidät todella liikkeelle. Voit käyttää mitä haluat, mutta kytkentäkaaviossa oletetaan, että käytät näitä osia.

  • BME280 -anturi I²C -moduuli
  • I²C -suoja hiukkasfotonille
  • Hiukkasfotoni
  • I²C -kaapeli
  • Muuntaja

Vaihe 3: Liitäntä

Liitäntä
Liitäntä

Liitäntäosa selittää periaatteessa anturin ja hiukkasfotonin välillä tarvittavat johdotusliitännät. Oikeiden liitosten varmistaminen on perustarve, kun työskentelet minkä tahansa järjestelmän kanssa halutun lähdön saavuttamiseksi. Tarvittavat liitännät ovat siis seuraavat:

BME280 toimii I2C: n yli. Tässä on esimerkki kytkentäkaaviosta, joka osoittaa, miten anturin jokainen liitäntä kytketään. Valmiina levy on määritetty I2C-käyttöliittymälle, joten suosittelemme käyttämään tätä rajapintaa, jos olet muuten agnostikko. Tarvitset vain neljä johtoa! Tarvitaan vain neljä liitäntää Vcc, Gnd, SCL ja SDA, ja ne on kytketty I2C -kaapelin avulla. Nämä yhteydet on esitetty yllä olevissa kuvissa.

Vaihe 4: Lämpötilan, paineen ja kosteuden seurantakoodi

Lämpötilan, paineen ja kosteuden seurantakoodi
Lämpötilan, paineen ja kosteuden seurantakoodi
Lämpötilan, paineen ja kosteuden seurantakoodi
Lämpötilan, paineen ja kosteuden seurantakoodi

Puhdas versio koodista, jota käytämme tämän suorittamiseen, on saatavana TÄSTÄ.

Kun käytät anturimoduulia Arduinon kanssa, sisällytämme hakemistoon application.h ja spark_wiring_i2c.h. "application.h" ja spark_wiring_i2c.h -kirjasto sisältävät toiminnot, jotka helpottavat i2c -tiedonsiirtoa anturin ja hiukkasen välillä.

Napsauta TÄSTÄ avataksesi laitteen seurannan verkkosivun

Lataa koodi taulullesi ja sen pitäisi alkaa toimia! Kaikki tiedot voidaan saada verkkosivulta kuvan osoittamalla tavalla.

Koodi on alla:

// Levitetään vapaaehtoisella lisenssillä. // BME280 // Tämä koodi on suunniteltu toimimaan BME280_I2CS I2C Mini -moduulin kanssa, joka on saatavana osoitteesta ControlEverything.com. #include #include // BME280 I2C -osoite on 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, paine = 0, kosteus = 0; void setup () {// Aseta muuttuja Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Partikkeli.muuttuja ("paine", paine); Partikkeli.muuttuja ("kosteus", kosteus); // Alusta I2C -viestintä MASTER Wire.begin (); // Alusta sarjaliikenne, aseta baudinopeus = 9600 Serial.begin (9600); viive (300); } void loop () {unsigned int b1 [24]; allekirjoittamattomat int -tiedot [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Käynnistä I2C Transmission Wire.beginTransmission (Addr); // Valitse tietorekisteri Wire.write ((136+i)); // Pysäytä I2C -lähetys Wire.endTransmission (); // Pyydä 1 tavu dataa Wire.requestFrom (Addr, 1); // Lue 24 tavua dataa, jos (Wire.available () == 1) {b1 = Wire.read (); }} // Muunna tiedot // lämpötilakerroimet 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); // painekertoimet 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 ++) {// Käynnistä I2C Transmission Wire.beginTransmission (Addr); // Valitse tietorekisteri Wire.write ((225+i)); // Pysäytä I2C -lähetys Wire.endTransmission (); // Pyydä 1 tavu dataa Wire.requestFrom (Addr, 1); // Lue 7 tavua dataa, jos (Wire.available () == 1) {b1 = Wire.read (); }} // Muunna tiedot // kosteuskertoimet 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]; // Käynnistä I2C -lähetys Wire.beginTransmission (Addr); // Valitse tietorekisteri Wire.write (161); // Pysäytä I2C -lähetys Wire.endTransmission (); // Pyydä 1 tavu dataa Wire.requestFrom (Addr, 1); // Lue 1 tavu dataa, jos (Wire.available () == 1) {dig_H1 = Wire.read (); } // Käynnistä I2C -lähetys Wire.beginTransmission (Addr); // Valitse ohjauskosteusrekisteri Wire.write (0xF2); // Kosteus näytteenottotaajuudella = 1 Wire.write (0x01); // Pysäytä I2C -lähetys Wire.endTransmission (); // Käynnistä I2C -lähetys Wire.beginTransmission (Addr); // Valitse ohjausmittausrekisteri Wire.write (0xF4); // Normaalitila, lämpötila ja paine näytteenottotaajuudella = 1 Wire.write (0x27); // Pysäytä I2C -lähetys Wire.endTransmission (); // Käynnistä I2C -lähetys Wire.beginTransmission (Addr); // Valitse määritysrekisteri Wire.write (0xF5); // Valmiusaika = 1000 ms Wire.write (0xA0); // Pysäytä I2C -lähetys Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Käynnistä I2C Transmission Wire.beginTransmission (Addr); // Valitse tietorekisteri Wire.write ((247+i)); // Pysäytä I2C -lähetys Wire.endTransmission (); // Pyydä 1 tavu dataa Wire.requestFrom (Addr, 1); // Lue 8 tavua dataa, jos (Wire.available () == 1) {data = Wire.read (); }} // Muunna paine- ja lämpötilatiedot 19 bitin pituisiksi adc_p = (((pitkä) (data [0] & 0xFF) * 65536) + ((pitkä) (data [1] & 0xFF) * 256) + (pitkä) (data [2] & 0xF0)) / 16; pitkä adc_t = (((pitkä) (data [3] & 0xFF) * 65536) + ((pitkä) (data [4] & 0xFF) * 256) + (pitkä) (data [5] & 0xF0)) / 16; // Muunna kosteustiedot pitkäksi adc_h = ((pitkä) (data [6] & 0xFF) * 256 + (pitkä) (data [7] & 0xFF)); // Lämpötilan poikkeaman laskelmat 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); double t_fine = (pitkä) (var1 + var2); kaksinkertainen cTemp = (var1 + var2) / 5120,0; kaksinkertainen fTemp = cTemp * 1,8 + 32; // Painepoikkeaman laskelmat var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((kaksinkertainen) dig_P6) / 32768.0; var2 = var2 + var1 * ((kaksinkertainen) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((kaksinkertainen) dig_P4) * 65536.0); var1 = ((((kaksinkertainen) dig_P3) * var1 * var1 / 524288.0 + ((kaksinkertainen) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((kaksinkertainen) dig_P1); kaksinkertainen p = 1048576,0 - (kaksinkertainen) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((kaksinkertainen) dig_P9) * p * p / 2147483648.0; var2 = p * ((kaksinkertainen) dig_P8) / 32768.0; kaksinkertainen paine = (p + (var1 + var2 + ((kaksinkertainen)) dig_P7)) / 16,0) / 100; // Kosteuspoikkeaman laskutoimitukset 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))); kaksinkertainen kosteus = var_H * (1,0 - dig_H1 * var_H / 524288.0); if (kosteus> 100,0) {kosteus = 100,0; } muu jos (kosteus <0,0) {kosteus = 0,0; } // Lähtötiedot kojelautaan Particle.publish ("Lämpötila Celsius:", String (cTemp)); Particle.publish ("Lämpötila Fahrenheit:", Jono (fTemp)); Particle.publish ("Paine:", Jono (paine)); Particle.publish ("Suhteellinen kosteus:", Jono (kosteus)); viive (1000); }

Vaihe 5: Sovellukset:

Sovellukset
Sovellukset

BME280 lämpötila-, paine- ja suhteellisen kosteuden anturilla on erilaisia teollisia sovelluksia, kuten lämpötilan valvonta, tietokoneen oheislaitteiden lämpösuojaus, paineenvalvonta teollisuudessa. Olemme myös käyttäneet tätä anturia sääasemasovelluksissa sekä kasvihuoneilmaisujärjestelmässä.

Muita sovelluksia voi olla:

  1. Kontekstitietoisuus, esim. ihon tunnistus, huoneen muutoksen havaitseminen.
  2. Kuntotarkkailu / hyvinvointi - Varoitus kuivuudesta tai korkeista lämpötiloista.
  3. Tilavuuden ja ilmavirran mittaus.
  4. Kotiautomaation ohjaus.
  5. Ohjaa lämmitystä, ilmanvaihtoa, ilmastointia (LVI).
  6. Esineiden internet.
  7. GPS-parannus (esim. Ensimmäiseen korjaukseen kulunut aika, kuolleiden laskeminen, kaltevuuden tunnistus).
  8. Sisäavigointi (lattian muutos, hissin tunnistus).
  9. Ulkona navigointi-, vapaa -ajan- ja urheilusovellukset.
  10. Sääennuste.
  11. Pystysuuntainen nopeusilmoitus (nousu/uppoamisnopeus)..

Vaihe 6: Video -opetusohjelma

Katso opetusvideomme ja käy läpi kaikki vaiheet projektin liittämisessä ja loppuun saattamisessa.

Pysy kuulolla muiden anturien liitäntöjen ja toimivien blogien suhteen.

Suositeltava: