Strona główna

1. Cel projektu I założenia projektowe Naszym celem było stworzenie układu do pomiaru temperatury, który komunikuje się z komputerem pc z zainstalowanym systemem operacyjnym Linux


Pobieranie 102.84 Kb.
Data20.06.2016
Rozmiar102.84 Kb.
1. Cel projektu i założenia projektowe

Naszym celem było stworzenie układu do pomiaru temperatury, który komunikuje się z komputerem PC z zainstalowanym systemem operacyjnym Linux. Sercem tego układu miał być mikrokontroler. Dzięki stronie WWW użytkownicy powinni mieć dostęp do odczytów z czujników przez Internet.

Do realizacji projektu wykorzystano przygotowaną platformę sprzętową, na której został zainstalowany system operacyjny i oprogramowanie zarządzające. Jako czujniki wykorzystano dwa popularne układy: DS18B20 (czujnik cyfrowy) oraz LM335 (czujnik analogowy) w celu porównania ich działania. Do zarządzania nimi wykorzystano mikrokontroler ATmega32, który łączył się z komputerem za pomocą złącza RS–232. Postanowiono również rozbudować projekt o dodatkowe funkcje. Jako wskaźnik siły wiatru wykorzystano kontaktron. Fotorezystor posłużył do określania stopnia nasłonecznienia.

Zbudowany układ to układ rozwojowy, toteż istnieje możliwość dalszej rozbudowy i ulepszania projektu (obsługa teoretycznie dowolnej liczby czujników cyfrowych pracujących z magistralą 1–Wire oraz do pięciu czujników analogowych).

2. Wiadomości wstępne

Temperatura jest miarą stopnia ogrzania materiału lub ciała jednorodnego. Wyraża energię kinetyczną ruchu cząsteczek materiału (kinetyczna interpretacja temperatury). Przekazywanie temperatury z jednego medium na drugie, np. z medium mierzonego na czujnik temperatury odbywa się przy ich bezpośrednim kontakcie ze sobą. Gdy mają różną temperaturę, to następuje przekazywanie ciepła z ciała o wyższej temperaturze do ciała o niższej – aż do wyrównania się temperatur obu ciał. Jeśli dwa ciała mają tę samą temperaturę, to nie przekazują sobie ciepła, znajdują się w stanie równowagi cieplnej.

Standardowy pomiar temperatury oparty jest na zdolności pewnych materiałów do zmiany ich kształtu, stanu fizycznego lub objętości proporcjonalnie do oddziałującej temperatury.

W rozważaniach teoretycznych w fizyce używa się pojęcia tzw. temperatury termodynamicznej, czyli bezwzględnej. Określenie temperatury bezwzględnej nie jest związane z określonym ciałem, lecz z pewnymi procesami cieplnymi [1].

Jednostką temperatury bezwzględnej a także podstawową jednostką układu SI jest kelwin. Umownie przyjmuje się, że temperatura tzw. punktu potrójnego wody (to stan w jakim woda może istnieć w trzech stanach skupienia równocześnie w równowadze termodynamicznej) wynosi 273,16 K. Jest to punkt odniesienia dla skali temperatury, ale nie uzależnia skali temperatury bezwzględnej od własności wody. Bezwzględna skala temperatur ma zero absolutne (bezwzględne). Doświadczalne osiągnięcie go nie jest możliwe. W temperaturze zera bezwzględnego energia cząsteczek osiąga minimum (nie zero).

W roku 1968 Międzynarodowy Komitet Miar i Wag przyjął Międzynarodową Praktyczną Skalę Temperatury (MPST–68). Opiera się ona na wartościach temperatury przypisanych pewnej liczbie odtwarzalnych stanów równowagi (punktach stałych definicyjnych) i na określonych przyrządach wywzorcowanych w tych temperaturach. W tablicy 1 podano definicyjne punkty stałe przyjęte w MPST–68. Do przyrządów wzorcowych należą platynowy termometr rezystancyjny (13,81K – 630,74°C), termometr termoelektryczny PtRh10–Pt (630,74°C – 1064,43°C), powyżej 1064,43°C temperaturę określa się na podstawie promieniowania ciała doskonale czarnego.




Substancja

Rodzaj punktu

Temperatura

°C

K

Wodór

potrójny

–259,34

13,81

Wodór

wrzenia

–252,87

20,28

Tlen

potrójny

–218,79

54,36

Woda

potrójny

0,01

273,16

Woda

wrzenia

100,00

373,15

Złoto

krzepnięcia

1064,43

1337,58

Tab.1. Punkty stałe międzynarodowej praktycznej skali temperatur

(wartości punktów podane dla ciśnienia normalnego) [1]


Międzynarodowa, ujednolicona skala temperatury jest oparta na temperaturach w punktach charakterystycznych dla kilku związków chemicznych, np. punkcie potrójnym wody, tlenu, lub punkcie topnienia miedzi przy ciśnieniu 101325 Pa i obowiązuje od 1990r. (ITS 90).

W praktyce powszechnie w użyciu jest skala Celsjusza. W krajach anglosaskich stosowana jest też skala Fahrenheita. Stopnie skali Celsjusza są tej samej wielkości co stopnie temperatury bezwzględnej (1°C = 1 K). Między temperaturą w skali Celsjusza tC a temperaturą bezwzględną T zachodzi związek:

tC = T – 273,16

