DHT11 czy DHT22, różnice w oprogramowaniu i funkcjonalności

5/5 - (2 votes)

Kupując kiedyś podzespoły z internetowym znajomym, o wdzięcznej ksywce „browar” pokusiłem się na zakup sensora DHT11 uzbrojonego w niewielkie PCB – Temperature and Relative Humidity Sensor Module. Układ wydawał się nieskomplikowany w obsłudze, po wyszukaniu materiałów i przyjżeniu się specyfikacji przygotowanej przez producenta okazało się że rządzi się „swoim” dwukierunkowym, jednożyłowym, szeregowym, protokołem komunikacji. Więc przystając do najlepszej tezy na świecie – lenistwo matką wynalazków (wynalazców), zacząłem ostro maltretować wuja google, w poszukiwaniu czegokolwiek na jego temat, najlepiej gotowego kawałka kodu z oprogramowaną komunikacją. Działo się to gdzieś w styczniu 2013 roku. W tamtym czasie odkryłem rewelacyjną witrynę konstruktora „exersizze” – Виктор  Пондин. Polecam wszystkim z uwagi na to, że przedstawia na przykładach oprogramowaną komunikację w Bascom AVR z różnymi wynalazkami. Poza tym jest przesympatycznym majsterkowiczem. 😉

moduł z DHT11

Wracajmy do tematu.

Te dwa sensory służą do bardziej lub mniej dokładnych pomiarów temperatury oraz względnej wilgotności powietrza w otoczeniu. Zasadniczo różnica polega na tym, że DHT22 w odniesieniu do DHT11 dokonuje pomiarów w szerszym zakresie z większą dokładnością i rozdzielczością. Koniec różnic, protokół komunikacji jest identyczny. Z tytułu zakresu pomiarów i rozdzielczości dane odczytane z DHT22 w odniesieniu do DHT11 należy poddać innej „obróbce”, natomiast wielkość odbieranych słów i ilość bitów jest identyczna.
Tak, że jeśli ktoś umie obsłużyć jeden w swoim systemie µC, to z drugim sobie też da radę. Szczegóły opisałem w moim nowym artykule -> sensor DHT11 DHT21 odczyt danych.

Generalnie DHT11 potrafi dokonywać pomiaru temperatury w zakresie 0-50°C oraz wilgotności w zakresie 20-90%RH, z rozdzielczością równą 1. Dokładność pomiarów dla temperatury wynosi ±2°C a dla wilgotności ±5%RH, co jest zupełnie wystarczające w zastosowaniach pomiaru i wskazań warunków pomieszczeń użytkowych lub mieszkalnych.

specyfikacja sensora DHT11

specyfikacja sensora AM2301

specyfikacja sensora AM2302 = DHT22

Natomiast DHT22 jest już dużo więcej „precyzyjny” oczywiście w porównaniu do poprzednika, bo to żaden „przyrząd laboratoryjny” nie jest.
Temperaturę zmierzy w zakresie -40°C do 80°C, z rozdzielczością 0,1 i dokładnością ±0,3 z tym, że producent podaje maksymalny błąd o wielkości ±1 w związku z czym podaną rozdzielczość właśnie trafia szlag. Powtarzalność wyniku ma wynosić ±0,2 😉 upływność w skali roku ma zmieścić się w zakresie ±0,3°C.
Pomiaru wilgotności dokona w zakresie od 0 do 99,9%RH z dokładnością ±3%RH, z powtarzalnością ±1%RH. Upływność ma być mniejsza niż 0,5%RH na rok.

Wędrując po różnych forach, nie raz czytałem opinie „młodych ludzi” jak to wykrzykują w niebiosa, że DHT11 to zabawka, i wolą dokładniejszy i lepszy DHT22. Co dla mnie jest przezabawne i świadczy o tych ludkach nie najlepiej. Gdyż przyglądając się danym katalogowym, zarówno jeden jak i drugi obarczony jest sporym błędem pomiaru i można powiedzieć, że co z tego że DHT22 podaje wyniki z dokładnością jednego miejsca po przecinku jak pomiar ma duży rozrzut i małą powtarzalność. Zabawne jest również to, jak te osoby odczytują kilkadziesiąt próbek w przeciągu kilku sekund, dla czujnika w pomieszczeniu mieszkalnym. Czy te środowisko, aż tak dynamicznie się zmienia aby to było konieczne ….

