Differences
This shows you the differences between two versions of the page.
hu:arduino:humidity [2020/06/20 13:26] |
hu:arduino:humidity [2022/04/21 15:02] () |
||
---|---|---|---|
1: | 1: | ||
+ | ====== Arduino páratartalom-mérés ====== | ||
+ | {{ : | ||
+ | ===== DHT11 / DHT22 szenzor ===== | ||
+ | {{anchor: | ||
+ | {{anchor: | ||
+ | A DHTxx modul egy rezisztív típusú nedvességmérési komponenst és egy NTC hőmérsékletmérő komponenst tartalmaz. A méréseket egy integrált 8 bites mikrokontroller végzi el, mely kalibrált digitális jelkimenetet biztosít. A modul nagy megbízhatósággal és kiváló hosszú távú stabilitással rendelkezik. A DHT22-be az **AM2302** típusú IC került integrálásra. | ||
+ | |||
+ | A DHT22 szenzor nagyon- , míg a DHT11 " | ||
+ | |||
+ | A DHTxx modul lekérdezését egy egyvezetékes soros interfészen keresztül lehet megvalósítani, | ||
+ | |||
+ | ==== Páratartalom-mérő modul ==== | ||
+ | A DHT 11/22 moduloknak két változata van. Az egyiken a kapcsolat kiépítéshez szükséges ellenállás és kondenzátor integrálásra került (pl. **140C80**, **KY-015**, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== Specifikáció ==== | ||
+ | |||
+ | ^jellemző^DHT11^DHT22| | ||
+ | |Tápfeszültség|3.3 ~ 5.5V DC| | ||
+ | |Jelátviteli távolság|maximum 20 m| | ||
+ | |Páratartalom mérési tartomány|20 - 80% RH|0 - 100% RH| | ||
+ | |Páratartalom mérési hibahatár|± 5%|± 2 ~ 5%| | ||
+ | |Hosszú távú stabilitás|< | ||
+ | |Hőmérséklet mérési tartomány|0 - 50 °C|-40 - 125 °C| | ||
+ | |Hőmérséklet mérési hibahatár|± 2%|± 0.5%| | ||
+ | |Felbontás|páratartalom 1% RH, hőmérséklet 1 ℃| | ||
+ | |||
+ | ==== Vezetékezés ==== | ||
+ | {{: | ||
+ | |||
+ | A fenti kötés sémája: \\ | ||
+ | {{: | ||
+ | |||
+ | ==== Szoftver ==== | ||
+ | A szenzort egy Arduino Uno-val teszteltem. A legegyszerűbb módszer a beállítására, | ||
+ | |||
+ | https:// | ||
+ | |||
+ | A könyvtár nem fog lefordulni az alábbi további könyvtár elérése nélkül: | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Szóval, ezt a két könyvtárt a Githubról telepíteni kell (lásd [[hu: | ||
+ | |||
+ | A //" | ||
+ | |||
+ | <hidden A szoftver megjelenítése> | ||
+ | <code c> | ||
+ | #include " | ||
+ | #define DHTPIN 2 // DHT22 pin | ||
+ | |||
+ | // Uncomment whatever type you're using! | ||
+ | //#define DHTTYPE DHT11 // DHT 11 | ||
+ | #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 | ||
+ | //#define DHTTYPE DHT21 // DHT 21 (AM2301) | ||
+ | |||
+ | unsigned long actTime, oldTime = 0; | ||
+ | |||
+ | DHT dht(DHTPIN, DHTTYPE); | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(115200); | ||
+ | Serial.println(" | ||
+ | dht.begin(); | ||
+ | delay(2000); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | actTime = millis(); | ||
+ | if (actTime - oldTime > 2000) { | ||
+ | // time to DHT22 check | ||
+ | oldTime = actTime; | ||
+ | float h = dht.readHumidity(); | ||
+ | float t = dht.readTemperature(); | ||
+ | if (isnan(h) || isnan(t)) { | ||
+ | Serial.println(" | ||
+ | return; | ||
+ | } | ||
+ | float hic = dht.computeHeatIndex(t, | ||
+ | Serial.print(" | ||
+ | Serial.print(h); | ||
+ | Serial.print(" | ||
+ | Serial.print(" | ||
+ | Serial.print(t); | ||
+ | Serial.print(" | ||
+ | Serial.print(" | ||
+ | Serial.print(hic); | ||
+ | Serial.println(" | ||
+ | }; | ||
+ | | ||
+ | delay(10); | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== SI7021, GY-21 modul ===== | ||
+ | {{anchor: | ||
+ | {{anchor: | ||
+ | {{anchor: | ||
+ | |||
+ | ^SI7021 modul^SHT21 (GY-21) modul^SHT21 modul| | ||
+ | |{{: | ||
+ | |||
+ | Ezek olyan páratartalom és hőmérsékletmérő modulok, | ||
+ | * melyek [[hu: | ||
+ | * a HTU21D IC-t integrálják | ||
+ | |||
+ | A modul (elvileg) technikailag az alábbi modulokkal egyezik meg: **HTU21D**, **SHT20**, **SHT21**, **HDC1080**. | ||
+ | |||
+ | ==== Technikai adatok ==== | ||
+ | |||
+ | ^Jellemző^Adat| | ||
+ | |Üzemi feszültség|1.9 .. 3.6 V DC (3,3V ajánlott)| | ||
+ | |Készenléti áram|60nA| | ||
+ | |Hőmérséklettartomány|-40 és 85 °C (-10 .. 60 °C ajánlott)| | ||
+ | |Hőmérséklet pontosság|± 0,4 °C (-10 .. 85 °C)| | ||
+ | |Páratartalom|0-100% relatív páratartalom (20% - 80% relatív páratartalom)| | ||
+ | |Páratartalom pontosság|± 3% relatív páratartalom (0-80% relatív páratartalom)| | ||
+ | |Hőmérséklet-konverziós idő|7ms| | ||
+ | |Páratartalom-konverziós idő|17ms| | ||
+ | |Kommunikáció|[[hu: | ||
+ | |Fix I²C cím|0x40| | ||
+ | |Áthidalható távolság|Nagyjából 1 méter 100 Kbaud esetén, és 6-8 méter 10 Kbaud esetén| | ||
+ | |||
+ | Az IC apró fehér fedele (ha van) egy Politetrafluoretilén (PTFE) membránszűrő. | ||
+ | |||
+ | A kommunikáció összekötése után érdemes az [[hu: | ||
+ | |||
+ | Az Arduino I²C összefoglalása itt található: | ||
+ | |||
+ | <WRAP center round important 80%> | ||
+ | * A modul 3.3V [[hu: | ||
+ | |||
+ | * A modul beépített 4.7 KΩ-os lehúzó ellenállásokkal rendelkezik az [[hu: | ||
+ | |||
+ | * A modul PTFE szűrője lassítja a mérést, de a szűrő eltávolítása a készülék rövidített élettartamát vagy meghibásodását eredményezheti nagyon nedves környezetben. | ||
+ | |||
+ | * A szenzort óvni kell a fizikai / kémiai szennyeződéstől, | ||
+ | </ | ||
+ | |||
+ | ==== Vezetékezés ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== Szoftver ==== | ||
+ | |||
+ | <hidden A szoftver megjelenítése> | ||
+ | <code c> | ||
+ | // source: http:// | ||
+ | #include < | ||
+ | |||
+ | const int ADDR =0x40; | ||
+ | int X0, | ||
+ | double X, | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); | ||
+ | Wire.begin(); | ||
+ | delay(100); | ||
+ | Wire.beginTransmission(ADDR); | ||
+ | Wire.endTransmission(); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | /**Send command of initiating temperature measurement**/ | ||
+ | Wire.beginTransmission(ADDR); | ||
+ | Wire.write(0xE3); | ||
+ | Wire.endTransmission(); | ||
+ | |||
+ | Serial.print(" | ||
+ | Serial.print(" | ||
+ | Serial.println(" | ||
+ | |||
+ | /**Read data of temperature**/ | ||
+ | Wire.requestFrom(ADDR, | ||
+ | |||
+ | if(Wire.available()< | ||
+ | { | ||
+ | X0 = Wire.read(); | ||
+ | X1 = Wire.read(); | ||
+ | X0 = X0<< | ||
+ | X_out = X0+X1; | ||
+ | } | ||
+ | |||
+ | / | ||
+ | X=(175.72*X_out)/ | ||
+ | X=X-46.85; | ||
+ | Serial.print(X); | ||
+ | Serial.print(" | ||
+ | Serial.print(" | ||
+ | |||
+ | /**Send command of initiating relative humidity measurement**/ | ||
+ | Wire.beginTransmission(ADDR); | ||
+ | Wire.write(0xE5); | ||
+ | Wire.endTransmission(); | ||
+ | |||
+ | /**Read data of relative humidity**/ | ||
+ | Wire.requestFrom(ADDR, | ||
+ | if(Wire.available()< | ||
+ | { | ||
+ | Y0 = Wire.read(); | ||
+ | Y2=Y0/ | ||
+ | Y0=Y0%100; | ||
+ | Y1 = Wire.read(); | ||
+ | Y_out1 = Y2*25600; | ||
+ | Y_out2 = Y0*256+Y1; | ||
+ | } | ||
+ | |||
+ | / | ||
+ | Y_out1 = (125*Y_out1)/ | ||
+ | Y_out2 = (125*Y_out2)/ | ||
+ | Y = Y_out1+Y_out2; | ||
+ | Y=Y-6; | ||
+ | Serial.print(Y); | ||
+ | Serial.println(" | ||
+ | | ||
+ | |||
+ | |||
+ | Serial.println(); | ||
+ | delay(1000); | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | </ |