Personal tools

Laboratorium wirtualne 2/Moduł 1 - ćwiczenie 1

From Studia Informatyczne

wersja beta


LABORATORIUM WIRTUALNE 2

Ćwiczenie 1 - Zdalne pomiary temperatury

Grafika:LW2_M1_Slajd01.png

Grafika:LW2_M1_Slajd02.png Czujniki termorezystancyjne (termorezystory metalowe) są czujnikami pasywnymi. W czujnikach tych jest wykorzystywana zależność rezystywności metali od temperatury (rezystywność rośnie wraz ze wzrostem temperatury). Zatem parametrem wyjściowym tych czujników jest rezystancja. Konieczny jest zatem przetwornik pomiarowy zamieniający rezystancję na napięcie lub prąd, czyli na wielkość, którą da się zdyskretyzować.

Czujniki termistorowe (termorezystory przewodnikowe) są również czujnikami pasywnymi. Charakteryzują się one większą czułością niż termorezystorami metalowe.

Czujniki termoelektryczne (termoogniwa) należą do grupy czujników generacyjnych. W czujnikach tych jest wykorzystywane zjawisko powstawania siły termoelektrycznej o wartości zależnej od temperatury na styku dwóch różnych metali, jako wynik różnicy liczby swobodnych elektronów po obu stronach metali. Ponieważ wartość generowanej siły termoelektrycznej jest rzędu pojedynczych mV, zatem jest konieczne zastosowanie dedykowanego kondycjonera umożliwiającego wzmocnienie tego sygnału do poziomu akceptowanego przez wejścia analogowe karty pomiarowej.

W scalonych czujnikach temperatury jest wykorzystywana zależność napięcia baza-emiter tranzystora bipolarnego od temperatury (-2,1mV/°C). W strukturze tego czujnika znajdują się dwa tranzystory dobrane w parę będące właściwym czujnikiem oraz układ wzmacniający przetwarzający sygnał do wymaganej wartości napięcia wyjściowego.



Grafika:LW2_M1_Slajd03.png Termorezystory metalowe są wytwarzane z czystych metali (platyna, nikiel, miedź). Platyna cechuje się małą aktywnością chemiczną, wysoką temperaturą topnienia i prawie liniową zależnością rezystancji od temperatury. Z tego powodu w precyzyjnych pomiarach temperatury znalazły zastosowanie termorezystory platynowe o oznaczeniach Pt100 i Pt1000. Występująca w oznaczeniu liczba oznacza wartość rezystancji w temperaturze 0°C. Typowym zakresem pracy termorezystorów platynowych jest temperatura –200°C ÷ +850°C. Termorezystory niklowe i miedziane mają wyższą wartość temperaturowego współczynnika rezystancji (układ pomiarowy będzie bardziej czuły), lecz charakteryzują się gorszą liniowością charakterystyki przetwarzania (R = f(T)).

Grafika:LW2_M1_Slajd04.png Rezystancja termorezystora metalowego zmienia się w szerokim zakresie temperatur zgodnie z zależnością (1).

W przypadku termorezystora platynowego zależność rezystancji w funkcji temperatury z zakresie 0°C ÷ 600°C można przybliżyć wielomianem kwadratowym (2)

Grafika:LW2_M1_Slajd05.png

Grafika:LW2_M1_Slajd06.png Typowym układem pomiarowym dla termorezystorów metalowych jest niezrównoważony mostek Wheatstone’a. W jednej z jego gałęzi jest umieszczany czujnik. Mostek ten jest zasilony ze źródła napięcia stałego. Napięcie wyjściowe mostka jest funkcją temperatury i może ono zostać poddane przetwarzaniu analogowo-cyfrowemu. Aby dopasować parametry napięcia na wyjściu mostka do wymagań stawianych przez wejścia analogowe przetwornika analogowo-cyfrowego należy sygnał wyjściowy mostka podać na wejście różnicowego wzmacniacza pomiarowego. Bardzo istotna jest również wartość impedancji wejściowej wzmacniacza. Powinna być ona jak największa. Napięcie na wyjściu nieobciążonego mostka (przy zasilaniu dołączonym do pionowej przekątnej mostka) jest opisane zależnością (1)