W skali Celsjusza temperatura równowagi wody z lodem wynosi 0°C, a temperatura równowagi wody i pary wodnej wynosi 100°C (pod ciśnieniem normalnym).

W zależności od interakcji pomiędzy badanym obiektem pomiarowym a czujnikiem pomiarowym wyróżnić można pomiar stykowy (kontaktowy) i bezstykowy (bezkontaktowy pomiar parametrów promieniowania elektromagnetycznego emitowanego przez rozgrzane ciało np. długości fali, ilości emitowanej energii przez obiekt – pirometry są szczególnie przydatne przy pomiarach temperatury elementów ruchomych).

Podział przyrządów do pomiaru temperatury [2]:

A. termometry stykowe

elektryczne:(wypunktuj)

termoelektryczne (termopary),

ezystancyjne metalowe (Pt–100) i półprzewodnikowe (termistory, złącza pn),


nieelektryczne:

cieczowe (rtęciowe),

dylatacyjne (rurkowe),

bimetalowe (taśmowe płaskie, spiralne),

manometryczne cieczowe, gazowe i parowe;
B. termometry bezstykowe – pirometry:(wypunktuj)

(podział w zależności od długości fal wykorzystywanego promieniowania temperaturowego)

radiacyjne (całkowitego promieniowania),

pasmowe,


monochromatyczne (z zanikającym włóknem),

dwubarwowe (stosunkowe);


C. inne wskaźniki temperatury(wypunktuj)

krążki i stożki pirometryczne (Segera),

farby i kredki termometryczne,

wskaźniki naklejane.


W zależności od wykorzystanych do pomiaru własności fizycznych czujnika pomiarowego wyróżnić można pomiar z wykorzystaniem zjawiska:(wypunktuj)
odkształcenia bimetalu – termometry bimetaliczne zawierają element bimetaliczny czyli dwa nierozerwalnie połączone paski metalu. Każdy z metali ma inny współczynnik rozszerzalności cieplnej. Dzięki temu pasek osiąga krzywiznę proporcjonalną do jego temperatury. Sam system bimetaliczny składa się z paska bimetalicznego zwiniętego śrubowo albo spiralnie, zależnie od rozmiaru czujnika i mierzonej temperatury. Każda zmiana temperatury powoduje obracanie osi przez bimetal. Taki obrót przenoszony jest na wskazówkę tarczy;


Rys.1. Przykładowy termometr bimetaliczny

wytwarzania napięcia elektrycznego na styku dwóch metali w różnych temperaturach – termoparowe czujniki temperatury;

Rys.2. FLUKE 80PK–9 – sonda do zastosowań

ogólnych na bazie termopary typu K

(pomiar temperatury powierzchni,

powietrza i nieżrących gazów)
zmiany rezystancji elementu – oporniki Pt100 – rezystory drutowe maja zastosowanie w przemysłowych i laboratoryjnych pomiarach temperatury, przetwarzają wartość temperatury, w której się znajdują na wartość rezystancji, zgodnie z charakterystyką termometryczną;


Rys.3. Przykładowe rezystancyjne czujniki platynowe


zmiany parametrów złącza półprzewodnikowego – termometr diodowy – w termometrach półprzewodnikowych czujnikiem pomiarowym jest dioda, tranzystor lub najczęściej termistor.


W elementach tych wykorzystuje się zależność temperaturową, odpowiednio:

napięcia emitor – baza tranzystora, napięcia w kierunku przewodzenia diody oraz oporności termistora. Czujniki termistorowe mają duża czułość i mogą mieć małe wymiary, a ich nieliniowość wskazań obecnie łatwo koryguje się układami elektronicznymi czy uwzględnia przy kalibracji, dlatego są chętnie i powszechnie stosowane, również w stacjach automatycznych;



Rys.4. Moduł termometru domowego do samodzielnego złożenia

(czujnik temperatury: DS1820)

zmiany objętości cieczy lub gazu – termometry gazowe manometryczne – system jest utrzymywany pod ciśnieniem za pomocą stosownego czynnika. Jest nim gaz szlachetny obojętny pod ciśnieniem. Każda zmiana temperatury oddziałuje na ciśnienie wewnętrzne układu. Ta zmiana ciśnienia jest mierzona rurką Bourdona i wskazywana na tarczy w postaci jednostek temperatury. Zmiany temperatury otoczenia kompensuje element bimetaliczny wewnątrz obudowy;



Rys.5. Termometr gazowo – metaliczny


Temperaturę powietrza wyznacza się w sposób pośredni, bezpośrednio określając temperaturę własną termometru. Dlatego w pomiarach podstawowym założeniem jest stan równowagi termodynamicznej między czujnikiem (termometrem) a powietrzem. Odstępstwa od tego założenia są główną przyczyną błędów pomiarowych. Do konstrukcji termometru wybiera się ciało termometryczne, które wraz ze zmianą temperatury podlega jakiemuś zjawisku fizycznemu. Rejestrując zmieniającą się pod wpływem temperatury jakąś wielkość fizyczną ciała termometrycznego, określa się temperaturę powietrza. W standardowych termometrach domowych mierzy się poziom rtęci, rozszerzającej się przy wzroście temperatury.


3. Czujniki temperatury użyte w projekcie

3.1. Czujnik cyfrowy DS18B20

