POMIAR I PRZETWARZANIE TEMPERATURY Z WYKORZYSTANIEM MIKROKONTROLERA ATMEGA16



Podobne dokumenty
Instytut Teleinformatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Programowanie mikrokontrolerów. 8 listopada 2007

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

SPRAWOZDANIE. Architektura systemów komputerowych projekt robota W Y K O N A N I E :

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Obsługa przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8

Przetworniki analogowo-cyfrowe (A/C)

Podstawowe funkcje przetwornika C/A

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1.

Przetworniki C/A. Ryszard J. Barczyński, 2016 Materiały dydaktyczne do użytku wewnętrznego

Przetwarzanie analogowo-cyfrowe sygnałów

Przetworniki AC i CA

Programowanie mikrokontrolerów AVR

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Teoria przetwarzania A/C i C/A.

TECHNIKA MIKROPROCESOROWA

Parametryzacja przetworników analogowocyfrowych

ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Wstęp Architektura... 13

Zakres wymaganych wiadomości do testów z przedmiotu Metrologia. Wprowadzenie do obsługi multimetrów analogowych i cyfrowych

Komputerowe systemy pomiarowe. Dr Zbigniew Kozioł - wykład Mgr Mariusz Woźny - laboratorium

Struktury specjalizowane wykorzystywane w mikrokontrolerach

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Przetwarzanie A/C i C/A

Instytut Teleinformatyki

ТТ TECHNIKA TENSOMETRYCZNA

Instytut Teleinformatyki

Przetworniki A/C i C/A w systemach mikroprocesorowych

Przetwarzanie AC i CA

Sterownik silnika krokowego. Aleksander Koreń

ĆWICZENIE nr 3. Badanie podstawowych parametrów metrologicznych przetworników analogowo-cyfrowych

Przetwornik analogowo-cyfrowy

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

E-TRONIX Sterownik Uniwersalny SU 1.2

PRZETWORNIKI C / A PODSTAWOWE PARAMETRY

LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH

Przetworniki cyfrowo analogowe oraz analogowo - cyfrowe

Instrukcja do ćwiczeń

APPLICATION OF ADUC MICROCONTROLLER MANUFACTURED BY ANALOG DEVICES FOR PRECISION TENSOMETER MEASUREMENT

Szczegółowy Opis Przedmiotu Zamówienia: Zestaw do badania cyfrowych układów logicznych

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Mikrokontrolery AVR Wprowadzenie

Język programowania PASCAL

Wyjścia analogowe w sterownikach, regulatorach

Programowanie RAD Delphi

Wprowadzenie do systemu Delphi

PRZETWORNIKI A/C I C/A.

Imię i nazwisko (e mail) Grupa:

IMPLEMENTATION OF THE SPECTRUM ANALYZER ON MICROCONTROLLER WITH ARM7 CORE IMPLEMENTACJA ANALIZATORA WIDMA NA MIKROKONTROLERZE Z RDZENIEM ARM7

Wbudowane układy peryferyjne cz. 3 Wykład 9

Systemy wbudowane. Paweł Pełczyński

Laboratorium Komputerowe Systemy Pomiarowe

Instytut Teleinformatyki

Systemy Wbudowane. Założenia i cele przedmiotu: Określenie przedmiotów wprowadzających wraz z wymaganiami wstępnymi: Opis form zajęć

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

WIZUALIZACJA DANYCH SENSORYCZNYCH MINISTACJA METEOROLOGICZNA

Ultradźwiękowy miernik poziomu

2. Architektura mikrokontrolerów PIC16F8x... 13

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Realizacja regulatora PID w komputerze PC z kartą akwizycji danych. Opracował na podstawie dokumentacji dr inż. Jarosław Tarnawski

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Interfejs analogowy LDN-...-AN

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

ASTOR IC200ALG320 4 wyjścia analogowe prądowe. Rozdzielczość 12 bitów. Kod: B8. 4-kanałowy moduł ALG320 przetwarza sygnały cyfrowe o rozdzielczości 12

Moduł wejść/wyjść VersaPoint

PROGRAMOWALNE STEROWNIKI LOGICZNE

Szkolenia specjalistyczne

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Badanie przetworników A/C i C/A

