Termometr z higrometrem USB

Termometr z higrometrem USB
Pobierz PDF Download icon
Przez tysiąclecia ludzie starali się przewidywać pogodę oraz mierzyć warunki atmosferyczne. Obecnie coraz popularniejsze są stacje pogody, przewidujące pogodę na najbliższy dzień. Nieodzownym elementem nawet najprostszej stacji pogody jest pomiar temperatury oraz wilgotności. Parametry te są również bardzo istotne w innych sytuacjach, np. przy przechowywaniu żywności.

Prezentowany układ jest przystawką do komputera służącą do pomiaru temperatury oraz wilgotności powietrza. Mierzy temperaturę od -40 do 80°C z rozdzielczością 0,1°C i dokładnością 0,2°C oraz wilgotność od 0 do 100% z rozdzielczością 0,1% i dokładnością 2%. Urządzenie zostało zaprojektowanie na malutkiej płytce o wymiarach z przewagą elementów do montażu powierzchniowego, dzięki czemu może być stosowane jako przystawka do laptopa lub komputera stacjonarnego.

Rysunek 1. Schemat ideowy termometru

Rysunek 2. Przebieg transmisji danych

Schemat ideowy termometru pokazano na rysunku 1. Jego "sercem" jest mikrokontroler ATmega8 pracujący z zewnętrznym rezonatorem kwarcowym 7,3728 MHz. Częstotliwość taktowania tak dobrano, aby błąd transmisji układu UART wynosił 0%.

Do pomiaru temperatury i wilgotności zastosowano cyfrowy czujnik DHT22 zapewniający pomiar temperatury w zakresie -40...+80°C z rozdzielczością 0,1°C i niepewnością 0,2° oraz wilgotności w zakresie 0...100% z rozdzielczością 0,1% i niepewnością 2%. Zmierzone dane prezentowane są w programie komputerowym. Do komunikacji z komputerem wykorzystano interfejs USB. W celu uproszczenia komunikacji wykorzystywano wirtualny port RS232.

Zasilanie termometru jest czerpane ze złącza USB, dlatego konieczne było wykonanie filtru z koralika ferrytowego K1 oraz kondensatora C5. Na rysunku 2 pokazano przebieg transmisji. Komunikacja z czujnikiem rozpoczyna się od wysłania sygnału startowego składającego się z poziomu niskiego trwającego co najmniej 18 ms oraz wysokiego przez 20...40 ms.

Następnie czujnik wysyła odpowiedź w postaci poziomu niskiego i kolejno wysokiego przez 80 ms, po czym jest wysyłana ramka bit po bicie. Logicznemu zeru odpowiada poziom niski przez 50 ms oraz wysoki przez 26...28 ms, a logicznej jedynce poziom niski przez 50 ms oraz wysoki przez 70 ms.

Rysunek 3. Okno główne programu obsługi

Rysunek 4. Schemat montażowy termometru

Po zakończeniu ramki czujnik wymusza poziom niski przez około 54 ms i następnie wchodzi w stan czuwania oczekując na kolejne rozkaz odczytu danych. Pełna ramka składa się z 40 bitów, czyli 5 bajtów. Bajt piaty zawiera sumę kontrolną w postaci arytmetycznej sumy temperatury i wilgotności (ramek od pierwszej do czwartej). Bajty 1 i 3 zawierają część całkowitą kolejno wilgotności i temperatury, a bajty 2 i 4 część ułamkową kolejno wilgotności i temperatury.

Program sterujący mikrokontrolerem został napisany w środowisku Bascom AVR. Podprogram odczytu temperatury i wilgotności z czujnika DHT11 jest w materiałach dodatkowych na serwerze FTP. Po odczytaniu wszystkich bitów jest sprawdzana suma kontrolna.

Dane z czujnika wysyłane są w dwóch bajtach: pierwszy zawiera część całkowitą a drugi ułamkową, aby uzyskać temperaturę lub wilgotność z jednym miejscem po przecinku należy wartość całkowitą przesunąć o osiem miejsc w lewo i dodać do niej część ułamkową.

Po takiej czynności uzyskuje się liczbę 16-bitową reprezentującą temperaturę wymnożoną 10 razy. Dlatego, aby uzyskać miejsce po przecinku, należy wynik podzielić przez 10.Aby nie obciążać mikrokontrolera, dane wysyłane są do komputera w postaci 16-bitowej a dzielenia jest wykonywane w programie obsługi termometru.

W celu uniknięcia błędów transmisji pomiędzy mikrokontrolerem a programem komputerowym jest przesyłane dodatkowe słowo - suma kontrolna wyliczana jako suma arytmetyczna wilgotności i temperatury.