Grafika:LW2_M1_Slajd07.png Termistory to elementy półprzewodnikowe bezzłączowe charakteryzujące się dużymi zmianami rezystancji w funkcji temperatury. Należą do grupy czujników pasywnych. Przebieg temperaturowych zmian rezystancji jest podstawą ich podziału na termistory o dodatnim (PTC) i ujemnym (NTC) temperaturowym współczynniku rezystancji. Powszechne zastosowanie znalazły termistory typu NTC. Średnia wartość cieplnego współczynnika zmian rezystancji jest o rząd wielkości większa od wartości tego współczynnika dla termorezystorów metalowych. Charakterystyka przetwarzania termistorów NTC może być opisana następującą zależnością (1)

Typowy zakres temperatury pracy termistorów zawiera się w granicach –100°C ÷ +150°C. Wadą termistorów jest rozrzut wartości i oraz nieliniowość charakterystyki przetwarzania. Koniecznością staje się zatem jej linearyzacja. Układem pomiarowym dla termistorów może być układ niezrównoważonego mostka Wheatstone’a.

Grafika:LW2_M1_Slajd08.png

Grafika:LW2_M1_Slajd09.png Konieczność wykonywania pomiarów wielopunktowych i wieloparametrycznych spowodowała, iż firmy zaczęły produkować tzw. czujniki inteligentne. Czujnik inteligentny jest przetwornikiem wielkości mierzonej na cyfrowy sygnał wyjściowy. Zawiera on w swojej strukturze następujące bloki funkcjonalne:
  • Właściwy czujnik wielkości mierzonej – w przypadku pomiarów temperatury może to być para tranzystorów, w której jest wykorzystana zależność między napięciem baza-emiter (prądem kolektora), a wartością temperatury.
  • Układ pomiarowy - przetwarzający zmiany parametrów właściwego czujnika na napięcie.
  • Przetwornik analogowo-cyfrowy.
  • Pamięć RAM – służy do przechowywania: trybów i zakresów pomiarowych, wyników pomiarów, progów alarmowych.
  • Układ interfejsu szeregowego.
  • Układ sterowania.

Wśród czujników inteligentnych (oprócz czujników temperatury) znajdują się czujniki następujących wielkości: ciśnienia, naprężeń, składu chemicznego. Czujniki takie nie wymagają już zewnętrznego układu pomiarowego (kondycjonera), lecz dzięki wbudowanemu układowi interfejsu możliwe jest podłączenie ich (wielu) do komputera lub dedykowanego systemu mikroprocesorowego. Przykładowymi typami interfejsów stosowanych w czujnikach inteligentnych są: CAN, MicroLAN, RS-485. Przykładowo system interfejsu MicroLAN opracowany przez firmę Dallas Semiconductor umożliwia współpracę układu nadrzędnego (komputer PC lub mikrokontroler) aż z czujnikami wykorzystując jednoprzewodowa linię pomiarową.



Grafika:LW2_M1_Slajd10.png Do realizacji tego systemu wykorzystano cyfrowe (inteligentne) czujniki temperatury o oznaczeniu DS18B20 firmy Dallas Semiconductor. Ich zakres pomiarowy wynosi –55°C ÷ +125°C. Błąd pomiaru wynosi ±0,5°C. Są one połączone z lokalnym dedykowanym systemem mikroprocesorowym za pośrednictwem interfejsu MicroLAN. System mikroprocesorowy jest wyposażony w interfejs RS-232C, przeznaczony do komunikacji z lokalnym serwerem. Opisany do tej pory system działa na zasadzie pytanie-odpowiedź. Użytkownik ustawia parametry pomiaru (numer czujnika/czujników, okres repetycji), a następnie uruchamia pomiar. Komputer (lokalny serwer) periodycznie wysyła do systemu mikroprocesorowego łańcuch znaków stanowiących polecenie pomiaru temperatury w wybranym punkcie. System mikroprocesorowy dokonuje interpretacji polecenia, wysyła do wybranego czujnika żądanie pomiaru temperatury, odczytuje i odpowiednio formatuje wynik pomiaru, a następnie wysyła go do lokalnego serwera. Lokalny serwer konwertuje dodatkowo otrzymane wyniki i zapisuje je w plikach dyskowych.

Zgromadzone dane pomiarowe są udostępniane w sieci LAN wykorzystując technologię DataSocket. W sieci LAN pracuje serwer danych, którego oprogramowanie umożliwia udostępnienie tych danych zdalnemu użytkownikowi. Alternatywnym do poprzedniego rozwiązaniem jest wyposażenie systemu mikroprocesorowego (współpracującego z czujnikami) w minimoduł ethernetowy z zaimplementowanym stosem TCP/IP oraz protokołami: HTTP, UDP, FTP. Takie rozwiązanie umożliwia udostępnianie danych pomiarowych zdalnemu użytkownikowi z pominięciem komputera PC.