FFT i dyskretny splot. Aplikacje w DSP

Systemy wbudowane Obsługa interfejsu 1-Wire na przykładzie termometru DS18B20

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Wymiar: Forma: Semestr: 30 h wykład VII 30 h laboratoria VII

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Generator przebiegów pomiarowych Ex-GPP2

Kod produktu: MP01105T

Politechnika Warszawska

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

projekt przetwornika inteligentnego do pomiaru wysokości i prędkości pionowej BSP podczas fazy lądowania;

Politechnika Białostocka

Instytut Teleinformatyki

Funkcjonowanie i budowa modelu układu regulacji temperatury. Jakub Rotkiewicz AIR 2018

Opis bezprzewodowego układu do pomiaru oporu elektrycznego skóry

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Pętla prądowa 4 20 ma

2.11 MODUŁY WEJŚĆ ANALOGOWYCH

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Opis procedur asemblera AVR

Zastosowania mikrokontrolerów w przemyśle

KATEDRA ELEKTRONIKI AGH WYDZIAŁ EAIIE. Dydaktyczny model 4-bitowego przetwornika C/A z siecią rezystorów o wartościach wagowych

DOKUMENTACJA PROJEKTU

Transkrypt:

Scientific Bulletin of Chełm Section of Mathematics and Computer Science No. 1/2009 POMIAR I PRZETWARZANIE TEMPERATURY Z WYKORZYSTANIEM MIKROKONTROLERA ATMEGA16 BOGUMIŁ ZARZYCKI, MARIUSZ HOLUK Państwowa Wyższa Szkoła Zawodowa w Chełmie Streszczenie. Artykuł ma na celu przybliżenie problematyki związanej z pomiarem wielkości analogowych (na przykładzie procesu pomiaru temperatury) oraz programowej implementacji zaprojektowanego algorytmu z wykorzystaniem mikrokontrolera AVR (ATmega16). Proponowany układ przetwarzania może pracować niezależnie, natomiast funkcje wizualizacji przebiegu temperatury oraz obróbki danych pomiarowych zapewnione są przy pomocy dodatkowego oprogramowania zainstalowanego na komputerze klasy PC. 1. Wstęp Procesy pomiaru i cyfrowego przetwarzania spotykane są dziś niemal na każdym kroku. Choć nie zdajemy sobie często z tego sprawy, codziennie korzystamy z urządzeń, które wykorzystują te funkcje. W większości z nich pracują już urządzenia cyfrowe, jednak jeszcze nie tak dawno były one urządzeniami w pełni analogowymi (np. telewizory, pralki, wzmacniacze, telefony i wiele więcej). Jakie argumenty zatem przemawiają za układami cyfrowymi i dlaczego są dziś one tak powszechnie stosowane? Powodów jest kilka. Po pierwsze, analogowe obwody przetwarzania w układach elektronicznych były złożone z zestawu rezystorów, kondensatorów, cewek, a w obwodach pneumatycznych m.in. z zaworów, zbiorników i dysz. Raz zbudowany układ mógł realizować tylko jeden algorytm, a możliwości jego ewentualnego strojenia były niewielkie. Każda zmiana algorytmu działania niosła ze sobą zwykle konieczność przebudowy całego układu, co nie było wygodne ani oszczędne. Natomiast układy cyfrowe do zmiany algorytmu potrzebują jedynie przeprogramowania, które (nie wliczając czasu potrzebnego do napisania nowej wersji oprogramowania) zajmuje do kilkunastu sekund. Kolejnym argumentem przemawiającym za stosowaniem układów cyfrowych (a może przeciw stosowaniu analogowych) są gabaryty i koszty. Układy analogowe charakteryzujące się wysoką dokładnością były kosztowne w wykonaniu, a przede wszystkim sprawiały problemy przy próbach miniaturyzacji. Układy cyfrowego przetwarzania są właśnie Key words and phrases. pomiar temperatury, AVR, ATmega16, wizualizacja, przetwarzanie cyfrowe. Treść artykułu była prezentowana w czasie VIII Konferencji Informatyki Stosowanej (Chełm 29-30 maja 2009 r.) 205

