Zadatak
Na Arduino pločicu spojimo DHT11 senzor vlažnosti i temperature, LCD 16×2 i potenciometar od 10 KΩ za upravljanje pozadinskim osvjetljenjem kao što je prikazano na slici ispod. Napišimo program koji će u prvom redu ispisati izmjerenu vrijednost vlažnosti izraženu u postocima a u drugom redu izmjerenu temperaturu izraženu u stepenima celzijusa.
Komponente:
- 1 * Arduino UNO R3 mikrokontroler,
- 1 * USB kabal,
- 1 * Eksperimentalna pločica,
- 1 * DHT11 senzor vlažnosti i temperature,
- 1 * LCD 1602,
- 1 * Potenciometar 10 KΩ,
- 19 * Kratkospojničke žice (muško-muške)
DHT11 i DHT22 senzor vlažnosti i temperature
DHT11 i DHT22 su iste vrste senzora s nekim razlikama u izvedbi. Oba koriste kapacitivne senzore vlažnosti i termistore za mjerenje relativne vlažnosti i temperature okoline.
Senzor | DHT11 | DHT22 |
Izgled | ![]() | ![]() |
Raspon temperature | 0 – 50o C | -40 – 80o C |
Tačnost temperature | ±2o C | ±0,5o C |
Raspon vlažnosti | 20 – 90% | 0 – 100% |
Tačnost vlažnosti | 5% | 2% |
Rezolucija | Vlažnost: 1% | Vlažnost: 0,1% |
DHT22 je skuplji, što znači da je sposobniji od DHT11. DHT22 može mjeriti temperature od -40o do +80o C s ±0,5o tačnosti, dok DHT11 može mjeriti od 0o do 50o C s ±2o tačnosti.
Također, senzor DHT22 ima bolji senzor vlažnosti koji može mjeriti relativnu vlažnost od
0 do 100% s 2% tačnosti, dok DHT11 može mjeriti od 20 do 80% s 5% tačnosti.
Za očitavanje vlažnosti, DHT11 ima otpornu komponentu koja ima dvije elektrode i supstrat koji zadržava vlagu između njih. Kada podloga koja apsorbuje vodenu paru prisutnu u zraku, oslobađa ione koji povećavaju provodljivost između dvije elektrode.
Promjena otpora između dvije elktrode obrnuto je proporcionalna relativnoj vlažnosti. Kada se vlažnost u zraku poveća, otpor između elektroda se smanjuje, a kada se vlažnost smanji, otpor između elektroda se poveća.
DHT11 ima NTC termistor za mjerenje temperature. Termistor je toplotni otpornik čiji je otor jako ovisi o temperature. Izraz “NTC” znači “negativan temperaturni koeficijent” što znači da njegova otpornost opada s povećeanjem temperature.
Senzor dolazi s 14-pinskim, 8-bitnim mikrokontrolerom koji pretvara analogne podatke sa senzora vlažnosti i termistora u digitalne vrijednosti. Generiše digitalni signal koji sadrži vrijednosti relativne vlažnosti, tempearature i bajt kontrolne sume.
Apsolutna vlažnost naspram relativne vlažnosti
DHT11 i DHT22 mogu mjeriti samo relativnu vlažnost. Apsolutna vlažnost je ukupna masa vodene pare prisutna u određenom volumenu ili masi zraka. Ne uzima u obzir temperature. S druge strane, relativna vlažnost je omjer količine vodene pare u zraku i količine vodene pare koju zrak potencijalno može sadržavati na određenoj temperaturi.
Formula za izračunavanje relativne vlažnosti je:
Gdje je:
RH-relativna vlažnost,
pw-gustoća vodene pare pri određenoj temperaturi,
ps-gustoća vodene pare pri zasićenju na toj temperature.
Relativna vlažnost se izražava u postocima, tako da 0% relativne vlažnosti znači da je zrak potpuno suh, a 100% relativne vlažnosti znači da dolazi do kondenzacije.
Pinovi DHT11 i DHT22
![](https://stemlab.ba/wp-content/uploads/2023/12/10.jpg)
VCC pin osigurava napajanje senzora. Unatoč činjenici da se napon napajanja kreće
od 3,3 V do 5,5 V, preporučuje se napajanje od 5 V. Uz napajanje od 5 V, senzor se može postaviti do 20 metara udaljenosti. Uz napon napajanja od 3,3 V, senzor se može postaviti do 1 metar udaljenosti, inače će pad napona uzrokovati greške u mjerenju.
Data pin služi za komunikaciju između senzora i mikrokontrolera.
NC pin nije spojen.
GND je kontakt za uzemljenje.
Postupak
1. Izgradite sklop
![](https://stemlab.ba/wp-content/uploads/2023/12/10-1.jpg)
2. Program
/***********************************************************
Senzor vlažnosti i temperature DHT11 i LCD 1602
STEM Lab
***********************************************************/
#include <dht11.h> // Biblioteka DHT11
#include <LiquidCrystal.h> // Biblioteka LCD 1602
dht11 DHT11;
#define DHT11PIN 5 // Inicijalizacija senzora DHT11 (pin 5)
LiquidCrystal lcd(6, 7, 8, 9, 10, 11);
void setup() {
lcd.begin(16, 2); // Postavite broj kolona i redova na LCD-u
lcd.clear(); // Izbrišite LCD displej i postavite kursor u gornji lijevi ugao
delay(1000); // Kašnjenje 1000 ms
}
void loop() {
int chk = DHT11.read(DHT11PIN);
lcd.setCursor(0, 0); // Postavite kursor na kolonu 0, red 0
lcd.print("Vlaznost:"); // Ispišite poruku "Vlaznost:" na LCD-u
lcd.print((float)DHT11.humidity, 2); // Ispišite vrijednost izmjerene vlažnosti
lcd.print(" % "); // Ispišite jedinicu za izražavanje postotka vlažnosti (% - postotak)
lcd.setCursor(0, 1); // Postavite kursor na kolonu 0, red 1
lcd.print("Temp: "); // Ispišite poruku "Temp:" na LCD-u
lcd.print((float)DHT11.temperature, 2); // Ispišite vrijednost izmjerene temperature
lcd.print(" C "); // Ispišite jedinicu za izražavanje temperature (C - Celzijus)
delay(1000); // Kašnjenje 1000 ms
}
3. Prenesite program na Arduino UNO pločicu.