Układ DS18B20 stanowi cyfrowy termometr z ustalaną rozdzielczością pomiaru temperatury. Posiada unikalny 64–bitowy numer, który pozwala na dołączenie do mikroprocesora wielu czujników DS18B20, oraz dwa rejestry umożliwiające ustawienie alarmu po przekroczeniu dolnej lub górnej temperatury granicznej. Układ posiada wbudowany w strukturę zbiór 9 rejestrów oraz pamięć EEPROM.

Rys.6. Układ wyprowadzeń czujnika DS18B20 (widok z przodu)


Układ ten może być podłączony do systemu pomiarowego za pośrednictwem dwóch lub trzech przewodów: masy, linii danych i (opcjonalnie) linii zasilającej używanej w przypadku potrzeby programowania wewnętrznej pamięci EEPROM. Napięcie potrzebne do przeprowadzania operacji odczytu, zapisu i konwersji może być czerpane z zewnętrznego źródła 5V lub bezpośrednio z linii danych (energia gromadzona jest w wewnętrznym kondensatorze). DS18B20 może pracować bez dołączania żadnych elementów zewnętrznych. Pomiar temperatury może być przeprowadzany w zakresie mierzonych temperatur od –55 do +125°C, z dokładnością ±0,5°C na zakresie od –10 do +85°C [3].

Możliwe jest zapisanie w wewnętrznej pamięci DS18B20 progowej wartości temperatury (górnej i dolnej – na 8–bitach z rozdzielczością 1°C), której przekroczenie powoduje wysłanie przez czujnik sygnału alarmowego. W przypadku współpracy kilku czujników na jednej linii danych, specjalna komenda „alarm serach” umożliwia identyfikację i zaadresowanie tych elementów, w których nastąpiło przekroczenie temperatury progowej.




Rys.7. Schemat połączenia czujnika z zewnętrznym zasilaniem do mikroprocesora


Magistralę 1–Wire opracowano w firmie Dallas Semiconductor i jest ona przeznaczona do przesyłania informacji pomiędzy układem nadrzędnym (np. mikrokontroler) a układami podrzędnymi (np. czujniki) za pomocą magistrali jednoprzewodowej. Każde z urządzeń dołączonych do magistrali musi mieć wyjście typu otwarty dren, a linia sygnałowa jest połączona z plusem zasilania przez rezystor podciągający (np. 10kΩ). W projekcie wykorzystano możliwość dołączenia czujnika do zewnętrznego zasilania.

Działanie DS18B20 opiera się na bezpośrednim pomiarze temperatury („direct–to–digital temperature sensor” [3]). Rozdzielczość pomiaru definiuje użytkownik, może ona wynosić 9, 10, 11 lub 12 bitów (odpowiednio: 0,5°C, 0,25°C, 0,125°C i 0,0625°C). Pomiar przy 12–bitowej rozdzielczości (domyślna rozdzielczość w stanie aktywnym) odbywa się w czasie 750ms.

Układ DS18B20 uaktywnia się (wyjście ze stanu uśpienia o niskim poborze mocy) do rozpoczęcia pomiaru temperatury i konwersji analogowo–cyfrowej po odebraniu od układu nadrzędnego odpowiedniej komendy. Wynik pomiaru po konwersji przechowywany jest w dwubajtowym rejestrze temperatury w pamięci tymczasowej w postaci liczby 12–bitowej z rozszerzeniem znakowym. Po zakończeniu odczytu temperatury układ DS18B20 powraca do stanu uśpienia. Odpowiednie bity liczby przy ustawionej rozdzielczości informują o znaku (tzn. czy wartość temperatury jest dodatnia czy ujemna). Czujnik skalibrowany jest w stopniach Celsjusza.

Każda transakcja (wymiana danych) powinna odbywać się w trzech etapach:

Inicjalizacja – zawiera etap zerowania układu podrzędnego oraz etap potwierdzenia przez niego obecności na magistrali: (wypunktuj)

Przesłanie komendy typu ROM – każdy układ podrzędny posiada unikalny 64–bitowy kod; Komendy typu ROM umożliwiają zaadresowanie konkretnego układu, identyfikację układu, wyszukanie alarmu lub pominięcie sprawdzania 64–bitowego kodu;

Przesłanie funkcji sterującej układu – sekwencja tego typu umożliwia realizację wszystkich dostępnych operacji na wybranym układzie.

3.2. Czujnik analogowy LM335


Układy z rodziny LMx35 są to precyzyjne, łatwe do skalibrowania scalone czujniki temperatury. Działają jak dwu–końcówkowe diody Zenera o napięciu przebicia wprost proporcjonalnym do temperatury bezwzględnej ze współczynnikiem 10mV/K.

Napięcie na zaciskach czujnika jest opisane zależnością:



gdzie T jest temperaturą nieznaną (mierzoną), wyrażoną w kelwinach.

Przy impedancji dynamicznej mniejszej niż 1Ω układy te pracują przy prądach od 400uA do 5mA. Za pomocą układu LM335 można dokonywać pomiarów temperatur w zakresie od –40 do +100°C (wyjście układu liniowe). Czujnik ten skalibrowano wewnętrznie bezpośrednio w kelwinach (dla temperatury 25°C). Typowy błąd graniczny przy zmianach temperatur o ΔT = 100°C jest mniejszy niż 1°C. Początkowa rozdzielczość wynosi także 1°C. Dopuszczalna temperatura otoczenia wynosi 200°C [4].