206 BOGUMIŁ ZARZYCKI, MARIUSZ HOLUK jej efektem. Są też tańsze od analogowych, gdyż ich masowa produkcja jest łatwiejsza do wdrożenia. W końcu, sygnały cyfrowe posiadają bardzo korzystne właściwości: m.in. dużą odporność na zakłócenia i są wygodne w przetwarzaniu. Głównie z tych powodów analogowe przetwarzanie sygnałów jest zredukowane do niezbędnego minimum, m.in. do kondycjonowania sygnałów (przygotowania sygnałów analogowych) dla przetworników analogowo-cyfrowych (np. wzmocnienie małych sygnałów). Przetwornikiem analogowo-cyfrowym nazywa się urządzenie przetwarzające wielkość analogową w sygnał cyfrowy pomiarowy. Przetwarzaniu analogowo-cyfrowemu towarzyszą na ogół: próbkowanie (dyskretyzacja), kwantowanie (kwantyzacja) oraz kodowanie. Próbkowanie polega na pobieraniu wartości dyskretnych, odpowiadających wartościom chwilowym wielkości ciągłej w określonych chwilach. Kwantowanie wielkości ciągłej polega na przyporządkowaniu każdej próbce skończonej liczby poziomów amplitudy, odpowiadających dyskretnym wartościom od zera do pełnego zakresu. Natomiast kodowanie polega na przypisaniu poziomom reprezentacji wartości w kodzie cyfrowym. 2. Pomiar temperatury i przetwarzanie Pomiar temperatury w swym założeniu nie różni się zasadniczo od pomiaru innej wielkości analogowej. Cały problem polega na przetworzeniu wielkości nieelektrycznej w elektryczną (w naszym przypadku temperatury na napięcie). Jest to wynikiem tego, że układy cyfrowe nie mierzą bezpośrednio wielkości nieelektrycznych; należy tak je zaprojektować, by rzeczywista wielkość mierzona (napięcie) była w pewnej skali odwzorowaniem wielkości pierwotnej (temperatury). Istnieją różne układy pomiarowe wykorzystujące konwersję temperatury do wielkości elektrycznej (najczęściej napięcia) i dalszego przetwarzania. Ogólny schemat blokowy układu cyfrowego realizującego taki algorytm znajduje się na rysunku 1. Rysunek 1. Ogólny schemat blokowy przetwarzania temperatury Sygnał napięciowy z czujnika jest podawany na filtr dolnoprzepustowy (FDP) w celu wyeliminowania składowych o wyższych częstotliwościach głównie szumów. Tak odfiltrowany sygnał jest wzmacniany przez wzmacniacz operacyjny (WO) jeśli sygnały są bardzo małe lub w przypadku większych wartości jedynie odseparowywany od czujnika, by nie powodować zbędnego obciążenia, które mogłoby znacznie pogorszyć wyniki pomiarów. Wzmocniony przebieg kierowany jest następnie do bloku kondycjonowania, gdzie jest formowany w taki sposób, by spełniał wymagania przetwornika A/C. W tym miejscu kończy się droga sygnału analogowego. Napięcie referencyjne U ref doprowadzone do przetwornika służy mu jako punkt odniesienia po przetworzeniu najmniej znaczący

POMIAR I PRZETWARZANIE TEMPERATURY Z WYKORZYSTANIEM... 207 bit liczby wyjściowej (LSB - Least Significant Bit) będzie odpowiadał kwantowi napięcia wejściowego o wartości: (1) Q = U ref 2 n, gdzie n rozdzielczość przetwornika (w bitach). Przetwornik A/C przeprowadza konwersję napięcia wejściowego U we na postać cyfrową n-bitową, według zależności: (2) ADC = U we 2 n = U we U ref Q Po konwersji analogowego sygnału napięciowego na sygnał cyfrowy, uzyskana wartość jest odpowiednio przetwarzana przez system mikroprocesorowy przede wszystkim skalowana programowo w jednostkach wielkości pierwotnej (temperatury) według charakterystyki przetwarzania czujnika. Tak przeskalowana wartość jest wyświetlana do odczytu w sposób zrozumiały dla użytkownika systemu. Dzięki temu zwolniony jest on całkowicie z obowiązku znajomości procesów przetwarzania sygnałów dostaje od razu wartość, która go interesuje. 3. Opis stanowiska Rysunek 2. Fotografia modułu z mikrokontrolerem Stanowisko do pomiarów temperatury (Rys. 3) zbudowane zostało [5] w oparciu o moduł uruchomieniowy AVR mogący współpracować z mikrokontrolerami AT90S8535, ATmega8535, ATmega16 oraz ATmega32 firmy ATMEL. W proponowanym układzie pomiarowym wykorzystywane są (Rys. 2): - mikrokontroler ATmega16 ze zintegrowanym przetwornikiem A/C, - wzmacniacz operacyjny LM358, - czujnik temperatury LM35,

