DHT22
ID: 36
Kategorie: Module
Menge: 0
Position:

Czujniki wilgotności i temperatury DHT11 i DHT22

DHT11 i DHT22 sÄ… 8-bitowymi, cyfrowymi czujnikami wigotnoÅ›ci i temperatury, komunikujÄ…cym siÄ™ za poÅ›rednictwem interfejsu podobnego do 1 wire.

DHT11 doskonale nadaje siÄ™ do pomiaru tempeatur z zakresu 0ºC do 50ºC oraz wilgotnoÅ›ci powietrza od 20% do 95%RH. Czujnik nie nadaje siÄ™ zatem do pomiaru tempeatur ujmenych, a tym samym nie przyda nam siÄ™ do mierzenia temperatury np. za oknem. Doskonale natomiast sprawdzi siÄ™ w pomiarach w pomieszczeniach zamkniÄ™tych. JeÅ›li chodzi o bÅ‚Ä…d pomiarowy mieÅ›ci siÄ™ w zakresie ±2ºC dla temperatury oraz ±5%RH dla wilgotnoÅ›ci.

JeÅ›li chodzi o DHT22 to ma on już szersze zastosowanie, bowiem potrafi mierzyć temperatury z zakresu -40ºC do 125ºC oraz wilgotnoÅ›ci powietrza od 0% do 100%RH. BÅ‚Ä…d pomiarowy wilgotnoÅ›ci jest taki sam jak w przypadku DHT11, natomiast o wiele dokÅ‚adniejszy jest pomiar temperatury, wynoszÄ…cy ±0.5ºC .

BÅ‚Ä™dy pomiarowe mogÄ… być niższe i w dużej mierze zależą od warunków otoczenia - dokÅ‚adnÄ… tabelÄ™ znajdziedzie w karcie katalogowej tego czujnika.

DHT11

DHT22

 

DHT11 i DHT22 posiadajÄ… wyprowadzone cztery piny, z czego dwa wykorzystane sÄ… do zasilania napiÄ™ciem z zakresu 3.3V do 5.5V (typowe zasilanie to 5V) oraz jeden pin sygnaÅ‚owy, Pobór prÄ…du w trakcie pomiaru może wynieść maksymalnie 2.5mA dla DHT11 i 1.5mA dla DHT22.

       DHT11 DHT22  
  Typ Minimalnie Typowe Maksymalnie Minimalnie Typowe Maksymalnie
NapiÄ™cie zasilania DC 3V 5V 5.5V  3.3V 5V 6V
Pobór prÄ…du Pomiar 0.5mA   2.5mA  1mA   1.5mA
Czuwanie 100uA   150uA 40uA   50uA
Czas pomiaru  Minimalnie 1s   2s  

Schemat połączeń

CaÅ‚a filozofia czujnika ogranicza siÄ™ do podÅ‚Ä…czenia do niego zasilania 5V oraz doprowadzenie pinu sygnaÅ‚owego do mikrokontrolera. Należy również wpiąć rezystor o wartoÅ›ci 10kΩ pomiÄ™dzy pin zasilania VCC, a pin sygnaÅ‚owy DAT. Aby jednak ze sprawiedliwoÅ›ci staÅ‚a siÄ™ zadość, poniżej schemat :)

Program

JedÄ… z wielu dostÄ™pnych, jest biblioteka DHT-sensor-library od Adafruit, która należy rozpakować do katalogu sketchbook/libraries/

  1. bash-4.2$ tree -d ~/sketchbook/libraries/DHT/

  2. /home/santyago/sketchbook/libraries/DHT/

  3. `-- examples

  4.     `-- DHTtester

