Laboratorium wirtualne 2/Moduł 1 - ćwiczenie 1: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 13: | Linia 13: | ||
--> | --> | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd01.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd01.png]] | ||
Linia 70: | Linia 69: | ||
|} | |} | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd08.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd08.png]] | ||
Linia 79: | Linia 77: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd09.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd09.png]] | ||
|valign="top"| | |valign="top"|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ą. | |||
|} | |} | ||
Linia 86: | Linia 93: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd10.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd10.png]] | ||
|valign="top"| | |valign="top"|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. | |||
|} | |} | ||
Linia 92: | Linia 102: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd11.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd11.png]] | ||
|valign="top"| | |valign="top"|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. | |||
|} | |} | ||
Linia 99: | Linia 127: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd12.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd12.png]] | ||
|valign="top"| | |valign="top"|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. | ||
|} | |} | ||
Linia 106: | Linia 134: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd13.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd13.png]] | ||
|valign="top"| | |valign="top"|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”. | ||
|} | |} | ||
Linia 113: | Linia 141: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd14.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd14.png]] | ||
|valign="top"| | |valign="top"|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. | |||
|} | |} | ||
Linia 120: | Linia 152: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="450px"|[[Grafika:LW2_M1_Slajd15.png]] | |valign="top" width="450px"|[[Grafika:LW2_M1_Slajd15.png]] | ||
|valign="top"| | |valign="top"|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. | ||
|} | |} | ||
Linia 127: | Linia 159: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd16.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd16.png]] | ||
|valign="top"| | |valign="top"|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. | ||
|} | |} | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd17.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd17.png]] | ||
Linia 137: | Linia 168: | ||
|} | |} | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd18.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd18.png]] | ||
Linia 146: | Linia 176: | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd19.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd19.png]] | ||
|valign="top"| | |valign="top"|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. | ||
|} | |} | ||
{| border="0" cellpadding="5" width="100%" | {| border="0" cellpadding="5" width="100%" | ||
|valign="top" width="500px"|[[Grafika:LW2_M1_Slajd20.png]] | |valign="top" width="500px"|[[Grafika:LW2_M1_Slajd20.png]] |
Aktualna wersja na dzień 17:47, 3 paź 2006
wersja beta
LABORATORIUM WIRTUALNE 2
Ćwiczenie 1 - Zdalne pomiary temperatury
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |