Najważniejszym elementem urządzenia jest układ scalony DHT11. Zawiera on w swojej strukturze sensor wilgotności, termistor NTC do pomiaru temperatury, przetwornik A/C i obwody sterujące. Podzespoły te są kalibrowane na linii produkcyjnej, co zdejmuje z konstruktora przykry obowiązek wykonania tej czynności, a niska cena (ok. 10...12 złotych) i duża popularność dodatkowo predestynują go do tej konstrukcji.
W handlu dostępne są same czujniki (mające postać niebieskiej kostki z czterema wyprowadzeniami) oraz całe moduły zawierające ten czujnik. Ten drugi wariant nie jest dla nas interesujący z racji przystosowania płytki drukowanej do montażu i obróbki sygnału z "gołego" czujnika. Podstawowe parametry układu DHT11 umieszczono w tabeli 1.
Nawet pobieżna analiza parametrów dyskwalifikuje ten podzespół do jakichkolwiek zastosowań stricte pomiarowych ze względu na niską dokładność. Z tego powodu, higrometr ten służyć może jedynie jako efektowna ozdoba pomieszczenia; nie można na podstawie jego wskazań podejmować decyzji mających wpływ na zdrowie i życie.
Omówienie schematu
Schemat higrometru binarnego pokazano na rysunku 1. Do komunikacji z DHT11 służy popularny mikrokontroler z rodziny AVR - Attiny2313. Do jego wyjść dołączonych jest siedem diod LED, które służą prezentacji wyniku pomiaru. Drabinka rezystorowa RN2 ogranicza prąd przez nie płynący, zaś drabinka RN1 ustala potencjały nieużywanych wyjść; dzięki temu, wykonywanie programu nie zostanie zakłócone wskutek np. osadzania się na nich ładunków elektrostatycznych. Rezystor R1 i kondensator C4 odpowiadają za podanie na wejście zerowania poziomu niskiego przez chwilę od włączenia zasilania. Ten prosty zabieg znacząco redukuje ryzyko wystąpienia nieprawidłowości w inicjacji programu.
Rezystor R2 jest elementem zalecanym przez producenta. Ułatwia on układowi DHT11 wprawienie linii komunikacyjnej w stan wysoki. Miniaturowy switch S1 nie jest elementem obowiązkowym - jego wciśnięcie spowoduje wyświetlanie zmierzonej przez czujnik temperatury powietrza, o czym dalej.
Montaż i uruchomienie
Cały układ elektroniczny został zmontowany na jednostronnej płytce drukowanej o wymiarach 102 mm×40 mm, której schemat montażowy pokazano na rysunku 2. Jej szerokość odpowiada szerokości płytki dwupunktowego termometru binarnego, przez co mogą zostać umieszczone jedna nad drugą.
Wszystkie komponenty są przeznaczone do montażu przewlekanego. Pod mikrokontroler należy zastosować podstawkę. Kondensatory C2 i C4 należy wlutować w taki sposób, aby było możliwe położenie ich na powierzchni płytki; tak samo jak układu DHT11. Diody LED powinny zostać wlutowane z zachowaniem odpowiedniego dystansu od płytki. W układzie modelowym odległość ta wynosi 12 mm.
Mikrokontroler należy zaprogramować bez zmieniania fabrycznych (domyślnych) ustawień bitów zabezpieczających, tj. ich konfiguracja powinna być taka, jak w układach opuszczających linię produkcyjną. Po włożeniu go w podstawkę urządzenie jest gotowe do pracy i nie wymaga żadnych czynności uruchomieniowych. Zasilanie napięciem stałym, dobrze filtrowanym, niekoniecznie stabilizowanym, o wartości z przedziału 4,5...5 V. Pobór prądu zależy od liczby włączonych diod LED i nie przekracza 30 mA.
Po włączeniu zasilania, diody wskazują aktualną wilgotność względną odniesioną do stanu nasycenia w procentach. Odczyt następuje zgodnie z zasadą działania binarnego systemu liczbowego. Przykład ilustruje rysunek 3; dioda załączona reprezentuje "1", wyłączona "0". Wciśnięcie przycisku S1 spowoduje wyświetlanie temperatury tak długo, jak długo pozostaje on wciśnięty.
Dla dociekliwych
Na listingu 1 zamieszczono program sterujący pracą higrometru. Został napisany w języku C i skompilowany w środowisku Win AVR. Na uwagę zasługuje fakt, iż protokół, jakim odbywa się komunikacja z układem DHT11, ponieważ nie jest w żadnym stopniu zgodny np. ze znanym protokołem 1-Wire obsługiwanym przez czujniki temperatury DS18B20. Ten protokół jest prostszy, za to ma sporo ograniczeń.
Do jednego wyprowadzenia mikrokontrolera może być dołączony tylko jeden czujnik. Ponadto, nie ma możliwości zasilania czujnika z linii danych (tzw. parasite power). Cała obsługa, zarówno DHT11, jak i DHT22 różniącego się koniecznością odczytywania części dziesiętnych wyniku pomiaru i lepszą dokładnością, została skupiona w dwóch niewielkich funkcjach - po zmianie niezbędnych parametrów można ich z powodzeniem użyć we własnych opracowaniach, do czego zachęcam.
Rysunek 4 to oscylogram pokazujący komunikację z układem DHT11. Został on podzielony na fragmenty, by ułatwić jego analizę. Przed pierwszym segmentem na linii panuje poziom niski wymuszony przez mikrokontroler. W nim znajduje się krótkotrwałe wymuszenie stanu wysokiego, które jest zakłócone przez natychmiastową odpowiedź DHT11: jego odpowiedzią jest natychmiastowe wystawienie stanu niskiego, a potem wysokiego, obydwa przez 80 ms. Z tego powodu zbocze opadające jest zniekształcone, lecz skrócenie czasu wystawiania stanu wysokiego byłoby niezgodne z zaleceniami producenta. Segment drugi zawiera poziom wysoki, który na linii wystawił DHT11 przez czas 80 ms. Po nim następuje transmisja 5 bajtów. W segmencie trzecim jest zawarty pierwszy bajt niosący informację o wilgotności. Impulsy szersze to "jedynki", zaś węższe to "zera". Segment czwarty to drugi bajt, który w DHT22 zawiera części dziesiąte wskazania wilgotności; w DHT11 jest on zawsze wypełniony zerami. Kolejne dwa segmenty to odpowiednio: temperatura w stopniach Celsjusza i części dziesiąte tejże. Ostatni bajt, widoczny w siódmym segmencie, to suma kontrolna, nieużywana w tym projekcie. Po odczekaniu ok. 1,5 s, cykl zaczyna się na nowo.
Zgodność zaobserwowanych przebiegów z faktycznymi wskazaniami jest uwidoczniona na fotografii 5. Pierwsze dwie "górki" to nawiązanie komunikacji z czujnikiem, po nich następuje odpowiedź. Pierwszy bit zawsze będzie "zerem", gdyż reprezentuje on liczbę 128, zaś zmierzenie przez czujnik wilgotności 128% RH jest niemożliwe. Następne bity to coraz niższe wartości: 64 (zerowy, lewa skrajna dioda wyłączona), 32 i 16 (szerszy impuls odpowiada "jedynce", diody są włączone) i tak dalej. W ten sposób można odczytać, że powietrze w tym pomieszczeniu ma wilgotność 50% RH.
W pomieszczeniach mieszkalnych, wartość ta winna zawierać się w granicach 40-60% RH przy założonej temperaturze 18-20°C. Wilgotność względna jest prostym, lecz jednocześnie użytecznym parametrem; stanowi informację o ilości zawartej w powietrzu wilgoci w stosunku do ilości, która w danej temperaturze powodowałaby skraplanie się pary wodnej.
Bibliografia:
http://wentylacja.org.pl/pages-78.html
http://www.adafruit.com/datasheets/DHT22.pdf
http://www.micro4you.com/files/sensor/DHT11.pdf
http://robocraft.ru/files/datasheet/DHT11.pdf
Wykaz elementów
Rezystory:
R1, R2: 3,3 kΩ/0,25 W
RN1, RN2: drabinka 8×470 Ω (SIL9)
Kondensatory:
C1, C3: 100 nF
C2, C4: 22 μF/16 V (elektrolit.)
Półprzewodniki:
LED1...LED7: diody LED 5 mm, niebieskie
US1: ATtiny2313 (DIP20)
US2: DHT11
Inne:
J1: ARK2 3,5 mm
S1: switch 6×6 mm
Podstawka DIP20
Michał Kurzela, EP