208 BOGUMIŁ ZARZYCKI, MARIUSZ HOLUK - wyświetlacz zgodny ze standardem HD44780, - konwerter poziomów napięć TTL-CMOS/RS232 MAX232. Rysunek 3. Stanowisko do pomiaru temperatury 3.1. Mikrokontroler ATmega16. Jednym z powodów, dla których mikrokontrolery AVR zyskały popularność, jest łatwy dostęp do niezbędnych narzędzi uruchomieniowych. W szczególności chodzi tu o zintegrowane środowisko rozwojowe (IDE - Integrated Development Environment) i urządzenia programująco-testujące. Wykorzystywany mikrokontroler wyposażony jest w 16kB pamięci programowalnej typu FLASH do przechowywania kodu programu, 1kB statycznej pamięci RAM oraz 512B pamięci EEPROM. Posiada także wiele różnorodnych układów wewnętrznych i peryferyjnych, system obsługi przerwań i układy czasowo-licznikowe, jednakże w tej aplikacji najważniejszą rolę spełnia przetwornik analogowo-cyfrowy. Wybrane parametry przetwornika A/C: - rozdzielczość: 10 bitów, - dokładność bezwzględna: ±2 LSB - czas konwersji: 13 260 µs - zakres napięć wejściowych: 0 V cc - możliwość wybrania wewnętrznego napięcia odniesienia 2.56 V - przerwanie na zdarzeniu zakończenia przetwarzania - tryb uśpienia Noise Canceler (redukcja szumów) 3.2. Czujnik temperatury. Jako główny element wykonawczy do pomiaru temperatury zastosowano bezpośredni przetwornik temperatura-napięcie LM35DZ firmy National Semiconductors. Jego najważniejsze parametry są następujące: - zakres pomiarowy: 0 150 C - współczynnik skali: 10 mv/ C - niski pobór prądu (< 60 µa)

POMIAR I PRZETWARZANIE TEMPERATURY Z WYKORZYSTANIEM... 209 4. Błędy przetwarzania Każda ingerencja w układ wnosi zakłócenia i pewne błędy pomiaru. Podczas pomiaru temperatury w układzie opartym na mikrokontrolerze ATmega16 współpracującym z czujnikiem temperatury LM35DZ występują błędy: - przetwarzania A/C, wśród których można wyszczególnić - błędy wynikające z rozdzielczości, kwantyzacji, offsetu (przesunięcia zera), nieliniowości oraz wzmocnienia (współczynnika skali) Rysunek 4. Źródła błędów przetwarzania A/C: a) wzmocnienie, b) offset, c) nieliniowość [2] Błędy przesunięcia zera są określane jako różnica pomiędzy nominalnym a rzeczywistym położeniem punktu zerowego. Błąd wzmocnienia jest to różnica pomiędzy nominalną maksymalną wartością sygnału wejściowego, a środkową wartością w ostatnim kroku kwantowania. - błędy czujnika - źródłem których jest nieliniowość charakterystyki przetwarzania temperatury na napięcie, wzmocnienie, wpływ obciążenia, samonagrzewanie Rysunek 5. Przedstawienie całkowitej dokładności czujnika, będącej wynikiem współdziałania błędów [4] Na Rys. 5. przedstawiono charakterystykę całkowitej dokładności czujnika względem temperatury otoczenia. Z wykresu można odczytać, że w temperaturze pokojowej maksymalny błąd czujnika LM35DZ wynosi ok. 1,5 C, natomiast przy innych wzrasta on do 2,0 C.