W układach LM335 przewidziano łatwą metodę kalibracji w celu zwiększenia dokładności czujnika po zainstalowaniu w układzie. Potencjometr dołączony równolegle do układu LM335 umożliwia jednopunktową kalibrację czujnika. Jest ona skuteczna, ponieważ sygnał wyjściowy układu LM335 jest proporcjonalny do temperatury bezwzględnej – napięcie wyjściowe czujnika osiąga 0V przy 0K (–273,16°C). Źródłami błędów napięcia wyjściowego w funkcji temperatury są błędy wynikające z nachylenia wykresu tej zależności (lub współczynnika skalowania). Kalibracja w jednym punkcie przebiegu koryguje uchyb dla całego (liniowego) zakresu zmian temperatur.

Do zapewnienia dobrej dokładności pomiarów, należy uwzględnić kilka faktów. Tak jak w przypadku innych czujników temperatury, grzanie się układu pod wpływem prądu przezeń przepływającego może zmniejszyć dokładność. LM335 powinien pracować przy najmniejszym prądzie odpowiednim dla określonego zastosowania (prąd musi być wystarczająco duży do wysterowania zarówno czujnika, jak i potencjometru kalibrującego przy maksymalnej temperaturze roboczej i maksymalnym obciążeniu zewnętrznym). Jeśli czujnik pracuje w środowisku, gdzie rezystancja termiczna jest stała, błędy od samonagrzewania się mogą być skorygowane. Gdy układ pracuje przy stabilnym temperaturowo prądzie, nagrzewanie się jest proporcjonalne do napięcia Zenera, a tym samym do temperatury. Stąd błąd samonagrzewania się będzie proporcjonalny do temperatury bezwzględnej tak samo, jak błędy nachylenia przebiegu.

Warto jednak zauważyć, iż układy serii LMx35 mają dużą stałą czasową (2,5 minuty) w stosunku do innych czujników półprzewodnikowych (pomiar za pomocą DS18B20 trwa niecałą sekundę), co dyskwalifikuje je przy pomiarach wielkości szybkozmiennych oraz użycie ich w systemach alarmowych a jednocześnie powoduje, że pewne niekorzystne zjawiska mogące fałszować odczyt, także będą odnotowywane z opóźnieniem.




Rys.8. Odpowiedź czujnika serii LMx35 bez obiegu wymuszonego powietrza

(Thermal Response in Still Air) [4]
W przypadku czujnika użytego w projekcie przepływa przez niego prąd wsteczny o wartości ok. 2,3mA. Sam zaś czujnik dołączony jest do mikrokontrolera przez układ dopasowujący jego poziomy napięć do poziomów akceptowanych przez przetwornik A/C. Układ ten składa się z dwóch kaskadowo połączonych wzmacniaczy operacyjnych (LM358), z których jeden pełni rolę wtórnika napięcia a drugi zapewnia dopasowanie poziomów napięć oraz tłumienie oscylacji powstałych w układzie. Precyzyjne dopasowanie poziomów umożliwia zastosowanie potencjometrów wieloobrotowych oraz rezystorów metalizowanych o tolerancji 1%.
4. Układ pomiarowy
Płytka mikrokontrolera została wykonana z jednostronnego laminatu trawionego metodą fotochemiczną. Obwody czujników zostały zmontowane na oddzielnej płytce uniwersalnej.

Jako mikrokontroler posłużył ATmega32 [5] z zewnętrznym oscylatorem kwarcowym 16MHz. Z ważniejszych cech mikrokontrolera wykorzystano: (wypunktuj)

32 kilobajty wewnętrznej programowalnej pamięci typu Flash;

możliwość programowania układu bez wyjmowania z podstawki (ISP, ang. In System Programming);

16–bitowy licznik z odseparowanym preskalerem, trybami komparacji i pamiętania;

8–kanałowy (multipleksowany), 10–bitowy przetwornik analogowo–cyfrowy;

programowalny port szeregowy USART;

wewnętrzne i zewnętrzne źródła przerwań;

tryb uśpienia z redukcją szumów dla przetwornika A/C (A/C Noise Reduction).
Układ komunikuje się z komputerem przez złącze RS–232. Dodatkowe złącze ISP umożliwia programowanie mikrokontrolera bez konieczności demontażu go z urządzenia w którym ma działać. Rozwiązanie takie ułatwia zmianę oprogramowania (funkcji układu) przy czym nie są wymagane specjalistyczne układy programujące (poza programatorem szeregowym, np. STK200/300).

Do zasilania układu niezbędne jest napięcie stałe o wartości co najmniej 7V o dowolnej polaryzacji (także niestabilizowane, aczkolwiek może to wpływać niekorzystnie na pracę części analogowej). Co więcej, mozaika ścieżek i rozmieszczenie elementów zostały zaprojektowane tak, aby zminimalizować wpływ części cyfrowej na część analogową układu (separowane pola masy).

Dwukierunkowa optoizolacja na złączu RS–232 została dodana w celu eliminacji zakłóceń wprowadzanych do toru komunikacyjnego.


Złącze „RS”

Wtyk RS–232

1

1 + 4 + 6

2

2

3

3

4

5



7 + 8

Tab.2. Tabela połączeń złącza „RS” płytki mikrokontrolera z wtykiem RS–232 komputera


Ponieważ założono, iż projekt będzie w przyszłości rozwijany, na płytce umieszczono różnego typu złącza do czujników (temperatury, siły wiatru czy nasłonecznienia).
5. Oprogramowanie