Grafika:LW2_M1_Slajd11.png Jedna z wersji systemu przeznaczonego do wielopunktowego pomiaru temperatury z wykorzystaniem opisanych czujników oraz komputera PC wymaga tylko zastosowania konwertera (konwertera interfejsów) RS-232C/1-Wire np. DS2480 firmy Dallas Semiconductors. Układ ten umożliwia podłączenie czujników (posiadających interfejs 1-Wire) do interfejsu RS-232C komputera PC.

W ćwiczeniu przyjęto inną wersję - do realizacji układu (systemu mikroprocesorowego) pośredniczącego pomiędzy cyfrowymi czujnikami temperatury, a komputerem PC wykorzystano 8-bitowy mikrokontroler ATmega16 firmy Atmel. Istotną cechą , która przemawiała za tym rozwiązaniem jest zdolność do pracy autonomicznej. Wybrane cechy zastosowanego mikrokontrolera:

  • Rdzeń o architekturze typu RISC.
  • Prędkość przetwarzania 16 MIPS.
  • Wbudowany sprzętowy układ mnożący.
  • Wewnętrzna pamięć programu typu flash o pojemności 16kB programowana w systemie (ISP – ang. In System Programming) za pośrednictwem szeregowego interfejsu SPI, uruchomieniowego interfejsu JTAG lub za pomocą wbudowanego programu zdalnego ładowania – boot loader.
  • Wbudowana pamięć EEPROM o pojemności 512B służąca np. do przechowywania nastaw przyrządu, stałych kalibracyjnych.
  • Wbudowana statyczna pamięć SRAM o pojemności 1kB.
  • Jeden 16 bitowy i dwa 8 bitowe układy czasowo-licznikowe.
  • Cztery kanały PWM.
  • Wbudowane następujące układy transmisji szeregowej: USART, TWI, SPI, JTAG (interfejs uruchomieniowy).
  • Zaimplementowany 8 wejściowy 10 bitowy przetwornik analogowo-cyfrowy.

Oprócz wymienionych cech należałoby wspomnieć rozbudowanych układach zerowania oraz o zaawansowanych trybach oszczędności energii. Podczas pracy autonomicznej nastawy systemu są dokonywane a pomocą mini klawiatury (pracującej w trybie przerwań), a wyniki oraz komunikaty są eksponowane na lokalnym wyświetlaczu. Natomiast podczas pracy pod kontrolą komputera PC mikrokontroler ignoruje polecenia wydawane za pomocą wspomnianej mini klawiatury. Do mikrokontrolera jest dołączony układ HIN232CP, którego zadaniem jest konwersja napięć ze standardu TTL/CMOS do standardu interfejsu RS-232C. Właściwa jednostka informacyjna jest formowana przez moduł USART zaimplementowany w strukturze mikrokontrolera. Czujniki temperatury zostały dołączone do linii PB0 mikrokontrolera. Elementarne funkcje interfejsowe (zerowanie interfejsu, zapis bajtu, odczyt bajtu) zostały zrealizowane w sposób programowy. Korzystają z nich funkcje wysokiego poziomu - funkcje komunikacyjne.



Grafika:LW2_M1_Slajd12.png Przedstawiony na rysunku algorytm opisuje działanie systemu mikroprocesorowego pośredniczącego pomiędzy opisanymi wyżej cyfrowymi czujnikami temperatury, a komputerem PC (lokalnym serwerem). Po włączeniu zasilania (stan START) następuje inicjalizacja modułu transmisji szeregowej USART, inicjalizacja wyświetlacza, konfiguracja linii mikrokontrolera PB0 do której są dołączone czujniki temperatury. Następnie mikrokontroler przechodzi do programu głównego, którego działanie polega na cyklicznym odczytywaniu wartości temperatury zarejestrowanej przez kolejne czujniki oraz zapisywaniu wyników pomiarów w buforze. Po każdym odczycie n-tego czujnika, testując odpowiednie flagi jest sprawdzane, czy nadeszło pytanie/polecenie od komputera nadrzędnego (lokalnego serwera), które jest przechowywane w buforze komunikacyjnym. Jeżeli pytanie/polecenie nie nadeszło lub jest uaktywniona praca autonomiczna, mikrokontroler wysyła do kolejnego (n+1) czujnika odpowiednie komendy inicjalizuje pomiar, a następnie odczytuje wartość temperatury zarejestrowaną przez ten czujnik. W przypadki, gdy bufor komunikacyjny zawiera pytanie/polecenie, wówczas jest dokonywana jego interpretacja i podejmowana odpowiednia akcja, a następnie zostaje zainicjalizowany pomiar z następnego (n+1) czujnika. W przypadku tego systemu pytania dotyczą wartości temperatury zarejestrowanej przez k-ty czujnik. W odpowiedzi mikrokontroler dokonuje odczytu jej wartości zapisanej w buforze wyników oraz przesyła ją kanałem szeregowym do lokalnego serwera. W obu przypadkach po dojściu do ostatniego czujnika (n_max), kolejny pomiar jest wykonywany przez czujnik pierwszy.