210 BOGUMIŁ ZARZYCKI, MARIUSZ HOLUK 5. Programowanie mikrokontrolera w języku C Rdzeń rodziny AVR zaprojektowano z myślą o językach wysokiego poziomu konkretnie C. Przy pracach nad układem konsultowano się z ekspertami w dziedzinie implementacji tego języka, czego wynikiem jest elastyczny i wygodny dla programisty rdzeń, którego wydajności nie można wiele zarzucić. Na potrzeby zaprogramowania mikrokontrolera wybrane zostało środowisko AVR Studio, współpracujące z kompilatorem AVR-GCC. AVR Studio to darmowe środowisko IDE, którego twórcą jest firma ATMEL. Środowisko to tworzą następujące moduły: edytor, translator asemblera, symulator, programator oraz moduł uruchomieniowy (debugger). 5.1. Algorytm pomiaru. Program ma na celu obliczenie i wyświetlenie temperatury na ekranie LCD, a następnie wysłanie tej wartości przez interfejs szeregowy. Poszczególne etapy programu przedstawiono następująco: - Inicjalizacja portów, przetwornika A/C, interfejsu szeregowego, wyświetlacza, układów czasowych, trybu uśpienia - rozpoczęcie przetwarzania sygnału (wejście w tryb uśpienia - redukcja szumów), - skalowanie otrzymanej wartości z przetwornika do skali Celsjusza, - Konwersja wartości liczbowej temperatury do postaci tekstowej, - Wyświetlenie wartości na wyświetlaczu, - Przesłanie pakietu z danymi poprzez interfejs szeregowy USART, - Uaktywnienie opóźnienia czasowego (1s), - Powrót do punktu 2. Rysunek 6. Diagram blokowy algorytmu

POMIAR I PRZETWARZANIE TEMPERATURY Z WYKORZYSTANIEM... 211 Opis głównych funkcji algorytmu: - StartConversion() ustawia mikrokontroler w tryb redukcji szumów dla przetwarzania A/C (jeden z trybów uśpienia) i rozpoczyna konwersję sygnału, - ADCValToCelsius() przelicza uzyskaną wartość z przetwornika A/C na odpowiadającą jej w skali Celsjusza, - DisplayTemperature() wyświetla bieżącą wartość temperatury na wyświetlaczu LCD, - SendByUSART() wysyła pakiet z wartością temperatury poprzez interfejs szeregowy. 5.2. Listing programu realizującego pomiar temperatury. #define F_CPU 8000000UL // częstotliwość taktowania CPU #define NEW_VAL 1 #define SLEEP_REQ 2 #define BAUD_REG 51 #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/sleep.h> #include <util/delay.h> #include <stdlib.h> #include "lcd.h" unsigned char attribute ((progmem)) text[] = " Temperatura\0"; unsigned char attribute ((progmem)) deg[] = 0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00; // znak stopnia Celsjusza unsigned char i; volatile char state=0; uint16_t ADCValue=0; double tempvalue=0.0; char ttemp[7]="", *ptr; ISR(ADC_vect) ADCValue = ADCL; ADCValue += (ADCH << 8); state = NEW_VAL; state &= ~SLEEP_REQ; ISR(TIMER1_OVF_vect) TCCR1B &= ~(1<<CS12); TCNT1H = 0x7F; TCNT1L = 0x00; state = SLEEP_REQ;