5.1. Struktura funkcjonalna systemu pomiarowego



Rys.9. Struktura funkcjonalna systemu pomiarowego (SP)


Do najważniejszych elementów systemu pomiarowego zaliczyć można podsystemy: (wypunktuj)

przetwarzania danych z czujników pomiarowych;

przetwarzania, gromadzenia, analizy oraz udostępniania informacji (komputer PC z odpowiednim oprogramowaniem).
Oba podsystemy składają się z funkcjonalnie odrębnych „modułów” – bardziej lub mniej niezależnych od innych elementów. Ogólna koncepcja projektowa związana była z takim rozłożeniem SP, aby wszystkie jego elementy można było tworzyć, rozwijać i konfigurować równolegle oraz niezależnie od innych (koncepcja zbliżona do programowania „ekstremalnego”).

W dalszej części zostaną omówione poszczególne elementy programowe stworzonego systemu pomiarowego.

5.2. System operacyjny
Zgodnie z założeniem wstępnym pracy na komputerze klasy PC, wyposażonego w procesor z rodziny x86, został zainstalowany system operacyjny Linux. Wybrano dystrybucję Zenwalk GNU/Linux (wcześniej znany jako Minislack oparty na dystrybucji Slackware – najstarszej aktywnie rozwijanej dystrybucji spod znaku pingwina) [6].

Wybór podyktowany był względami praktycznymi: (wypunktuj)

system ten ma w założeniu dobrze się konfigurować (praca jako serwer);

nie powinien „pożerać” zasobów sprzętowych;

zapewniać swobodę konfiguracji;

dawać przyzwoity poziom bezpieczeństwa dla zgromadzonych na nim danych;

zapewniać możliwość łatwej i szybkiej aktualizacji ważnych elementów (aktualizacje bezpieczeństwa i inne);

powinno się zapewnić przenośność całego systemu pomiarowego na inną platformę sprzętową.


Nie bez znaczenia pozostaje też fakt, iż jest to system darmowy oparty na licencji GNU GPL [7] tak jak darmowe są wszystkie pracujące pod jego kontrolą programy czy całe środowiska.

Sam system w wersji podstawowej został zainstalowany z płyty startowej po czym wykorzystując skonfigurowane połączenie z siecią Internet dokonano jego aktualizacji i uzupełnienia o dodatkowe elementy (pakiety). Zawsze istnieje możliwość przekompilowania całego systemu od podstaw – począwszy od jądra a na graficznym interfejsie kończąc. Daje to możliwość podniesienia szybkości działania o kilkanaście do kilkudziesięciu procent.

5.3. Serwer WWW
Na podbudowie systemu operacyjnego Linux został zainstalowany serwer Apache. Jest on otwartym i bodaj najszerzej stosowanym serwerem HTTP dostępnym dla różnych systemów operacyjnych. W połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych środowisk w firmach oferujących miejsce na serwerach sieciowych.

Szczegóły (odpowiedniej pod względem bezpieczeństwa i funkcjonalności) konfiguracji znaleźć można w sieci – na dołączonej płycie znajdują się istotne pliki konfiguracyjne serwera HTTP.

Struktura modularna tego serwera pozwala na dostosowanie go do własnych wymagań. Spośród wielu opcji nie skorzystano np. z systemu certyfikacji stron oraz obsługi bazy MySQL. Zainstalowano za to i uruchomiono moduł interpretera języka PHP (plik konfiguracyjny w załączeniu) a także narzędzie RRDtool [8] – zestaw narzędzi do obsługi cyklicznych baz danych (ang. Round Robin Database). Ich cechą jest to, że od momentu stworzenia takiej bazy posiada ona stałą wielkość bez względu na ilość napływających danych. Program RRDtool udostępniany jest na licencji GNU GPL i działa w systemach Linux, Windows, Solaris i AIX. Jest on uznawany za faktyczny standard programów obsługi cyklicznych baz danych.

Rys.10. Przykład zachowania się bazy RRD (Ptr – wskaźnik na ostatnią daną)


W bazie tej zostały utworzone trzy zbiory rekordów cyklicznych (RRA) – jeden przechowujący wyniki z całego roku (odczyty w odstępie jednominutowym) oraz trzy rekordy do wyliczania temperatury maksymalnej, minimalnej oraz średniej dla wykresów 24 godzinnych. Przykładowe skrypty obsługi bazy znajdują się wśród załączonego oprogramowania. Procedury obsługi bazy zostały zaimplementowane także na stronie WWW (w skryptach PHP) oraz w oprogramowaniu komunikacyjnym.

Jedyny problem stanowiło stworzenie tzw. „portu” pomiędzy interpreterem PHP a narzędziem RRDtool. Wymagało ono ręcznej kompilacji modułu bibliotecznego do interpretera PHP. Opis instalacji narzędzia PHP–RRDtool (plik 'php_rrdtool.txt') jak i jego źródła (plik 'php_rrdtool.tgz') można znaleźć na stronie domowej projektu [8] (dział „Download / Contrib”).

Na potrzeby tego projektu została stworzona strona WWW, na której można obejrzeć bieżące i archiwalne wyniki pomiarów w postaci tabel oraz wykresów.


Rys.11. Przykładowy wykres stworzony narzędziem RRDtool


5.4. Oprogramowanie komunikacyjne