Grafika:LW2_M1_Slajd13.png Aplikacja rozpoczyna swoje działanie od skonfigurowania portu szeregowego, uruchomienia i otwarcia serwera DataSocket. Następnie użytkownik ustawia parametry pomiaru/pomiarów (numer czujnika, włączenie/wyłączenie archiwizacji wyników pomiarów, nazwa pliku wynikowego, pomiar jednokrotny/wielokrotny, okres powtarzania pomiarów). Domyślnie jest wybrany pomiar jednokrotny. W przypadku wyboru pomiaru wielokrotnego jest uruchamiany programowy generator zdarzeń – timer. Każde okresowo wygenerowane zdarzenie powoduje wywołanie funkcji odpowiedzialnej za zainicjalizowanie, i odebranie wyniku pojedynczego pomiaru. Kolejne wyniki są gromadzone w buforze wyników oraz mogą być archiwizowane w pliku dyskowym. Po zgromadzeniu zadanej ilości wyników bufor jest wysyłany do serwera DataSocket. W każdym momencie użytkownik może wyłączyć pomiar wielokrotny (zakończyć serię pomiarową) przechodząc automatycznie w tryb pomiaru jednokrotnego. W tym przypadku pomiar jest wyzwalany „manualnie”.

Grafika:LW2_M1_Slajd14.png Do stworzenia oprogramowania lokalnego serwera wykorzystano środowiska LabWindows/CVI oraz LabVIEW 8. Oba te środowiska oferują narzędzia niezbędne do tworzenia rozproszonych systemów pomiarowych.

Do oprogramowania zewnętrznego systemu mikroprocesorowego wykorzystano zintegrowane środowisko (IDE – ang. Integrated Development Environment) AVR Studio 4.12 firmy Atmel. Środowisko to integruje następujące narzędzia: edytor, asembler, linker, konwerter, programowy symulator oraz moduły współpracujące z fizycznymi programatorami. Środowisko to może korzystać z zewnętrznego kompilatora języka C AVR-GCC dedykowanego dla mikrokontrolerów z rdzeniem AVR. Do fizycznego zaprogramowania wewnętrznej pamięci flash mikrokontrolera wykorzystano programator o nazwie AVRISP mkII firmy Atmel. Od strony komputera PC urządzenie to jest dołączone do interfejsu USB, a od strony programowanego mikrokontrolera do interfejsu SPI. Kolejne dwa slajdy pokazują: ogólny wygląd środowiska AVR Studio 4.12, oraz okno wyboru programatora przy pomocy którego zaprogramowano wewnętrzną pamięć flash mikrokontrolera.



Grafika:LW2_M1_Slajd15.png Slajd pokazuje ogólny wygląd środowiska LabWindows/CVI, w którym stworzono oprogramowanie lokalnego serwera. Wykorzystano wbudowane funkcje obsługujące port szeregowy RS-232C oraz technologię transmisji danych w sieci lokalnej DataSocket. Technologia ta wykorzystuje protokół transmisyjny TCP.

Grafika:LW2_M1_Slajd16.png Na slajdzie pokazano zasadę komunikacji między komputerem nadrzędnym (lokalnym serwerem), a systemem mikroprocesorowym współpracującym z czujnikami temperatury. Wynik pomiaru jest przesyłany do serwera w postaci znaków ASCII.
Grafika:LW2_M1_Slajd17.png
Grafika:LW2_M1_Slajd18.png

Grafika:LW2_M1_Slajd19.png Na kolejnych dwóch slajdach pokazano: panel działającego przyrządu oraz postać pliku wynikowego. Poszczególne zarejestrowane wartości chwilowe temperatury są archiwizowane w pliku w postaci znaków ASCII.
Grafika:LW2_M1_Slajd20.png