Wysyłane dane są oddzielone znakiem dwukropka. Na przykład, ramka wysyłana do komputera "227:457:684" oznacza temperaturę 22,7°C oraz wilgotność 45,7%.

Rysunek 5. Okno zmiany nazwy termometru

Rysunek 6. Okno programatora

Okno główne programu obsługi pokazano na rysunku 3. Aplikację wykonano za pomocą C# .NET Framework, dlatego do jej uruchomienia jest wymagane zainstalowanie środowiska Microsoft.NET Framework w wersji 4.0 lub nowszej. Fragment programu reprezentujący obsługujący zdarzenia odebrania znaków przez port szeregowy zamieszczono na serwerze FTP.

Po odczytaniu całej linii (do znaku przejścia do nowej linii) program rozdziela zmienne na trzy osobne łańcuchy znakowe i dokonuje konwersji na typ liczbowy. W kolejnym kroku jest obliczana suma kontrolna oraz porównywana z odebraną sumą kontrolną.

Przy zgodności program dokonuje dzielenia zmiennych przez dziesięć w celu odzyskania jednego miejsca po przecinku. Dodatkowo, oprogramowanie pozwala na zminimalizowanie okna i przeniesienia do zasobnika systemowego, z którego może wyświetlać komunikaty o aktualnej temperaturze i wilgotności co pewien czas.

Na rysunku 4 pokazano schemat montażowy termometru. W projekcie wykorzystano mikrokontroler ATmega8 w obudowie smd TQFP32 oraz układ FT232 w obudowie SSOP28, których zamontowanie ze względu na drobnsy raster wymaga wprawy. Po wlutowaniu mikrokontrolera i układu FT232 należy wlutować wszystkie zworki oraz kolejne elementy w kolejności od najmniejszych po największe.

Wszystkie potrzebne sygnały do programowania mikrokontrolera zostały wyprowadzone na złączu szpilkowym Z1, dzięki czemu nie trzeba programować mikrokontrolera przed wlutowaniem. Bity konfiguracyjne mikrokontrolera należy ustawić zgodnie z tabelą 1 (fuse high byte: 0xD9, fuse low byte: 0xFD).

Rysunek 7. Rozpoznanie nazwy przez komputer PC

Rysunek 8. Ustawienie numeru portu, do którego jest dołączony termometr

Po włożeniu przystawki do komputera urządzenie będzie się przedstawiało jako przejściówka USB/RS232. Aby zmienić domyślną nazwę urządzenia należy zapisać ją w pamięci EEPROM układu FT232. W tym celu należy pobrać, zainstalować i uruchomić program "FT prog". Po włożeniu przystawki do komputera należy zainstalować sterowniki.

Po uruchomieniu programu "FT prog" należy wybrać Devices → Scan and Parse. Zostanie przedstawiona zawartość pamięci, model wykorzystanego układu i parę innych detali. W Device Tree należy rozwinąć zakładkę USB String Descriptors i w polu Product Description wpisać nazwę urządzenia np. Termometr z higrometrem USB (rysunek 5).

Po ustawieniu odpowiedniej nazwy należy zaprogramować pamięć EEPROM. W tym celu należy w programie wybrać Devices → Program, co spowoduje wyświetlenie okna, jak na rysunku 6. W celu zapisania danych do układu należy kliknąć przycisk Program.

Po włożenia przystawki do komputera zostanie rozpoznana jako nasze urządzenie (rysunek 7). Po pierwszym włączeniu programu należy wejść do ustawień klikając prawym klawiszem myszy na okno programu (rysunek 8) i ustawić port, do którego jest dołączona przystawka oraz preferencje dotyczące wyświetlanych komunikatów w postaci chmurek systemowych (rysunek 9).

Istnieje możliwość wyłączenia komunikatów lub ustawienia czasu, co jaki mają być wyświetlane. Po ustawienia danych należy kliknąć przycisk Zapisz ustawienia i następnie kliknąć na symbol portu USB, aby otworzyć port.

Rysunek 9. Ustawienie preferencji

Tabela 1. Ustawienie fusebitów

Podczas kolejnych uruchomień program sam otworzy domyślny port oraz będzie pracował na wcześniejszych ustawieniach dotyczących wyświetlanych komunikatów. W każdym momencie pracy programu istnieje możliwość wejścia do ustawień i zmiany parametrów klikając prawym przyciskiem myszy w okno ustawień.

Krzysztof Gońka
krzysztof.gonka@interia.pl

Artykuł ukazał się w
Sierpień 2015
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje lipiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich lipiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów