Escolar Documentos
Profissional Documentos
Cultura Documentos
Urzdzenie opisane w artykule powstao z dwch powodw: pierwszym bya potrzeba bezprzewodowego pomiaru temperatury kolejno w kilku miejscach obiektu. Drug, determinujc sam wybr mikrokontrolera i tworzenie jego firmwareu, by wstpniak sierpniowego numeru EP (z roku 2003), w ktrym wypowiedziano opini cakowicie zgodn ze zdaniem autora tego projektu, na temat sytuacji szeroko pojtej elektroniki w Polsce. Postawiono za cel udowodnienie, e bez Bascoma i bez 8051 mona szybko i efektywnie stworzy ukad oparty na mikrokontrolerze i wykorzystujcy peryferia, ktre tak atwo jest oprogramowa w Bascomie. Bezprzewodowy termometr skada si z nadajnika (schemat elektryczny pokazano na rys. 1 ) z czujnikiem temperatury DS18B20 oraz odbiornika (schemat elektryczny pokazano na rys. 2) z interfejsem RS232 oraz moliwoci podczenia wywietlacza alfanumerycznego (HD44780). Nadajnik komunikuje si z odbiornikiem za porednictwem hybrydowych
moduw radiowych Telecontrolli o czstotliwoci nonej 433 MHz. Odwieenie pomiaru temperatury nastpuje w konfigurowalnych w pewnych granicach odstpach czasu. W ukadzie modelowym wynosi on ok. 10 s. Aby zapewni pen mobilno ukadu nadajnika zasilany jest on z baterii. Uyto litowej baterii 3,6 V stosowanej do podtrzymania zegara BIOS-u komputera.
Nadajnik
Opis ukadu
Schemat elektryczny nadajnika pokazano na rys. 1. Najwaniejszym elementem jest mikrokontroler PIC16F84A (uyto przemysowej wersji ukadu ze wzgldu na szeroki zakres pomiarowy ukadu DS18B20) taktowany kwarcem 4 MHz. Do wyprowadzenia 0 portu A mikrokontrolera podczono ukad DS18B20 z rezystorem podcigajcym lini danych do plusa zasilania. Producent czujnika zaleca stosowanie rezystora o wartoci 4,7 kV jednak w celu obnienia konsumpcji energii przez ukad nadajnika zastosowaem rezystor 10 kV. Przeprowadzone testy nie wykazay adnych problemw w zwizku z t modyfikacj. Do wypro-
35
wadzenia 0 portu B doczono hybrydowy nadajnik RT4. Wybr tego ukadu zosta wymuszony do niskim napiciem zasilania caego ukadu, a jak wynika z noty katalogowej, RT4 moe pracowa w zakresie napi od 2 do 14 V. Jedynym mankamentem RT4 jest konieczno stosowania zewntrznej anteny. Jako, e z zaoenia ukad nadajnika mia mie mae gabaryty zdecydowano na wykonanie go wycznie z elementw SMD, co spowodowao konieczno programowania mikrokontrolera w systemie. PIC16F84A wspiera t metod programowania, nazwan przez Microchipa In Circuit Serial Programming. Z programowaniem ICSP powizany jest do nietypowy obwd zerowania. Konieczne byo zastosowanie diody D2 separujcej linie MCLR od reszty ukadu w momencie programowa-
nia. Dioda D1 suy do oddzielenia obwodu zasilania mikrokontrolera w przypadku, gdy podczas programowania napicie zasilajce pobierane jest z programatora. Ma to znaczenie wwczas gdy stosujemy programatory zasilane bezporednio z portw komputera (np. JDM), ktrych wydajno prdowa jest niewystarczajca do zasilenia caego ukadu. W praktyce najpewniejszym rozwizaniem, dajcym 100% poprawno programowania okazao si stosowanie zewntrznego zasilania caego ukadu. Na pytce drukowanej nadajnika znajduj si pola lutownicze suce do programowania w systemie. Dioda LED w nadajniku sygnalizuje rozpoczcie kolejnej transmisji danych. Anten, tak nadajnika, jak i odbiornika stanowi odcinek przewodu miedzianego o dugoci okoo 17 cm.
Schemat elektryczny odbiornika przedstawiono na rys. 2. Podobnie jak w przypadku nadajnika, odbiornikiem steruje PIC16F84A, tym razem w obudowie DIL. Za konwersj poziomw logicznych przy transmisji szeregowej pomidzy odbiornikiem a komputerem odpowiada MAX232, a za odbir danych z nadajnika modu RR3. Zcze suy do podczenia opcjonalnego wywietlacza LCD (HD44780), a potencjometr montaowy PR1 umoliwia regulacj jego kontrastu. Dioda LED sygnalizuje poprawny odbir ramki danych. Cao zmontowana jest na jednostronnej pytce drukowanej, z montaem przewlekanym. Podobnie jak w nadajniku, mikrokontroler jest taktowany z czstotliwoci 4 MHz. Ukad zasilany jest z zewntrznego zasilacza 5 V. Moliwe jest stosowanie napi zasilajcych w przedziale od 3 do 5 V, jednak gdy jest uywany wywietlacz LCD, napicie zasilania powinno wynosi 5 V. W modelowym urzdzeniu napicie to musiao by wysze ni 4 V ze wzgldu na stae podwietlenie uytego wywietlacza.
Program(y)
Algorytm dziaania tak nadajnika, jak i odbiornika jest nastpujcy. Po wczeniu zasilania mikrokontroler znajduje si w trybie sleep (ze wzgldu na may pobr prdu, wynoszcy w tym trybie okoo 7 mA), z ktrego cyklicznie wychodzi co zadany (za pomoc timera-watchdoga) czas, po czym przesya do ukadu
36
DS18B20 komend ustalenia rozdzielczoci przetwornika na 11 bitw (domylnie jest to 12 bitw, jednak dla zminimalizowania poboru energii przez ukad zdecydowano si na rozdzielczo 11-bitow, co skrcio czas konwersji o poow tzn. do 375 ms) oraz rozpoczcia konwersji (44h) temperatury na posta cyfrow. Jest to moliwe jedynie w ustalonej sekwencji zdefiniowanej dla magistral 1-wire (inicjalizacji, komenda ROM-u, komenda operacji). Po wydaniu komendy konwersji mikrokontroler przechodzi znw w tryb sleep na okoo 0,8 s (czas potrzebny na przeprowadzenie przez DS18B20 konwersji temperatury na sowo 12bitowe). Po przebudzeniu wysyana jest komenda odczytu zawartoci rejestrw DS18B20 (BEh). Odczytuje si jedynie dwa pierwsze bajty, zawierajce informacje o temperaturze. Nastpnie formowana jest ramka danych wysyana do odbiornika. Struktur ramki przedstawiono na rys. 3. Transmisja realizowana jest z uyciem kodowania Manchester, co oznacza w praktyce, e logiczna jedynka transmitowana jest jako sekwencja 10, natomiast logiczne zero jako 01 (kod (2n,n). Preambua skada si z czterech bajtw o wartoci FFh. Bezporednio po niej jest trans-
Aplikacja
Program zbierajcy wyniki przesyane z odbiornika do komputera zosta napisany w LabVIEW 5.1. Pomimo tego, i aktualna wersja LabVIEW nosi numer 7.1, to na potrzeby rejestratora wersja 5.1 jest w
37
zupenoci wystarczajca. Kod programu przedstawiono na rys. 4. Po inicjalizacji portu szeregowego (ikona Serial Port Init.vi) i wybraniu pliku do ktrego bd zapisywane dane z rejestratora, program wchodzi w ptl gwn, w ktrej komponent Serial Port Read.vi oczekuje na cztery bajty danych. Po odebraniu ramki komponent Read formuje wyjciowy strumie stringw, ktry nastpnie konwertowany jest to postaci tablicy bajtw. Tablica ta zostaje nastpnie dwukrotnie zaadresowana w celu wyuskania dwch rodkowych bajtw nioscych informacje o temperaturze. Nastpnie te bajty zostaj poczone w jedn 16 bitow zmienn. Najstarszy bit testowany jest na obecno jedynki w celu zidentyfikowania znaku tempe-
ratury. Identyfikacja ta decyduje, ktry z wariantw struktury case zostanie zastosowany do zdekodowania wartoci temperatury. Na rys. 4 jest widoczny przypadek, kiedy mamy do czynienia z liczb ujemn (warto temperatury zapisana jest w kodzie U2), liczba ta zostaje zanegowana, a nastpnie zwikszona o jeden. Poniewa odczytujemy warto temperatury z dokadnoci do 4 cyfr po przecinku, uzyskana warto zostaje podzielona przez 16 (dziesitnie), a nastpnie odjta od zera. Tak zdekodowana liczba zostaje wysana na panel uytkownika (rys. 5) jako wskanik o nazwie Temp (z precyzj dwch miejsc po przecinku). W tym samym czasie warto temperatury zostaje dopisana do wybranego wczeniej pliku. Caa ptla powtarza si zadan na pa-
Uwagi kocowe
Ukad by testowany w caym dopuszczalnym dla DS18B20 zakresie temperatur. Pracowa stabilnie zarwno przy temperaturze 20 oC, jak i +125 oC (w tej temperaturze umieszczony by jedynie czujnik). Naley jednak pamita, e bd pomiarowy DS18B20 w takim zakresie temperatur wynosi 2 oC, a zapewniana przez producenta dokadno 0,5 oC obowizuje jedynie w przedziale od 10 do +85 oC. Nadajnik pracuje poprawnie z napiciem zasilania od 3 do 5 V. Marcin Chruciel chrusciel2@wp.pl
38