Projekty‎ > ‎

DHT11 a DHT22

Na meranie teploty a vlhkosti v interiéry som vyskúšal známe senzory DHT11 (modrý) a DHT22 (biely). Rozdiel medzi nimi je v rozsahu merania a citlivosti, kde:

  • DHT11 - meria teplotu v rozsahu 0 - 50 stupňov Celzia s presnosťou ±1 °C a vlhkosť v rozmedzí 20 - 90% s presnosťou ±4%
  • DHT22 - umožňuje merať teplotu v rozsahu -40 až +80 stupňov Celzia s presnosťou ±0,5 °C a vlhkosť vzduchu v rozsahu 0 - 100% s presnosťou ±2%.

Senzor má štyri vývody, z toho jeden je nezapojený, dva sú použité na napájanie v rozsahu 3V až 5V a jeden je dátový. Medzi tento dátový výstup a Vcc je doporučené pripojiť pull up rezistor v rozsahu 4,7kΩ - 10kΩ. Dĺžka kábla môže byť až 20 metrov.

senzor čidlo DHT-11 DHT-22 pinout biely modrý 4 vývody pre Arduino projekt

K dispozícii je aj verzia ako modul na malom plošnom spoji s tromi vývodmi. U tohto modulu je už pull up rezistor integrovaný a netreba ho použiť. Ja som ho tam tiež nedával a funguje to. Je tam dokonca na vetve napájania i malý kondenzátor.

Senzor čidlo DHT-11 a DHT-22 pre Arduino projekt na meranie teploty a vlhkosti s 3 vývodmi

Koho by zaujímalo, tak pod tým modrým krytom je 8-bitový mikrokontrolér. Každý snímač tohto modelu je výrobcom teplotne kompenzovaný a kalibrovaný v presnej kalibračnej komore. Kalibračné koeficienty sú uložené ako programy v pamäti OTP, ktoré sa používajú v procese detekcie interného signálu snímača. Snáď to platí i pre senzory nakúpené na čínskych e-shopoch.

otvorený rozobraný modrý senzor čidlo DHT-11 a DHT-22 pre Arduino projekt na meranie teploty a vlhkosti so 4 vývodmi

Pripojenie senzora k Arduinu je pomerne jednoduché. Použil som Arduino Nano a k tomu DHT22 (ten na PCB doske). Vodičmi som prepojil napájanie a dátový vodič som pripojil na pin D2. Miesto pinu D2 na Arduino doske môžeme samozrejme využiť iný voľný dátový pin, ale je nutné túto voľbu vykonať aj v programe.

Fritzing zapojenie biely senzor čidlo DHT-22 a Arduino Nano pre projekt na meranie teploty a vlhkosti s 3 vývodmiFritzing zapojenie biely senzor čidlo DHT-22 a Arduino Nano pre projekt na meranie teploty a vlhkosti so 4 vývodmi a pripojeným pull-up rezistorom

Ďalej bolo potrebné stiahnuť a naimportovať vhodnú knižnicu DHT (návod ako na to je uvedený tu). Knižníc na obsluhu DHT senzorov je samozrejme viac, mne sa najviac pozdávala táto. Program z príkladu je veľmi jednoduchý, namerané hodnoty posiela na sériovú linku v čo najkratších meracích intervaloch.

#include "DHT.h"

DHT dht;

void setup()
{
  Serial.begin(9600);
  Serial.println();
  Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");

  dht.setup(2); // data pin 2
}

void loop()
{
  delay(dht.getMinimumSamplingPeriod());

  float humidity = dht.getHumidity();
  float temperature = dht.getTemperature();

  Serial.print(dht.getStatusString());
  Serial.print("\t");
  Serial.print(humidity, 1);
  Serial.print("\t\t");
  Serial.print(temperature, 1);
  Serial.print("\t\t");
  Serial.println(dht.toFahrenheit(temperature), 1);
}

Najkratší merací interval je podľa typu DHT senzora a rieši to funkcia dht.getMinimumSamplingPeriod(), ktorá vráti hodnotu v milisekundách. Pre DHT11 je to najmenej 1000ms a pre DHT22 je to zas 2000ms. Pri reálnom nasadení dávame čas merania samozrejme väčší, napr. každých 5 až 15 min alebo raz za hodinu.

Výstup z DHT22 na sériovom monitore a zapisovači mám tu:

výstup zo senzora čidla DHT22 na sériovom monitore v Arduino IDE pre projekt na meranie teploty a vlhkosti

výstup zo senzora čidla DHT22 na sériový plotter v Arduino IDE pre projekt na meranie teploty a vlhkosti

Červená je teplota v °C, modrá je vlhkosť a zelená je teplota vo Fahrenheitoch.

Ako ste si určite v programe všimli, tak u tejto knižnici sa nezadáva konkrétny typ DHT senzora. Štandardne je prednastavená na automatickú detekciu senzora, ktorá prebehne pri spustení dht.setup(2). Výhodu to možno má v tom, že keď vymením DHT senzor za iný model, stačí Arduino len reštartovať (resetovať) a meranie funguje ďalej bez potreby upraviť zdrojový program.

Ďalej som vyskúšal pripojiť naraz oba senzory k Arduinu. DHT22 je pripojený na pin 2 a DHT11 na pin 3. Program som poupravil nasledovne:


Program na sériovom monitore zobrazí nasledovné namerané hodnoty pre oba senzory:

výstup zo senzora čidla DHT-11 a DHT-22 na sériovom monitore v Arduino IDE pre projekt na meranie teploty a vlhkosti

Ako vidieť, teplotu ukazujú rovnakú, len tá vlhkosť je u DHT11 nižšia. Odskúšal som to i na druhý deň a rozdiel bol ten istý. Že by blbý kus?

Taktiež presnosť u DHT22 je na desatinné miesto, ale u DHT11 je to len na celé číslo.

fotka fotografia projektu Arduino Nano na meranie teploty a vlhkosti zo senzora čidla DHT-11 a DHT-22 zapojený na nepájivom kontaktnom poli breadboard s prepojovacími vodičmi
Fotka projektu


Na záver len toľko, že DHT22 mi príde lepšia a vhodnejšia ako DHT11, i keď je o málinko drahšia, doporučil by som a použil radšej DHT22. V pláne ju mám použiť do bezdrôtového batériou napájaného Arduino senzora v rámci projektu Home Automation na Raspberry Pi 3. O tom nabudúce.

Vhodné produkty na vytvorenie tohto projektu:

Súbory k stiahnutiu:

  • DHT.ino - zdrojový program pre oba DHT senzory
  • DHT.zip - použitá knižnica v tomto projekte
ċ
DHT.ino
(1k)
Šášik Rastislav,
17. 5. 2017, 10:17
ċ
DHT.zip
(43k)
Šášik Rastislav,
14. 5. 2017, 4:39