Program przedstawia się następująco:

  1. #include "DHT.h"          // biblioteka DHT
  2.  
  3. #define DHTPIN 2          // numer pinu sygnałowego
  4. #define DHTTYPE DHT11     // typ czujnika (DHT11). Jesli posiadamy DHT22 wybieramy DHT22
  5.  
  6. DHT dht(DHTPIN, DHTTYPE); // definicja czujnika
  7.  
  8. void setup()
  9. {
  10.   Serial.begin(9600);     // otworzenie portu szeregowego
  11.   dht.begin();            // inicjalizacja czujnika
  12. }
  13.  
  14. void loop()
  15. {
  16.   // Odczyt temperatury i wilgotności powietrza
  17.   float t = dht.readTemperature();
  18.   float h = dht.readHumidity();
  19.  
  20.   // Sprawdzamy czy są odczytane wartości
  21.   if (isnan(t) || isnan(h))
  22.   {
  23.     // Jeśli nie, wyświetlamy informację o błędzie
  24.     Serial.println("Blad odczytu danych z czujnika");
  25.   } else
  26.   {
  27.     // Jeśli tak, wyświetlamy wyniki pomiaru
  28.     Serial.print("Wilgotnosc: ");
  29.     Serial.print(h);
  30.     Serial.print(" % ");
  31.     Serial.print("Temperatura: ");
  32.     Serial.print(t);
  33.     Serial.println(" *C");
  34.   }
  35. }

Alternatywna biblioteka

Jeszcze jednÄ… ciekawÄ… bibliotekÄ… do obsÅ‚ugi czujników DHTxx znajdziesz tutaj. ZostaÅ‚a ona napisana przez Marka Ruysa. Od pierwowzoru różni siÄ™ automatycznym wykrywaniem podpiÄ™tego czujnika, którym może być DHT11DHT22AM2302 oraz RHT03. Dodatkowo biblioteka posiada funkcjÄ™ wyÅ›wietlania temperatury w skali Fahrenheita.

  1. #include "DHT.h"          // biblioteka DHT
  2.  
  3. #define DHTPIN 2          // numer pinu sygnałowego
  4.  
  5. DHT dht;                  // definicja czujnika
  6.  
  7. void setup()
  8. {
  9.   Serial.begin(9600);     // otworzenie portu szeregowego
  10.   dht.setup(DHTPIN);      // inicjalizacja czujnika
  11.   // dht.setup(DHTPIN, DHT11);      // inicjalizacja czujnika DHT11
  12.   // dht.setup(DHTPIN, DHT22);      // inicjalizacja czujnika DHT12
  13. }
  14.  
  15. void loop()
  16. {
  17.   // Miniamalne opóźnienie odczytu
  18.   delay(dht.getMinimumSamplingPeriod());
  19.  
  20.   // Odczyt temperatury i wilgotności powietrza
  21.   float t = dht.getTemperature();
  22.   float h = dht.getHumidity();
  23.  
  24.   // Sprawdzamy poprawność danych
  25.   if (dht.getStatus())
  26.   {
  27.     // Jeśli nie, wyświetlamy informację o błędzie
  28.     Serial.println("Blad odczytu danych z czujnika");
  29.   } else
  30.   {
  31.     // Jeśli tak, wyświetlamy wyniki pomiaru
  32.     Serial.print("Wilgotnosc: ");
  33.     Serial.print(h);
  34.     Serial.print(" % ");
  35.     Serial.print("Temperatura: ");
  36.     Serial.print(t);
  37.     Serial.print(" *C / ");
  38.     Serial.print(dht.toFahrenheit(t));
  39.     Serial.println(" *F ");
  40.   }
  41. }

Uruchomienie

Po przesÅ‚aniu programu do Arduino, możemy Å›ledzić wyniki pomiarów w monitorze portu szeregowego.

 

Materiały dodatkowe

Biblioteka DHT-sensor-library od Adafruit.
Biblioteka arduino-DHT od Marka Ruysa
Mirror bibliotek DHT: http://www.jarzebski.pl/arduino/DHT/
Karta katalogowa czujnika DHT11.pdf
Karta katalogowa czujnika DHT22.pdf