MINIATURA

Kurs Arduino #18: Obsługa czujnika temperatury i wilgotności DHT11/DHT21/DHT22

Cześć,
w tej części kursu przedstawimy obsługę czujnika temperatury i wilgoci DHT11/DHT22. Gorąco zapraszamy :)

Spis treści:

  1. Specyfikacja DHT11 / DHT21 / DHT22
  2. Podstawowe funkcje
  3. Przykładowy program #1: odczyt temperatury i wilgoci
  4. Przykładowy program #2: Łączymy czujnik z LCD HD44780

Co będziemy potrzebować:

 

1. Specyfikacja DHT11 / DHT21 / DHT22

Aby móc prawidłowo korzystać z czujnika musimy poznać jego specyfikację, a prezentuje się ona tak dla następujących czujników:

 Nazwa czujnika DHT11 DHT21 (AM2301) DHT22 (AM2023)
 Zdjęcie  dht-11  DHT21  dht22
Wyprowadzenia: 1-VCC 2-DATA 4-GND VCC DATA GND 1-VCC 2-DATA 4-GND
Napięcia zasilania [V] 3-5,5 3,3-5 3,3-6
Średni pobór prądu [mA] 0,2 1,5 0,2
Temperatura:
Zakres pomiarowy [°C]:
Rozdzielczość [°C]:
Dokładność [°C]:
0-50
1
+/- 1
-40 – +80
0,1
+/- 0,5
-40 – +80
0,1
+/- 0,5
Wilgotność:
Zakres pomiarowy [%RH]:
Rozdzielczość [%RH]:
Dokładność [%RH]:
20-90
1
+/- 4
0-100
0,1
+/- 3
0-100
0,1
+/- 2

Po tabeli możemy zobaczyć, że taki najbardziej podstawowy czujnik to DHT11, gdzie maksymalna temperatura może wynosić 50 stopni Celsjusza. Jego jedyną wadą może być to, że nie zmierzymy wilgotności mniejszej niż 20%RH*. Dokładnością jak i rozdzielczością ten czujnik również nie „grzeszy”. Miernik ten pozwoli nam na zgrubny pomiar, ale jeżeli nie musimy mieć super dokładnych pomiarów (+/- 1 °C i +/- 4%RH) to ten będzie wystarczający. Jeżeli musimy zastosować do niego zasilanie bateryjne to będzie to dobry wybór ze względu na mały pobór prądu.
Kolejny czujnik, DHT21 jest już o wiele dokładniejszy niż poprzednik. Rozdzielczość mierzonych wartości jest 10 razy lepsza. Dokładność w przypadku temperatury wynosi +/- 0,5°C, a wilgotności +/- 3%RH. Jak widzimy to zakres mierzonych wartości jest również poszerzony. Dla temperatury to od -40 do +80 °C, a dla wilgotności 0-100%RH. Nie mniej jednak w tym przypadku dokładność jest okupiona większy poborem prądu.
Ostatni czujnik, DHT22 to jest pewnego rodzaju połączeniem DHT11 i DHT21. Średni pobór prądu wynosi 0,2mA, jak w DHT11, a zakresy pomiarowe jak z DHT21. Jedyna nowość to zwiększona dokładność odczytu wilgotność, która to wynosi +/- 2%RH

Podsumowując jeżeli nie potrzebujemy bardzo dokładnych pomiarów ale mieszczących się blisko rzeczywistych wartości to możemy kupić DHT11, jeżeli zależy nam dużej dokładności to możemy wybrać DHT21/DHT22, które tak na prawdę różnią się obudową i sposobem wyprowadzenia pinów.

RH  to wilgotność względna. Jest to stosunek rzeczywistej wilgoci w powietrzu do maksymalnej jej ilości, którą może utrzymać powietrze w danej temperaturze

2. Podstawowe funkcje

Teraz następuje ta część kursu, gdzie opisujemy podstawowe funkcje dla danego czujnika. Standardowo, dla osobnych bibliotek, musimy dodać je do naszego programu po przez:

Następnie tworzymy instancję funkcji dla czujnika, wokół której będziemy się dzisiaj ruszać:

Jest to ważna część, ponieważ wybrany czujnik determinuje mierzone wartości. Pozornie są to podobne czujniki, ale sposoby przetwarzania danych są diametralnie różne.

Następnie przechodzimy do pętli startowej programu, gdzie będziemy uruchamiać nasz moduł. Jeżeli uważnie czytasz nasze kursy to się już pewnie domyślasz jak będzie wyglądać ta funkcja :) Jeżeli się nie domyślasz to nic nie szkodzi. Funkcja ta, to:

I konfiguracja czujnika jest gotowa. Teraz tylko podam funkcję do odczytu temperatur i wilgoci powietrza.

Odczyt wilgoci:

Odczyt temperatury (stopnie Celsjusza):

Odczyt temperatury (stopnie Fahrenheita):

Na naszej planecie funkcjonuje jeszcze takie pojęcie jak indeks temperatury, który to określa, jaka temperatura powinna być przy danej wartości wilgotności powietrza. Dla naszego czujnika istnieją takie funkcję i wyglądają następująco:

Indeks temperatury dla stopni Celsjusza:

Indeks temperatury dla stopni Fahrenheita:

I to wszystkie funkcje jakie oddaje nam ta biblioteka. Teraz przejdźmy do praktyki.