212 BOGUMIŁ ZARZYCKI, MARIUSZ HOLUK void init(void) PORTC = 0x00; // ustaw PORTC w stan niski DDRC = 0xFF; // PORTC cały jako wyjścia PORTD = 0x00; // podobnie PORTD DDRD = 0xFF; ADC_init(); // inicjalizacja przetwornika ADC USART_init(); // inicjalizacja interfejsu szeregowego LCD_init(); // inicjalizacja wyświetlacza LCD TIMER_init(); set_sleep_mode(sleep_mode_adc); sei(); void ADC_init(void) ADCSRA = (1<<ADEN) (1<<ADIE) (1<<ADPS2) (1<<ADPS1); // włącz ADC, zezwól na przerwanie, włącz preskaler ADMUX = (1<<REFS1) (1<<REFS0); // tryb Single-Ended, wewnętrzne napięcie odniesienia 2.56V, kanał pomiarowy ADC0 void LCD_init(void) _delay_ms(30); LCD_WriteCommand(0x38); // 8bit, 2 linie, czcionka 5x8 _delay_ms(5); LCD_WriteCommand(0x38); _delay_ms(1); LCD_WriteCommand(0x38); LCD_WriteCommand(0x38); LCD_WriteCommand(0x06); // zwiększaj adres, bez przesuwania LCD_WriteCommand(0x0C); // włącz wyświetlanie, bez kursora i migotania for (i=0; i<10; i++) _delay_ms(20); LCD_PDefineChar(0, (uint16_t)deg); // załaduj znak stopnia do pamięci wyświetlacza LCD_Clear(); // wyczyść wyświetlacz void USART_init(void) UBRRH = (unsigned char)(baud_reg>>8); UBRRL = (unsigned char) BAUD_REG; UCSRB = (1<<TXEN); // włącz nadajnik