Komunikację komputera z mikrokontrolerem zapewnia serwer pośredniczący. Złącze RS–232 wykorzystano tutaj m.in. dlatego, iż układy współpracujące z portem szeregowym są relatywnie tanie i dostępne, łatwe w konfiguracji i obsłudze a przede wszystkim dlatego, iż mikrokontroler (μC) posiada wbudowany układ USART. Poza komunikacją serwer pośredniczący zapewnia także aktualizację bazy pomiarów (przy pomocy narzędzia RRDtool). W razie braku lub co gorsza niewydolności serwera HTTP jest on w stanie samodzielnie pracować w środowisku sieciowym generując odpowiedzi na zapytania użytkowników: (wypunktuj)

adres IP: lokalnego hosta;

port: 8080 (istnieje możliwość zmiany na inny);

akceptowany format zapytania: GET (HTTP);

format odpowiedzi: XML–OMF[9].


Serwer pośredniczący jest niczym innym jak pracującym w tle wielowątkowym mini–serwerem HTTP przeprowadzającym w określonym odstępie czasu przegląd zadanego portu szeregowego na obecność pakietu danych pomiarowych. Do pracy wymaga:(wypunktuj)

dostępu do jednego z portów szeregowych;

narzędzia RRDtool (oraz stworzonego pliku bazy);

bibliotek obsługi wątków (POSIX) oraz podsystemu wejścia–wyjścia urządzeń terminalowych (termios).


Całość konfiguracji dostępna jest przez plik 'wfserver.conf'. Źródła serwera pośredniczącego w języku C++ (z obsługą klas), skompilowany plik uruchomieniowy oraz przykładowy plik konfiguracyjny zostały załączone do projektu.

5.5. Oprogramowanie mikrokontrolera


Oprogramowanie zostało napisane w języku C, skompilowane za pomocą narzędzia AVR–GCC z użyciem m.in. biblioteki avr–libc [10] a sam mikrokontroler (μC) został zaprogramowany przy użyciu narzędzia „AVRdude” [11] i programatora szeregowego STK200/300.

Procedury zapewniające obsługę magistrali 1–Wire i czujników serii DS18x20 zostały napisane z użyciem gotowych bibliotek pochodzących z open–source'owego projektu „Digitemp” [12].

Program główny realizuje następujące operacje:(wypunktuj)

inicjalizacja portów;

wyszukiwanie na zadanej szynie czujników serii DS18x20;

inicjalizacja przerwań;

przejście do pętli, a w niej cykliczne:(wypunktuj)

odczytanie stanu czujników cyfrowych;

odczytanie stanu czujników analogowych;

odczytanie wartości rejestrów przechowujących uśrednione czasy między kolejnymi impulsami „wiatromierza”;

odczekanie określonego czasu do następnej serii pomiarów.
Pomiar 10–bitowymi przetwornikami A/C realizowany jest z wykorzystaniem tzw. trybu NR (z redukcją szumu) – na czas konwersji rdzeń mikrokontrolera przechodzi w stan „uśpienia”; koniec konwersji sygnalizowany jest przerwaniem wewnętrznym.

Dla cyfrowego czujnika temperatury pomiar jest jednokrotny; dla analogowego – czterokrotny z uśrednianiem (średnia arytmetyczna).

Pomiar prędkości (siły) wiatru realizowany jest z wykorzystaniem zewnętrznego przerwania INT0. 16–bitowy timer nr 1 odlicza czas pomiędzy impulsami z czujnika kontaktronowego. Wynik pomiaru jest średnią arytmetyczną czterech odczytów.
5.6. Instalacja i użytkowanie

5.6.1. Przygotowanie systemu

Do instalacji i aktualizacji niezbędnych składników systemu Zenwalk, używa się (w trybie administracyjnym) programu o nazwie 'Netpkg'. Najpierw trzeba wybrać serwer lustrzany z interesującym nas pakietem (istnieje możliwość wyszukiwania) a potem już tylko zaznaczyć ten pakiet i wydać polecenie instalacji. W przypadku braku danego pakietu w repozytorium zawsze można znaleźć go w innym. Jeśli nie ma go w żadnym z domyślnej listy zawsze można skorzystać z repozytoriów dla innych systemów (np. dla systemu Slackware). Najlepiej będzie jeśli natywnym formatem instalacyjnym będzie format '.tgz' choć istnieje także możliwość użycia „paczek” RPM czy DEB.

Należy jednak podchodzić do tego ostrożnie aby nie spowodować w systemie zamieszania – w przypadkach wątpliwych lepiej jest samodzielnie skompilować odpowiedni program – ściągając „źródła”, rozpakowując je i wydając w obrębie katalogu z plikiem 'configure' sekwencję poleceń (spod konsoli, w trybie o uprawnieniach administracyjnych):


./configure

make


make install
Wymaga to jednak uprzedniej instalacji dodatkowych bibliotek oraz ich wersji „programistycznych” (sufiks '–dev' w nazwie). Trzeba też bacznie przyglądać się zwracanym przez komendy komunikatom. W ten właśnie sposób zainstalowano w systemie bibliotekę współdzieloną 'php_rrdtool.so'.

Prawie wszystkie programy mają opisaną procedurę instalacji i użytkowania więc nie powinno to sprawić większych problemów.

5.6.2. Wymagania

Do poprawnej pracy system pomiarowy wymaga na komputerze obecności przynajmniej dwóch programów: 'WFServer' oraz 'RRDtool' odpowiadających za gromadzenie i przetwarzanie informacji. Serwer WWW i strona w PHP są tylko dodatkiem umożliwiającym prezentację wyników pomiarów dla użytkowników zewnętrznych.

5.6.3. Instalacja i uruchomienie programu 'WFServer'

Jeśli w katalogu z plikami źródłowymi programu nie znajduje się plik wykonywalny, należy źródła skompilować, wydając spod konsoli polecenie 'make'. Utworzony w ten sposób plik wykonywalny można następnie przenieść w dowolne miejsce w systemie. Należy jednak pamiętać o tym, aby ze względów bezpieczeństwa, użytkownik odwiedzający witrynę WWW nie miał do niego bezpośredniego dostępu.

Ma temu służyć tak organizacja katalogów roboczych jak i odpowiedni zakres uprawnień ustawiony w systemie. W przypadku tego systemu, po zainstalowaniu serwera Apache zmodyfikowano ustawienia pliku '/etc/apache2/httpd.conf' tak aby:(wypunktuj)

katalogiem roboczym stał się katalog '/var/www/wfserver'; wpis:


DocumentRoot "/var/www/wfserver"
użytkownik odwiedzający stronę był autoryzowany w systemie pod nazwą 'www guest' w grupie o tej samej nazwie (jest to „konto” o minimalnych uprawnieniach tworzone z myślą o możliwości dostępu TYLKO do jednego katalogu); wpisy:
User www–guest

Group www–guest


użytkownik 'www–guest' ma możliwość pisania w tej ścieżce (w tym lub „głębiej położonym” katalogu) – dotyczy to tylko plików tymczasowych a nie bazy czy plików stron. Serwer pracuje na porcie 80 (HTTP) pod adresem zdefiniowanym co zdefiniowane jest przez wpisy:
Listen 80

ServerName w.x.y.z


gdzie w.x.y.z jest numerem IP przydzielonym na stałe dla tego komputera (np. 212.33.95.157).

zablokowana jak możliwość listowania katalogów stron i podstron.

Program 'WFServer' (serwer pośredniczący, oprogramowanie komunikacyjne) jest uruchamiany wraz ze startem systemu poprzez polecenie podane w skrypcie startowym dla poziomu 3 lub 4 (tzw. 'multi user'):

/usr/sbin/wfserver /home/miteksman/wfserver/wfserver.conf


Podane ścieźki nie są krytyczne i mogą prowadzić np. do katalogu domowego użytkownika lokalnego (w przykładzie: 'miteksman'). Zdecydowanie nie zaleca się tutaj używania konta użytkownika 'root'.

Przykładowy plik konfiguracji serwera pośredniczącego ('wfserver.conf') jest załączony do projektu.


Ponadto użytkownik 'www–guest' powinien mieć dostęp do odczytu z bazy RRD a użytkownik zalogowany lokalnie, na prawach którego uruchamiany jest program 'WFServer', z kolei mieć prawo do zapisu do niej. Jednocześnie parametry 'www_dir' oraz 'rrdbase_fname' w pliku 'wfserver.conf' powinny wskazywać na plik, będący w zasięgu widzialności użytkownika 'www–guest'.

Pusty plik bazy może zostać stworzony poleceniem:


rrdtool create baza.rrd --step 60 \

DS:tempDS:GAUGE:90:-60:130 \

DS:tempLM:GAUGE:90:-40:100 \

DS:windKT:GAUGE:90:0:40 \

DS:sunnFR:GAUGE:90:0:100 \

RRA:AVERAGE:0.50:1:527040 \

RRA:MIN:0.50:1440:21960 \

RRA:MAX:0.50:1440:21960


Polecenie to tworzy bazę RRD (rozmiar pliku ok. 18 MB), w której będą przechowywane rekordy z danymi z całego roku (dane wpisywanie z odstępami minutowymi) a dodatkowo dla danych 24–godzinnych liczone będą wartości minimalne oraz maksymalne. Szczegóły operacji na bazie RRD przy użyciu RRDtool można znaleźć na stronie autora programu [8] jak i w innych opracowaniach [13].

Strona napisana w języku PHP korzysta z tych samych procedur/programów co linia poleceń, tyle że zaimplementowanych w postaci funkcji skryptowych (nie zmieniają się także parametry wywołań).


6. Niepewność pomiaru temperatury
6.1. Czujnik cyfrowy DS18B20
Parametry podane przez producenta czujnika:(wypunktuj)

zakres pomiarowy: od –55 do +125°C;

dokładność: ±0,5°C (w zakresie od –10 do +85°C);

rozdzielczość pomiaru: od 9 do 12 bitów (w stopniach, odpowiednio: od 0,5 do 0,0625°C);

krzywa błędu 3–sigmowego:

Rys.12. Krzywa błędu 3–sigmowego układu DS18B20

(Typical Error Curve) [3]

Obliczenia niepewności pomiaru temperatury


W zakresie –10 do +85°C błąd graniczny ΔT czujnika DS18B20 wynosi ±0,5°C. Zakładając jednostajny rozkład błędu czujnika, niepewność liczona metodą typu B (pomiary „jednokrotne”, temperatura zmienna w czasie) wynosi:

Niepewność rozszerzona (przyjmując poziom ufności p = 0,95,):