Wracam do sprawców zamieszania.

DHT11 wizerunekW nocie czujnika dodatkowo przeczytamy:

zalecana długość kabla do 20m, pull-up 5kΩ
po załączeniu zasilania 3-5,5V poczekać na przekroczenie stanu niestabilności 1s.
Można zwiększyć kondensator pomiędzy pinami zasilania (Vdd, GND) do 100nF.

na dużych odległościach polecają przewód komunikacyjny ekranowany. Rodzina sensorów jest obfita w modele, które generalnie różnią się dokładnością pomiarów i ich powtarzalnością. DHT11, SHT11, DHT22, AM2301, AM2302, AM2303.

Proces komunikacji:
Interfejs szeregowy (Single-Wire Two-Way), format danych Single-bus jest używany do komunikacji i synchronizacji między µC i czujnikiem DHT11. Jeden cykl komunikacji trwa około 4ms. Z tego tytułu że pin raz jest wyjściem a za moment staje się wejściem, niezbędne jest w trakcie działania programu µC zmienianie konfiguracji pinu, który wybrany został do komunikacji. W tym celu korzystamy z  – DRD, to rejestr odpowiedzialny za konfigurację pinów IO, zapisy równoznaczne z np Config Pind.1 = Output/Input.
Odebrany ciąg danych składa się z części integralnych (jednostek + dziesiątek) oraz dziesiętnych.
Pełna transmisja danych zawiera 40 bitów, a czujnik wysyła pierwsze bity o wadze HIGH (starsze).
Format danych: 8bitów całkowita RH + 8 bitów dziesiętne RH + 8 bitów całkowita T + 8 bitów dziesiętne T + 8 bitów sumy kontrolnej.
Jeśli transmisja przebiegła prawidłowo suma kontrolna powinna być równa sumie odebranych bajtów danych, „8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data”.

sposób podłaczenia sensora z µC


Prezentacja wyników pomiarów z różnych typów czujników http://kaktusa.pl/monitor-temperatury-wskaznik-tendencji/


Załączam noty katalogowe różnych producentów, które udało mi się znaleźć w internecie:

Nota katalogowa AM2301.pdf (3825 pobrań )
Nota katalogowa AM2302.pdf (3853 pobrania )
Nota katalogowa AM2303.pdf (4047 pobrań )
Nota katalogowa DHT11.pdf (3721 pobrań )
Nota katalogowa DHT11-1.pdf (3401 pobrań )
Nota katalogowa DHT22.pdf (3216 pobrań )

Otagowano , , , , , , , .Dodaj do zakładek Link.

2 odpowiedzi na „DHT11 czy DHT22, różnice w oprogramowaniu i funkcjonalności

  1. betty komentarz:

    Witam,
    Możesz to wyjaśnić?
    „Ciąg danych składa się z części integralnych (jednostek + dziesiątek) oraz dziesiętnych.”

    • kaktus komentarz:

      Oczywiście, że mogę wyjaśnić 😉
      Pewno przez to, że nawias wtrąciłem zbiło Cię to z tropu. Gdybym napisał tak -> Ciąg danych składa się z części integralnych oraz dziesiętnych, (jednostek + dziesiątek). było by jaśniej?
      Generalnie chodzi o to, że dla przykładu : liczba 24 przesyłana jest w dwóch bajtach najpierw bajt z dwójką (2) a po nim bajt z czwórką (4), itd. Gdy to poskładamy wyjdzie 24. W tekście poniżej tego stwierdzenia jest szczegółowy opis, więc powinno się rozjaśnić 😉
      Przy okazji zapytam się Ciebie, jak myślisz powielić gotowe kody Bascom z komunikacją, czy ten link do forum jest wystarczający?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

16 − dziesięć =

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.