Podłączenie Sterownika Wilgotności i Temperatury - Schemat
- Szczegóły
W artykule omówimy szczegółowo czujnik temperatury DS18B20, jego budowę, zasadę działania oraz sposób podłączenia. Dodatkowo, przedstawimy schemat sterownika wilgotności i temperatury.
Czujnik Temperatury DS18B20
Czujnik temperatury DS18B20 jest to produkt firmy Maxim Integrated. Pozwala na pomiar temperatury w zakresie -55 °C do 125 °C. Układ ten jest dostępny w obudowach TO-92, SO i μSOP. Jenak najczęściej spotykanym wariantem jest przewlekany TO-92.
Generalnie czujnik temperatury DS18B20 możemy traktować jako cyfrowy czujnik temperatury o programowalnej rozdzielczości. Czujnik temperatury DS18B20 do działania nie potrzebuje żadnych dodatkowych komponentów. Działa poprawnie przy napięciu zasilania od 3 do 5V. Dane udostępniane są z dokładnością 0,5°C dla zakresu -10 do 85°C. Pełen zakres pomiarowy czujnika to -55 do 125°C.
Zastosowanie czujnika DS18B20
Czujnik temperatury DS18B20 znajduje zastosowanie w takich obszarach jak:
- HVAC
- budynek inteligentny
- maszyny przemysłowe
- monitoring przebiegu procesu np. w destylatorze
- monitoring stanu jakiejś substancji np. zboże
Komunikacja przez OneWire
Komunikacja z czujnikiem odbywa się przez sieć OneWire, która umożliwia łączenie wielu czujników równolegle na wspólnej magistrali. Każdy wyprodukowany czujnik posiada unikatowy 64-bitowy numer seryjny. Dzięki unikalnemu numerowi seryjnemu każdego wyprodukowanego czujnika możemy połączyć jednym przewodem równolegle wiele czujników i odczytywać temperaturę z każdego z czujników DS18B20 oddzielanie. Jest to możliwe, gdyż możemy każdy czujnik zaadresować, wysyłając zapytanie.
Przeczytaj także: Przydomowa oczyszczalnia: jak podłączyć do domu?
Łączenie równolegle dużej ilości czujników na trójżyłowej magistrali jest fenomenem czujników temperatury DS18B20. Czujniki pozwalają niskim kosztem i niezbyt skomplikowaną siecią przeprowadzać pomiary i rozkład temperatury na interesującym nas obiekcie. Za pomocą jednej linii danych możemy przeprowadzać pomiary w wielu punktach.
Przetworniki OneWire obsługujące czujnik temperatury DS18B20
W Ntronic mamy urządzenia, którymi łatwo można odczytywać dane z czujników temperatury DS18B20. To właśnie wiedza wykorzystana w tym artykule posłużyła do ich zbudowania. Jeśli potrzebujesz moduł odczytującego temperaturę z czujników DS18B20 zapraszam do zapoznania się z nimi:
- Przetwornik TD2: Umożliwia odczyt z czujników temperatury i wilgotności w sieci OneWire o długości nawet 400 m. Dane można odczytywać portami RS485 i USB. Istotne jest, że te porty są separowane galwanicznie.
- Moduł TD1.01: TD1.01 to konwerter temperatury z wyświetlaczem LED. Odczytuje temperaturę z 64 czujników temperatury DS18B20 w sieci o długości 100 m. Dane odczytujemy portem RS485 przez Modbus RTU.
Pamięć czujnika temperatury DS18B20
Jeśli zajrzymy do wewnętrznej budowy logicznej układu, to widzimy, że jest tam wiele elementów. Znajdziemy tam coś takiego jak Scratchpad (notatnik). Jest to obszar pamięci, który możemy odczytywać i częściowo zapisywać. Składa się on z 8-u bajtów. Część rejestrów, których wartości nie są kasowane po resecie zasilania, stanowi pamięć typu EEPROM. Zaliczamy do nich rejestr konfiguracyjny oraz bajty TH i TL, zawierające progi alarmów temperatury.
- Bajty 0 i 1 zawierają rejestry pomiaru temperatury. Można je tylko odczytać.
- Bajty 2, 3 zapewniają dostęp do rejestrów z progami alarmowymi TH i TL.
- Bajt 4 zawiera ustawienie konfiguracji.
- Bajty 5, 6, 7 są zarezerwowane do wewnętrznego użycia przez urządzenie i nie mogą być kasowane. Odczyt ich powoduje zwrócenie wartości jeden.
- Bajt 8 służy wyłącznie do odczytu i zawiera wyliczone CRC z bajtów od 0 do 7 ze scratchpadu.
Czujnik temperatury DS18B20 - bajt 8 CRC
Wartość tego bajtu wyznaczona jest z pierwszych 8 bajtów pamięci. Należy zaznaczyć, że bajt CRC zmienia się wraz ze zmianą zawartości scratchpada. Układ Master odczytujący pamięć czujnika może wykorzystać bajt CRC do sprawdzenia poprawności transmisji. Po odczytaniu pamięci z bajtem CRC należy obliczyć CRC tej wiadomości i porównać z dostarczonym bajtem 8.
Czujnik temperatury DS18B20 - bajt 4 konfiguracja czujnika
W rejestrze konfiguracyjnym możemy ustawić z jaką rozdzielczością będą udostępniane wartości temperatur. Służą do tego tylko dwa bity rejestru 4-tego: bit 5 oraz 6-y. Bit 7 oraz bity 0..4 są zarezerwowane do wewnętrznego użytku przez urządzenie i nie powinny być kasowane.
Przeczytaj także: Schemat podłączenia instalacji pneumatycznej
Istnieje zależność pomiędzy rozdzielczością a czasem konwersji. Użytkownik może wybrać wartość od 9-ciu do 12-stu bitów.
Warto zwrócić uwagę, że dokładność czujnika w zakresie -10 … 80 °C wynosi 0,5 °C. Oznacza to, że większa rozdzielczość niż 9 bitów, może nam się przydać tylko do rozróżnienia zmiany temperatury.
| R1 | R2 | Rozdzielczość | Dokładność | Max czas konwersji |
|---|---|---|---|---|
| 0 | 0 | 9-bit | 0,5 °C | 93,75 ms |
| 0 | 1 | 10-bit | 0,25 °C | 187,5 ms |
| 1 | 0 | 11-bit | 0,125 °C | 375 ms |
| 1 | 1 | 12-bit | 0,06125 °C | 750 ms |
Czujnik temperatury DS18B20 - bajt 3 i 2 rejestry alarmowe
Gdy układ ADC czujnika temperatury DS18B20 zakończy konwersję temperatury, otrzymana wartość jest porównywana z wartościami zapisanymi w rejestrach TH i TL. Jeśli wartość temperatury jest większa bądź równa TH czy też mniejsza, bądź równa TL następuje ustawienie wewnętrznej flagi. Status tej flagi możemy odczytywać za pomocą komendy ALARM SEARCH (0xEC). Rejestry TH i TL są typu EEPROM, więc ich wartość są pamiętane po wyłączeniu zasilania.
Działanie tej komendy ALARM SEARCH jest identyczne z komendą Search ROM. Na wywołanie odpowiadają tylko układy Slave z ustawioną flagą alarmu. Komenda ta pozwala układowi Master ustalić, który z układów DS18B20 na magistrali w czasie konwersji temperatury napotkał na stan alarmu.
Flaga alarmowa jest aktualizowana po każdym cyklu konwersji temperatury. Jeśli nie są używane funkcje alarmu, rejestry TH i TL mogą służyć jako pamięć ogólna.
Przeczytaj także: Wymiana filtra powietrza w skuterze
Czujnik temperatury DS18B20 - bajt 0 i 1 rozkodowanie temperatury
W bajtach 0 i 1 zakodowana jest mierzona temperatura. Sposób jej prezentacji jest powiązany z konfiguracją rozdzielczości z bajtu 4. Ustawienie odpowiednio 9, 10, 11 lub 12 bitów, odpowiada odpowiednio dokładnościom 0,5 °C, 0,25 °C, 0,125 °C, 0,0625 °C. Oznacza to, przykładowo, że jeśli mamy wybrane ustawienie 9 bitów. Bity 2, 1 i 0-ym bajtu LSB będą zawsze wynosiły 0 i tym samym dokładność pomiaru będzie wynosić 0,5 °C. Jeśli wybierzemy 11 bitową dokładność, aktywne staną się bajty 2 i 1 a ich wartości wynoszą kolejno 0,25 oraz 0,125 °C. Spowoduje to zwiększenie dokładności odczytów do 0,125 °C. Jeśli wybierzemy rozdzielczość 12 bitów, to wszystkie bity będą znaczące. Wartość domyślna to 12 bitów.
Czujnik temperatury DS18B20 wyliczenie temperatury z rejestru
Samo dekodowanie temperatur z rejestrów nie musi uwzględniać ustawień rozdzielczości. Jeśli jakiś bajt będzie nieaktywny, jego wartość będzie po prostu wynosić 0. Nie będzie on znaczący w naszych obliczeniach.
Jak działa OneWire?
Interfejs OneWire opracowano celem redukcji liczby przewodów, koniecznych do realizacji połączeń pomiędzy układami scalonymi. Zasada przekazu danych opiera się na generowaniu impulsów, których sekwencja i czas trwania kodują odpowiednie stany logiczne (0 i 1) - dzięki temu nie jest konieczne stosowanie dodatkowej linii zegarowej, a każdy dodatkowy czujnik dopinany jest do magistrali bez przyłączania dodatkowych linii sygnałowych.
Połączenie OneWire umożliwia stosunkowo niewielką przepustowość transmisji danych - standardowo 16 kbps (w trybie overdrive maksymalnie do 142 kbps). Jest podobne do interfejsu I²C, ale z uwagi na pojedynczą linię komunikacyjną jest zarówno wolniejsze, ale i tańsze. Pojedyncza sieć 1-Wire może się składać się z zawsze TYLKO jednego urządzenia odpytującego (przetwornik TD2 na grafice) oraz wielu urządzeń podrzędnych - w naszym przypadku czujników temperatury DS18B20.
Ilość podłączonych czujników jest warunkowana jedynie pojemnością linii. Każde urządzenia ma swój własny unikalny kod, dlategoilość urządzeń możliwych do zaadresowania w wirtualnej magistrali jest praktycznie nieograniczona. Należy jednak pamiętać, że każdy dodatkowy metr magistrali oraz czujnik stanowi obciążenie linii i jeśli jej pojemność przekroczy graniczną wartość, zbocza sygnałów będą zbyt wolne by urządzenia poprawnie odbierały sygnały.
Dane wymieniane są TYLKO linią DQ, dlatego magistrala 1-Wire definiowana jest jako jednoprzewodowa, mimo, że do czujnika podłączamy 2 lub 3 przewody,Czujnik temperatury DS18B20 może działać bez zewnętrznego źródła zasilania. Mówi się tutaj o tzw. zasilaniu pasożytniczym i w taki wypadku do czujnika podłączamy tylko linie danych DQ i masę GND.
Przesyłanie 0 i 1 w magistrali 1-wire
Transmisja danych na pierwszy moment wydaje się skomplikowana. Za pomocą jednej linii danych musimy mieć możliwość transferu stanu logicznego „HIGH” czyli 1 oraz „LOW” czyli 0 oraz musimy przekazywać dane w dwie strony, wysyłać zapytania do czujnika i odczytywać dane przez niego nadane.
Urządzenia komunikujące się w tej sieci, posiadają porty typu otwarty dren lub trójstanowy port. Oznacza to, że mogą wymusić na magistrali logiczne 0 (GND), lub nie wpływać na jej stan. Jeśli żadne urządzenie nie „ściągnie” magistrali do 0, będzie na niej stan logicznej 1-ki. Dzieje się tak, gdyż sieć 1-wire jest podciągnięta przez rezystor do 5V. Po prostu, jeśli ani urządzenie master, ani żaden czujnik nie zewrze linii DQ do masy połączenie rezystorem „pull-up” wymusi na tej magistrali stan logicznej 1-ki (+5V).
Na magistrali OneWire musi panować pewien porządek. Urządzenia Slave nie mogą same z siebie zajmować magistrali, to Master musi wydawać polecenia i dać możliwość odpowiedzieć Slaveom. Ważne jest też moment rozpoczęcia komunikacji, który jest zupełnie inny niż wysyłanie normalnie bajtów. Z tej przyczyny istnieją następujące rodzaje sygnałów:
- reset pulse
- presence pulse
- zapis 0
- zapis 1
- odczyt 0
- odczyt 1
Co najważniejsze wszystkie te sygnały są wysyłane/inicjowane przez urządzenie master z wyjątkiem Presence Pulse, który jest rodzajem odpowiedzi układu DS18B20.
RESET PULSE, PRESENCE PULSE czyli rozpoczęcie transmisji
Każda wymiana danych między Masterem a czujnikami DS18B20 rozpoczyna się sekwencją inicjalizacyjną zawierającą impuls resetu RESET PULSE wysyłany z Mastera. Następnie, jeśli czujnik temperatury DS18B20 jest gotowy, wysyła impuls „przedstawienia się” PRESENCE PULSE . Wysłanie impulsu PRESENCE PULSE w odpowiedzi na reset, oznacza dla Mastera, że czujnik temperatury DS18B20 jest gotowy do obsługi.
Sekwencja inicjalizacji przebiega następująco, Master wysyła reset przez ustawienie linii danych w stan niski przez minimum 480 μs. Następnie Master zwalnia magistralę i przechodzi w tryb odbiornika. Kiedy magistrala jest zwolniona, rezystor „Pull-Up” podciąga linie 1-Wire do stanuwysokiego. Kiedy DS18B20 wykryje narastające zbocze, odczeka 15 - 60 μs i wyśle impuls PRESENCE PULSE, poprzez ustawienie magistrali w stan niski na 60 - 240 μs.
Po procedurze inicjalizacji, gdy master wie, że podpięte czujniki temperatury DS18B20 są gotowe, zaczyna komunikować się z nimi. Zapis danych do układu DS18B20 podczas trwania tzw. WRITE TIME SLOTS, odczyt z kolei następuje w czasie trwania READ TIME SLOTS. Podczas każdego takiego przedziału czasowego jeden bit danych jest wysyłany lub odbierany przez magistralę.
WRITE TIME SLOTS czyli zapis 0 i 1
Zapis jedynki, czyli wysłanie przez Mastera do czujnika temperatury DS18B20 logicznej jedynki przebiega następująco: Master wymusza stan niski i w przeciągu 15 us zwalnia ją. Rezystor „Pull-Up” podciąga linie danych do stanu wysokiego. DS po wykryciu zbocza wymuszonego przez rezystor i odmierzeniu czasu 15 μs - 60 μs sprawdza stan magistrali. Jeśli po tym czasie jest ona w stanie wysokim, przyjmuje, że master chciał zapisać jedynkę logiczną.
Zapis 0 logicznego przez Mastera wygląda tak, że wymusza on stan niski na magistrali i trzyma go przez minimum 60 μs. DS po wykryciu zbocza opadającego i następnie odczekaniu 15 - 60 μs sprawdza stan magistrali. Jeśli ma ona stan niski, następuje przyjęcie, że Master inicjował wysyłkę 0 logicznego.
READ TIME SLOTS czyli odczyt 0 i 1
Czujnik temperatury DS18B20 może wysyłać dane do Mastera tylko w momencie, kiedy ten wygeneruje na magistrali tzw read time slot.
Generacja read time slot musi nastąpić natychmiast po wydaniu przez master instrukcji:
- Read Scratchpad 0xBE
- Read Power Supply 0xB4
- ConverT 0x44
- Recall E2 0xB8
Read time slot jest to okno trwające co najmniej 60 μs. Jest ono inicjowane przez Mastera i polega na ściągnięciu przez niego magistrali do stanu niskiego na minimum 1 μs i jej zwolnieniu. Następnie układ DS18B20 zaczyna sterować magistralą ściągając ją do 0 logicznego chcąc nadać 0 logiczne, lub zwalniając ją, jeśli chcemy nadać jedynkę logiczną.
Dane wyjściowe z czujnika temperatury DS18B20 są dostępne przez 15 μs po zboczu opadającym, które inicjowało read time slot. Tak więc master musi zwolnić magistralę i próbkować jej stan na przestrzeni tych 15 μs od czasu wygenerowania read time slot. Po zakończeniu read time slot, czujnik temperatury DS18B20 zwalnia magistralę i jest ona podciągana w stan wysoki przez rezystor podciągający.
Sterownik Wilgotności i Temperatury
Czujnik wilgotności nieprzerwanie mierzy poziom wilgotności względnej w pomieszczeniu i steruje pracą wentylatora wyciągu. Pary wodna powstaje podczas wykonywania takich czynności, jak: kąpiel, gotowanie, pranie, zmywanie itp. Wilgotność względna w pomieszczeniu wzrasta i efektem tego są pogarszające się warunki higieniczne. Prezentowany moduł współpracuje ze standardowym wentylatorem łazienkowym, który nie jest wyposażony w układy elektroniczne sterujące jego pracą. Często zdarza się, że wentylator z wbudowanym czujnikiem późno reaguje na wzrost wilgotności w pomieszczeniu. Przyczyną tego jest fakt, że takie wentylatory najczęściej montuje się w znacznej odległości od wanny czy kabiny prysznicowej.
1. Schemat ideowy sterownika pokazano na rysunku 1. Aby zapewnić pełną separację galwaniczną od sieci elektrycznej, w urządzeniu zastosowano transformator zasilający o małej mocy TR1. Pracą modułu steruje mikrokontroler ATtiny13. Poprzez złącze X4 do sterownika jest dołączony czujnik temperatury i wilgotności powietrza DHT11, który z mikrokontrolerem komunikuje się za pomocą interfejsu jednoprzewodowego. Diody LED zastosowane w sterowniku świecą w dwóch kolorach: zielonym LD1 i czerwonym LD2. Kolor zielony oznacza dołączenie modułu do sieci, natomiast kolor czerwony (załączany z niewielką częstotliwością, co około 2 s) odbiór danych z czujnika i poprawną pracę sterownika.
2. Układ należy zmontować na jednostronnej płytce drukowanej zgodnie z rysunkiem 2. Urządzenie zmontowane bezbłędnie, z użyciem zaprogramowanego mikrokontrolera i ze sprawnych elementów, będzie działało od razu po włączeniu napięcia zasilającego. Rysunek 4 przedstawia dołączenie do modułu sterownika elementów wykonawczych zasilanych np. przez zasilacz, transformator czy z akumulatora. Styki przekaźnika wyprowadzone na złącza X2 i X3 są od siebie galwanicznie odizolowane.
3. W wypadku wzrostu poziomu wilgotności wentylator włącza się po osiągnięciu zaprogramowanej wartości granicznej, którą ustawia się potencjometrem PR1 i działa tak długo, aż wilgotność w pomieszczeniu spadnie o ok. 3%. Proces kontroli wilgotności przebiega automatycznie w czasie rzeczywistym bez udziału człowieka.
4. Płytka mieści się w obudowie Z-107, która jest przewidziana do montażu na szynie TH35.
tags: #podłączenie #sterownika #wilgotności #i #temperatury #schemat

