Satura rādītājs:
- 1. darbība: BME280 izpēte
- 2. darbība. Aparatūras prasību saraksts
- 3. darbība: saskarne
- 4. solis: temperatūras, spiediena un mitruma kontroles kods
- 5. darbība. Lietojumprogrammas:
- 6. darbība: video apmācība
Video: Mitruma, spiediena un temperatūras aprēķins, izmantojot BME280 un fotonu saskarni: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Mēs saskaramies ar dažādiem projektiem, kuriem nepieciešama temperatūras, spiediena un mitruma kontrole. Tādējādi mēs saprotam, ka šiem parametriem faktiski ir būtiska nozīme, novērtējot sistēmas darba efektivitāti dažādos atmosfēras apstākļos. Gan rūpnieciskajā, gan individuālajās sistēmās optimālai sistēmas darbībai ir nepieciešams optimāls temperatūras, mitruma un barometriskā spiediena līmenis.
Tāpēc mēs sniedzam pilnīgu apmācību par šo sensoru, šajā apmācībā mēs izskaidrosim BME280 mitruma, spiediena un temperatūras sensora darbību ar daļiņu fotonu.
1. darbība: BME280 izpēte
Elektronikas sektors ir uzlabojis savu spēli ar BME280 sensoru, vides sensoru ar temperatūru, barometrisko spiedienu un mitrumu! Šis sensors ir lieliski piemērots visu veidu laika apstākļu/vides noteikšanai, un to var izmantot pat I2C.
Šis precizitātes sensors BME280 ir labākais sensoru risinājums mitruma mērīšanai ar ± 3% precizitāti, barometrisko spiedienu ar ± 1 hPa absolūtu precizitāti un temperatūru ar ± 1,0 ° C precizitāti. Tā kā spiediens mainās augstumā un spiediena mērījumi ir tik labi, varat to izmantot arī kā altimetru ar ± 1 metru vai labāku precizitāti! Temperatūras sensors ir optimizēts zemākajam trokšņam un visaugstākajai izšķirtspējai un tiek izmantots temperatūras kompensācijai spiediena sensoru, un to var izmantot arī apkārtējās vides temperatūras noteikšanai. Mērījumus ar BME280 var veikt lietotājs vai regulāri.
Datu lapa: Noklikšķiniet, lai priekšskatītu vai lejupielādētu BME280 sensora datu lapu.
2. darbība. Aparatūras prasību saraksts
Mēs pilnībā izmantojām Dcube veikala detaļas, jo tās ir viegli lietojamas, un kaut kas par visu, kas labi iederas centimetru režģī, patiešām mūs aizrauj. Jūs varat izmantot visu, ko vēlaties, taču elektroinstalācijas shēmā tiks pieņemts, ka izmantojat šīs detaļas.
- BME280 sensora I²C mini modulis
- I²C vairogs daļiņu fotonam
- Daļiņu fotons
- I²C kabelis
- Strāvas adapteris
3. darbība: saskarne
Saskarnes sadaļa pamatā izskaidro nepieciešamos vadu savienojumus starp sensoru un daļiņu fotonu. Pareizu savienojumu nodrošināšana ir pamatvajadzība, strādājot pie jebkuras sistēmas vēlamajam rezultātam. Tātad nepieciešamie savienojumi ir šādi:
BME280 darbosies, izmantojot I2C. Šeit ir elektroinstalācijas shēmas piemērs, kas parāda, kā savienot katru sensora saskarni. Plāksne ir konfigurēta I2C saskarnei, tāpēc iesakām izmantot šo saskarni, ja citādi esat agnostiķis. Viss, kas Jums nepieciešams, ir četri vadi! Nepieciešami tikai četri savienojumi Vcc, Gnd, SCL un SDA, un tie ir savienoti, izmantojot I2C kabeli. Šie savienojumi ir parādīti iepriekš redzamajos attēlos.
4. solis: temperatūras, spiediena un mitruma kontroles kods
Koda tīrā versija, kuru mēs izmantosim, lai to palaistu, ir pieejama ŠEIT.
Izmantojot sensoru moduli ar Arduino, mēs iekļaujam bibliotēku application.h un spark_wiring_i2c.h. Bibliotēkā "application.h" un spark_wiring_i2c.h ir funkcijas, kas atvieglo i2c komunikāciju starp sensoru un daļiņu.
Noklikšķiniet ŠEIT, lai atvērtu tīmekļa lapu ierīces uzraudzībai
Augšupielādējiet kodu savā panelī, un tam vajadzētu sākt darboties! Visus datus var iegūt tīmekļa vietnē, kā parādīts attēlā.
Kods ir norādīts zemāk:
// Izplatīts ar brīvās gribas licenci. // BME280 // Šis kods ir paredzēts darbam ar BME280_I2CS I2C mini moduli, kas pieejams vietnē ControlEverything.com. #include #include // BME280 I2C adrese ir 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, spiediens = 0, mitrums = 0; void setup () {// Iestatīt mainīgo Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Daļiņa.mainīgais ("spiediens", spiediens); Daļiņa.mainīgais ("mitrums", mitrums); // Inicializēt I2C komunikāciju kā MASTER Wire.begin (); // Inicializēt seriālo komunikāciju, iestatīt pārraides ātrumu = 9600 Serial.begin (9600); kavēšanās (300); } void loop () {unsigned int b1 [24]; neparakstīti int dati [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Atlasiet datu reģistru Wire.write ((136+i)); // Stop I2C Transmission Wire.endTransmission (); // Pieprasīt 1 baitu datu Wire.requestFrom (Addr, 1); // Lasīt 24 baitus datu, ja (Wire.available () == 1) {b1 = Wire.read (); }} // Pārvērst datus // temp koeficienti 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); // spiediena 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 ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Atlasiet datu reģistru Wire.write ((225+i)); // Stop I2C Transmission Wire.endTransmission (); // Pieprasīt 1 baitu datu Wire.requestFrom (Addr, 1); // Izlasiet 7 baitus datu, ja (Wire.available () == 1) {b1 = Wire.read (); }} // Pārvērst datus // mitruma koeficienti int dig_H2 = b1 [0] + (b1 [1] * 256); int dig_H3 = b1 [2] un 0xFF; int dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF); int dig_H5 = (b1 [4] / 16) + (b1 [5] * 16); int dig_H6 = b1 [6]; // Start I2C Transmission Wire.beginTransmission (Addr); // Atlasīt datu reģistru Wire.write (161); // Stop I2C Transmission Wire.endTransmission (); // Pieprasīt 1 baitu datu Wire.requestFrom (Addr, 1); // Lasīt 1 baitu datu, ja (Wire.available () == 1) {dig_H1 = Wire.read (); } // Sākt I2C Transmission Wire.beginTransmission (Addr); // Atlasiet vadības mitruma reģistru Wire.write (0xF2); // Mitrums virs izlases ātruma = 1 Wire.write (0x01); // Stop I2C Transmission Wire.endTransmission (); // Start I2C Transmission Wire.beginTransmission (Addr); // Atlasiet vadības mērījumu reģistru Wire.write (0xF4); // Normālais režīms, temperatūra un spiediens virs paraugu ņemšanas ātruma = 1 Wire.write (0x27); // Stop I2C Transmission Wire.endTransmission (); // Start I2C Transmission Wire.beginTransmission (Addr); // Izvēlieties konfigurācijas reģistru Wire.write (0xF5); // Gaidīšanas gaidīšanas laiks = 1000 ms Wire.write (0xA0); // Stop I2C Transmission Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Atlasiet datu reģistru Wire.write ((247+i)); // Stop I2C Transmission Wire.endTransmission (); // Pieprasīt 1 baitu datu Wire.requestFrom (Addr, 1); // Izlasiet 8 baitus datu, ja (Wire.available () == 1) {data = Wire.read (); }} // Pārvērst spiediena un temperatūras datus par 19 bitiem gariem garš) (dati [2] un 0xF0)) / 16; garš adc_t = (((garš) (dati [3] un 0xFF) * 65536) + ((garš) (dati [4] un 0xFF) * 256) + (garš) (dati [5] un 0xF0)) / 16; // Pārvērst mitruma datus garus adc_h = ((garš) (dati [6] & 0xFF) * 256 + (gari) (dati [7] un 0xFF)); // Temperatūras nobīdes aprēķini double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); dubultā var2 = (((((dubultā)) adc_t) / 131072.0 - ((dubultā) dig_T1) / 8192.0) * (((dubultā) adc_t) /131072.0 - ((dubultā) dig_T1) / 8192.0)) * ((dubultā) dig_T3); double t_fine = (garš) (var1 + var2); dubultā cTemp = (var1 + var2) / 5120,0; dubultā fTemp = cTemp * 1,8 + 32; // Spiediena nobīdes aprēķini var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dubultā) dig_P6) / 32768.0; var2 = var2 + var1 * ((dubultā) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dubultā) dig_P4) * 65536.0); var1 = ((((dubultā)) dig_P3) * var1 * var1 / 524288.0 + ((dubultā) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dubultā) dig_P1); dubultā p = 1048576,0 - (dubultā) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dubultā) dig_P9) * p * p / 2147483648.0; var2 = p * ((dubultā) dig_P8) / 32768.0; dubultspiediens = (p + (var1 + var2 + ((dubultā)) dig_P7)) / 16,0) / 100; // Mitruma nobīdes aprēķini 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))); divkāršs mitrums = var_H * (1,0 - dig_H1 * var_H / 524288.0); ja (mitrums> 100,0) {mitrums = 100,0; } cits ja (mitrums <0,0) {mitrums = 0,0; } // Izejas dati informācijas panelī Particle.publish ("Temperatūra pēc Celsija:", String (cTemp)); Particle.publish ("Temperatūra pēc Fārenheita:", String (fTemp)); Particle.publish ("Spiediens:", Stīga (spiediens)); Particle.publish ("Relatīvais mitrums:", String (mitrums)); kavēšanās (1000); }
5. darbība. Lietojumprogrammas:
BME280 temperatūras, spiediena un relatīvā mitruma sensoram ir dažādi rūpnieciski pielietojumi, piemēram, temperatūras uzraudzība, datora perifērijas termiskā aizsardzība, spiediena kontrole rūpniecībā. Šo sensoru esam izmantojuši arī meteoroloģisko staciju lietojumos, kā arī siltumnīcas novērošanas sistēmā.
Citi lietojumi var ietvert:
- Konteksta apzināšanās, piem. ādas noteikšana, telpas maiņas noteikšana.
- Fitnesa uzraudzība / labsajūta - brīdinājums par sausumu vai augstu temperatūru.
- Tilpuma un gaisa plūsmas mērīšana.
- Mājas automatizācijas vadība.
- Kontrolējiet apkuri, ventilāciju, gaisa kondicionēšanu (HVAC).
- Lietu internets.
- GPS uzlabošana (piemēram, laika uzlabošana līdz pirmajam labojumam, mirušo aprēķināšana, slīpuma noteikšana).
- Navigācija iekštelpās (grīdas maiņas noteikšana, lifta noteikšana).
- Āra navigācijas, atpūtas un sporta lietojumprogrammas.
- Laika prognoze.
- Vertikālā ātruma indikācija (pieauguma/nogrimšanas ātrums).
6. darbība: video apmācība
Noskatieties mūsu video pamācību, lai izietu visas projekta saskarnes un pabeigšanas darbības.
Sekojiet līdzi citu sensoru saskarnes un darba emuāriem.
Ieteicams:
Gaismas intensitātes aprēķins, izmantojot BH1715 un daļiņu fotonu: 5 soļi
Gaismas intensitātes aprēķins, izmantojot BH1715 un daļiņu fotonu: Vakar mēs strādājām pie LCD displejiem, un, strādājot pie tiem, mēs sapratām gaismas intensitātes aprēķina nozīmi. Gaismas intensitāte ir svarīga ne tikai šīs pasaules fiziskajā jomā, bet tai ir labi teikta loma bioloģiskajā
Temperatūras un mitruma kontrole, izmantojot SHT25 un daļiņu fotonu: 5 soļi
Temperatūras un mitruma kontrole, izmantojot SHT25 un daļiņu fotonu: Mēs nesen esam strādājuši pie dažādiem projektiem, kuriem bija nepieciešama temperatūras un mitruma kontrole, un tad mēs sapratām, ka šiem diviem parametriem faktiski ir izšķiroša nozīme, novērtējot sistēmas darba efektivitāti. Gan Indijā
Mitruma un temperatūras mērīšana, izmantojot HIH6130 un daļiņu fotonu: 4 soļi
Mitruma un temperatūras mērīšana, izmantojot HIH6130 un daļiņu fotonu: HIH6130 ir mitruma un temperatūras sensors ar digitālo izeju. Šie sensori nodrošina precizitātes līmeni ± 4% RH. Ar nozarē vadošo ilgtermiņa stabilitāti, patiesu temperatūras kompensētu digitālo I2C, nozares vadošo uzticamību, energoefektivitāti
Temperatūras un mitruma mērīšana, izmantojot HDC1000 un daļiņu fotonu: 4 soļi
Temperatūras un mitruma mērīšana, izmantojot HDC1000 un daļiņu fotonu: HDC1000 ir digitāls mitruma sensors ar integrētu temperatūras sensoru, kas nodrošina izcilu mērījumu precizitāti ar ļoti mazu jaudu. Ierīce mēra mitrumu, pamatojoties uz jaunu kapacitatīvo sensoru. Mitruma un temperatūras sensori ir
Mitruma un temperatūras mērīšana, izmantojot HTS221 un daļiņu fotonu: 4 soļi
Mitruma un temperatūras mērīšana, izmantojot HTS221 un daļiņu fotonu: HTS221 ir īpaši kompakts kapacitatīvs digitālais sensors relatīvajam mitrumam un temperatūrai. Tas ietver sensora elementu un jauktu signālu lietojumprogrammu integrētu shēmu (ASIC), lai sniegtu mērījumu informāciju, izmantojot ciparu sērijas