POMIAR I PRZETWARZANIE TEMPERATURY Z WYKORZYSTANIEM... 213 void TIMER_init(void) TIMSK = (1<<TOIE1); void USART_Transmit(unsigned char data) while (!(UCSRA & (1<<UDRE))) ; UDR = data; void StartConversion(void) sleep_enable(); sleep_cpu(); sleep_disable(); double ADCValToCelsius(uint16_t value) return ((double)value*(256/1024.0)); void DisplayTemperature(char *s) LCD_Cursor(2,5); LCD_SendString(s); LCD_DisplayCharacter(0); LCD_DisplayCharacter( C ); void SendPacketByUSART(char *s) USART_Transmit( @ ); for (i=0; *(ptr+i)!=0; i++) USART_Transmit(*(ptr+i)); USART_Transmit( # ); int main(void) init(); LCD_Clear(); LCD_PSendString((uint16_t)text); ptr = ttemp; state = SLEEP_REQ; while (1) if (state & SLEEP_REQ) StartConversion(); if (state & NEW_VAL) state &=!NEW_VAL;

214 BOGUMIŁ ZARZYCKI, MARIUSZ HOLUK tempvalue = ADCValToCelsius(ADCValue); ptr = dtostrf(tempvalue, 5, 1, ptr); DisplayTemperature(ptr); SendPacketByUSART(ptr); TCCR1B = (1<<CS12); 6. Wizualizacja pomiarów temperatury Program, którego zadaniem jest wyświetlenie przebiegu temperatury w funkcji czasu w postaci wykresu, został napisany w środowisku Delphi. Rysunek 7. Wizualizacja pomiaru temperatury 6.1. Algorytm wizualizacji. Kolejne etapy działania programu: (1) inicjalizacja zmiennych i stworzenie interfejsu, (2) zdarzenie odebrania pakietu danych z portu RS-232, (3) konwersja odebranych danych tekstowych do formatu liczbowego i wyświetlenie uzyskanej wartości na wykresie, (4) obliczenie wartości średniej z 10 ostatnich pomiarów i wyświetlenie na wykresie jako osobna seria danych, (5) oczekiwanie na zdarzenie 2. 6.2. Listing programu przedstawiającego wizualizację temperatury. unit umain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, JvExControls, JvChart, Menus, JvMenus, CPort, uconfig,

POMIAR I PRZETWARZANIE TEMPERATURY Z WYKORZYSTANIEM... 215 XPMan, StatsClasses, DateUtils, ExtCtrls, JvLabel, JvStaticText, StrUtils, StdCtrls; type TfrmMain = class(tform) MainMenu1: TJvMainMenu; Plik1: TMenuItem; Konfiguracja1: TMenuItem; Pomoc1: TMenuItem; ComPort1: TComPort; ComDataPacket1: TComDataPacket; XPManifest1: TXPManifest; Chart: TJvChart; T_chwil: TJvStaticText; T_sred: TJvStaticText; JvLabel1: TJvLabel; JvLabel2: TJvLabel; procedure FormCreate(Sender: TObject); procedure Konfiguracja1Click(Sender: TObject); procedure ChartUpdate(NewVal: Single); procedure ComDataPacket1Packet(Sender: TObject; const Str: String); procedure FormClose(Sender: TObject; var Action: TCloseAction); function ReplaceDP(const Str: String): String; private t_stat: TStatArray; public var frmmain: TfrmMain; implementation uses Math; $R *.dfm function TfrmMain.ReplaceDP(const Str: String): String; var s: String; i: Integer; begin s := Trim(Str); for i:=0 to Length(s)-1 do if s[i] =. then begin s[i] :=, ; break; Result := s;

216 BOGUMIŁ ZARZYCKI, MARIUSZ HOLUK procedure TfrmMain.ChartUpdate(NewVal: Single); begin Chart.Data.Value[0,Chart.Data.ValueCount] := NewVal; Chart.Data.Timestamp[Chart.Data.ValueCount-1] := Now; t_stat.addvalue(newval); Chart.Data.Value[1,Chart.Data.ValueCount-1] := t_stat.average; Chart.PlotGraph; T_chwil.Caption := FloatToStr(RoundTo(NewVal,-2)) + C ; T_sred.Caption := FloatToStr(RoundTo(t_stat.Average,-2)) + C ; procedure TfrmMain.FormCreate(Sender: TObject); begin t_stat := TStatArray.Create(10); if Assigned(Chart) then begin Chart.Data.Clear; Chart.Options.PenColor[0] := clnavy; Chart.Data.Value[0,0] := 0; Chart.Data.Value[1,0] := 0; Chart.Data.Timestamp[0] := Now; T_chwil.Caption := ; T_sred.Caption := ; ComPort1.Connected := true; procedure TfrmMain.Konfiguracja1Click(Sender: TObject); begin frmconfig.showmodal; procedure TfrmMain.ComDataPacket1Packet(Sender: TObject; const Str: String); var temp: String; begin temp := ReplaceDP(Str); ChartUpdate(StrToFloatDef(temp,0.0)); procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin if ComPort1.Connected then ComPort1.Connected := false; end.

POMIAR I PRZETWARZANIE TEMPERATURY Z WYKORZYSTANIEM... 217 7. Planowane działania W przyszłości planowane jest wykorzystanie w pełni możliwości mikrokontrolera, m.in. przesyłanie aktualnej temperatury na żądanie poprzez sieć GSM, czy informowanie użytkownika o bieżącej temperaturze online. Jednym z wariantów powyższych zamierzeń może być stworzenie całej stacji pogodowej z dostępem do aktualnych warunków atmosferycznych przez Internet lub GSM. Ponadto planuje się opracowanie zestawu ćwiczeń laboratoryjnych dla studentów, bazujących na wykorzystywanym w pracy module uruchomieniowym. 8. Podsumowanie Celem artykułu było przedstawienie aspektów związanych z pomiarem i cyfrowym przetwarzaniem wielkości analogowych. Potrzeba przetwarzania analogowo-cyfrowego wynika stąd, że wartość wielkości mierzonych ma postać analogową oraz z bardzo korzystnych właściwości sygnałów cyfrowych: ich odporności na zakłócenia, łatwości i większej dokładności ich przetwarzania. Zaprojektowany układ pracuje bez zastrzeżeń, wykazuje się zadowalającą dokładnością i pozostawia jeszcze wiele możliwości odnośnie rozbudowy. Literatura [1] R. Baranowski, Mikrokontrolery AVR ATmega w praktyce, wyd. BTC, Warszawa 2005. [2] ATMEL, http://www.atmel.com/ [3] GOTRONIK, http://www.gotronik.pl/ [4] National Semiconductors, http://www.national.com/ THE MEASUREMENT AND PROCESSING OF TEMPERATURE WITH USE OF THE AVR ATMEGA16 MICROCONTROLLER BOGUMIŁ ZARZYCKI, MARIUSZ HOLUK Abstract. The main purpose of this article is to describe the problems related to measurement of analog signals (according to temperature measurement) and its software implementation by using the AVR ATmega16 microcontroller. The proposed processing circuit can work autonomously. Further processing functions and time plot visualization are delivered by additional software installed on a PC.