Pomiar czujnikiem cyfrowym przy maksymalnej rozdzielczości (12–bitowej) trwa 750ms i wartość wskazywana zmienia się praktycznie z pomiaru na pomiar. Przy 9–bitowej rozdzielczości takich wahań już się nie obserwuje (o ile nie następują znaczące zmiany temperatury).

6.2. Czujnik analogowy LM335
Parametry podane przez producenta czujnika:(wypunktuj)

zakres pomiarowy: od –40 do +100°C (wewnętrzna kalibracja dla 25°C);

dokładność: ±1°C (w zakresie zmian temperatur 100°C);
Obliczenia niepewności pomiaru temperatury
Błąd graniczny ΔT = ±1°C w zakresie od 0 do 100°C. Zakładając jednostajny rozkład błędu czujnika oraz pomijając niedokładność przetwarzania stopnia wejściowego (wzmacniacza LM358N), niepewność liczona metodą typu B wynosi:

Zakładamy, że wzmacniacze dopasowujące nie mają wpływu na niepewność pomiaru. Niepewność wnoszona przez 10–bitowy przetwornik A/C mikrokontrolera przy napięciu referencyjnym UREF = 2,5V wynosi:




Złożona niepewność standardowa:

Niepewność rozszerzona (przyjmując poziom ufności p = 0,95,):




Należy zauważyć, iż przy pomiarze parametrów zjawisk pogodowych tak wysoka precyzja pomiaru nie jest wymagana. Ponadto czujniki powinny być umieszczone w tzw. obudowie radiacyjnej (szybko oddającej, w niskim stopniu pochłaniającej promieniowanie termiczne) tak aby nie wystawiać ich na bezpośrednie działanie promieniowania (np. słonecznego).

Przy tej klasie czujników błędy powstałe w wyniku istnienia zakłóceń w torze pomiarowym (szumy) lub wnoszone przez układ dopasowująco–przetwarzający (wzmacniacze i przetwornik A/C) są do pominięcia.


7. Przykład zastosowania

Ponieważ sam pomiar temperatury jest mało oryginalny, postanowiono rozbudować projektowany układ o dodatkowe wskaźniki – prędkości wiatru i nasłonecznienia, tworząc zalążek stacji meteo. Jako wskaźnik siły wiatru zastosowano kontaktron współpracujący z mechanicznym zespołem śmigła wiatrowego (odczyt w m/s). Wskaźnik nasłonecznienia oparty jest na czujniku fotorezystancyjnym. Projekt ten jest więc doskonałą bazą do budowy półprofesjonalnej stacji meteorologicznej.

Obecnie automatyczne stacje meteorologiczne (ASM) są budowane w wielu odmianach przez różne firmy, oferujące elektroniczną aparaturę kontrolno–pomiarową służącą m.in. monitoringu parametrów klimatu oraz sterowania procesami przemysłowymi. Składają się na nie elementy i materiały wysokiej jakości. Stosuje się także najnowsze rozwiązania techniczne (elektronika mikroprocesorowa, miernictwo cyfrowe) co w połączeniu z niewielkimi rozmiarami, odpornością na warunki zewnętrzne, łatwością instalacji i obsługi oraz komunikacją bezprzewodową daje wysoką niezawodność okupioną jednak wysoką ceną detaliczną systemu.

Budowa zaawansowanej technologicznie stacji meteorologicznej będzie niewątpliwie ciekawym, interdyscyplinarnym przedsięwzięciem Wydziału (a może i całej Uczelni). Warto tylko nadmienić, iż w związku z planami budowy lotniska regionalnego stworzenie takiej poważnej oraz sprawnie działającej stacji meteorologicznej jest konieczne do pracy portu lotniczego.


8. Materiały źródłowe(wypunktuj)


C. Bobrowski: Fizyka – krótki kurs, WNT, Warszawa 1998;

A. Gubernat: Przyrządy do pomiaru temperatury, materiały dydaktyczne Katedry Ceramiki Specjalnej, AGH, Kraków 2006;

Karta katalogowa czujnika temperatury DS18B20;

Karta katalogowa czujnika temperatury LM335;

Karta katalogowa mikrokontrolera ATmega32;

Strona domowa systemu operacyjnego GNU/Linux Zenwalk: www.zenwalk.org ;

Powszechna Licencja Publiczna GNU: www.gnu.org/licenses/gpl.html ;

Strona domowa projektu RRDtool: http://oss.oetiker.ch/rrdtool/ ;

O. Kiselyov: Weather Observation Definition Format (OMF), Fleet Numerical Meteorology and Oceanography Center (FNMOC), Monterey 2007;

Portal AVRfreaks: www.avrfreaks.net ;

Strona domowa projektu AVRdude: www.bsdhome.com/avrdude/ ;

Strona domowa projektu Digitemp: www.digitemp.com ;

M. Schilli: Ograniczanie danych, miesięcznik Linux Magazine, lipiec 2004;

Wikipedia: www.wikipedia.org .


Karty katalogowe użytych elementów elektronicznych znajdują się na dołączonej płycie CD.

9. Załączniki

9.1. Schemat ideowy modułu mikrokontrolera

9.2. Schemat ideowy modułu czujników



9.3. Mozaika ścieżek modułu mikrokontrolera



9.4. Rozmieszczenie elementów na płytce modułu mikrokontrolera



9.5. Zdjęcia



Rys.13. Płytka mikrokontrolera





Rys.14. Serwer użyty w projekcie


©snauka.pl 2016
wyślij wiadomość