Politechnika Wrocławska Wydział Elektroniki Zdalny czujnik Sebastian Dorobek 12 czerwca 2010
Spis treści 1 Wstęp 2 1.1 Założenia projektowe............................ 2 2 Opis urządzenia 3 2.1 Przewidywane najważniejsze parametry układu pomiarowego...... 3 2.2 Parametry urządzenia........................... 4 2.3 Opis konstrukcji układów elektronicznych................. 4 2.3.1 Schematy blokowe.......................... 5 2.4 Opis etapu projektowania układu elektronicznego............ 7 2.4.1 Układ zasilania........................... 7 2.4.2 Promieniowanie elektromagnetyczne................ 8 2.4.3 Wypełnienie płytki obszarem podłączonym do masy....... 8 2.4.4 Prowadzenie ścieżek........................ 9 2.4.5 Dobór elementów indukcyjnych.................. 9 3 Przebieg prac nad projektem 10 3.1 Harmonogram prac............................. 10 3.1.1 Zrealizowane etapy projektu.................... 10 4 Oprogramowanie 11 4.1 Oprogramowanie modułów......................... 11 4.1.1 Ramka protokołu komunikacji radiowej.............. 11 4.1.2 Ramka protokołu komunikacji z komputerem........... 11 4.1.3 Obsługa wyświetlacza EA DOGM162............... 11 4.1.4 Obsługa transceivera MRF49XA................. 11 4.1.5 Konfiguracja USART w mikrokontrolerze ATMega48PA..... 11 4.1.6 Obsługa i konfigracja interfejsu SPI/USI............. 12 4.1.7 Obsługa i konfiguracja licznika wznawiającego pracę mikrokontrolera ATTiny24A z trybu bezczynności............. 12 4.1.8 Obsługa i konfigracja przetwornika A/C w mikrokontrolerze AT- Tiny24A............................... 12 4.1.9 Odczyt temperatury z czujnika MCP9701............ 12 4.1.10 Odczyt stanu baterii........................ 13 4.2 Aplikacja dla komputera.......................... 13 5 Podsumowanie 14 A Zdjęcia zmontowanych modułów 15 A.1 Moduł podrzędny.............................. 15 A.2 Moduł nadrzędny.............................. 15 B Schematy układu elektronicznego 17 B.1 Moduł nadrzędny.............................. 17 B.2 Moduł podrzędny.............................. 21 C Wykazy elementów 24 C.1 Moduł nadrzędny.............................. 24 C.2 Moduł podrzędny.............................. 25 1
1 Wstęp Celem projektu było stworzenie urządzenia pozwalającego na bezprzewodową transmisję danych odczytanych z czujnika pomiarowego oraz napisanie aplikacji do ich wizualizacji w postaci wykresu z możliwością zapisu danych do pliku. Podczas realizacji tematu należało zastanowić się nad sposobem weryfikacji poprawności przesyłanych danych oraz zarządzania komunikacją. Ważnym elementem było również uwzględnienie możliwości przenoszenia się zakłóceń generowanych przez tor radiowy na pozostałą część urządzenia. W celu zapewnienia dostatecznej separacji pomiędzy torem radiowym, a pozostałymi obwodami urządzenia wymagane było optymalne zaprojektowanie płytki drukowanej. Zaprojektowane zostały dwa moduły - nadrzędny oraz podrzędny. Działanie modułu nadrzędnego polega na odbieraniu danych z modułu podrzędnego, wyświetlaniu ich na wyświetlaczu LCD oraz wysyłaniu poprzez port USB do komputera. Moduł podrzędny wysyła co jedną sekundę zmierzoną wartość temperatury i aktualny stan baterii do modułu nadrzędnego. Napisana aplikacja przedstawia w formie wykresu zmierzone wartości temperatury oraz pozwala na zapis danych do pliku dla programu Gnuplot. 1.1 Założenia projektowe Przed przystąpieniem do etapów projektowania schematów ideowych oraz płytek drukowanych modułów, również w trakcie doboru odpowiednich elementów, postawione zostały założenia projektowe dla projektowanych modułów. Cechy urządzenia: ˆ wykorzystanie jednego kanału w paśmie, ˆ komunikacja jednokierunkowa - dane rozsyłane przez moduł podrzędny, ˆ opcjonalne zasilanie bateryjne modułu z czujnikiem, ˆ minimalizacja zużycia prądu modułu podrzędnego - wydłużenie czasu pracy z zasilaniem bateryjnym ˆ komunikacja poprzez łącze USB, ˆ wyświetlanie danych na wyświetlaczu LCD, ˆ praca w paśmie 868 MHz. 2
2 Opis urządzenia Urządzenie pozwala na wizualizację wartości temperatury zmierzonej przez moduł podrzędny. Dodatkowo na bieżąco można monitorować stan baterii znajdującej się w module. Przewidziane zostało na płytce drukowanej opcjonalne miejsce dla akcelerometru trójosiowego oraz pamięci zawierającej unikatowy 48 bitowy adres urządzenia[19]. W przyszłości będzie można rozszerzyć zaprojektowane urządzenie o funkcjonalność umożliwiającą odczyt danych z akcelerometru oraz identyfikację kilku modułów podrzędnych z użyciem 48 bitowego adresu. Z założenia urządzenie może funkcjonować bez komputera, wyświetlając zmierzone wartości na alfanumerycznym wyświetlaczu LCD. 2.1 Przewidywane najważniejsze parametry układu pomiarowego Na podstawie dokumentacji technicznych określone zostały najważniejsze parametry układów pomiarowych. Przetwornik analogowo-cyfrowy mikrokontrolera ATTiny24A[6]: ˆ rozdzielczość: 10 bit ˆ bezwzględna dokładność: maks. 2.5 LSB ˆ rezystancja wejścia: 100MΩ Czujnik temperatury MCP9701[13]: ˆ dokładność pomiaru: ± 4% ˆ zakres mierzonej temperatury: -40 125 C Akcelerometr MMA7455L (opcjonalnie)[20]: ˆ liczba osi: 3 ˆ zakres: ±2/4/8 g ˆ rozdzielczość: do 16 mg/lsb 3
2.2 Parametry urządzenia Na podstawie wcześniejszych założeń projektowych, po etapie doboru elementów oraz zaprojektowaniu schematów ideowych określone zostały parametry modułów. Wybrane parametry (dla obu modułów)[1]: ˆ częstotliwość pasma: 860.48 879.515 MHz ˆ maksymalna szybkość transmisji: 115.2kbps ˆ maksymalna moc wyjściowa (przy obciążeniu 50Ω): 5dBm ˆ czułość odbiornika: -110dBm ˆ szerokość pasma: 67 400 khz ˆ zakres temperatury pracy: 0 70 C. Parametry modułu nadrzędnego: ˆ wartość napięcia zasilania interfejsu: +5... 12V / +5V (port USB) ˆ wartość maksymalna poboru prądu: 90mA ˆ wartość średnia poboru prądu: 50mA Parametry modułu podrzędnego: ˆ wartość napięcia zasilania interfejsu: +5... 12V / +3.3V (bateria) ˆ wartość maksymalna poboru prądu: 18mA ˆ wartość średnia poboru prądu: 0.16mA 2.3 Opis konstrukcji układów elektronicznych Projekty schematów ideowych oraz płytek drukowanych modułów wykonane zostały w programie DipTrace, w wersji Freeware dostępnej za darmo do użytku niekomercyjnego. W wersji freeware programu wprowadzone zostały ograniczenia na liczbę padów - do 300 oraz liczbę warstw sygnałowych - do 2, brak natomiast jest ograniczenia na powierzchnię projektowanej płytki[22]. Projekt modułu nadrzędnego wykorzystuje 239, a podrzędnego 153 pady. Oba z projektowanych modułów zmieściły się w granicy 300 padów co świadczy o przydatności programu do tego typu projektów akademickich. Program DipTrace został wybrany ze względu na darmową licencję, dobre opinie wśród firm projektujących urządzenia elektroniczne oraz osobiste odczucie znacznie lepszej ergonomii użycia i wydajności niż w przypadku konkurencyjnych programów m.in. Eagle, Pads, KiCad oraz OrCad, zbliżając się pod pewnymi względami do programu Protel. Pomimo dostępności autoroutera oraz narzędzia wspomagającego etap rozmieszczenia elementów, płytki drukowane zostały zaprojektowane bez użycia autoroutera oraz wspomnianego narzędzia. Związane jest to z małą skutecznością zastosowanych algorytmów w programie DipTrace oraz z faktem, że tego typu narzędzia bez efektywnych algorytmów nie mają zastosowania w układach, gdzie istotna jest optymalizacja procesu prowadzenia ścieżek, szczególnie w przypadku obwodów RF. 4
Ze względu na brak definicji niektórych symboli i obudów elementów w bibliotekach programu, utworzona została nowa biblioteka zawierająca definicje brakujących elementów. Na zawartość utworzonej biblioteki składają się takie elementy jak AT- Tiny24A, FT232RL, MMA7455L, L6920, TPS3619, DLG 0504, MRF49XA, MCP9701, 25AA02E48, LM2597, LP2980, P6SMBJ12, NCD02, KEYS108 oraz wyświetlacz EA DOGM. 2.3.1 Schematy blokowe Podczas etapu projektowania schematów modułów wykonane zostały schematy blokowe przedstawiające strukturę projektowanych modułów. Rysunek 1: Schemat blokowy modułu nadrzędnego. Rysunek 2: Schemat blokowy modułu podrzędnego. Na rysunku 1 przedstawiony został schemat blokowy modułu nadrzędnego. Moduł może być zasilany z zewnętrznego źródła napięcia zasilania (złącze Z1) lub bezpośrednio 5
z portu USB komputera. Napięcie z portu USB jest filtrowane przez filtr LC złożony z elementów L5, C21, C22, C23, C24. Do układu FT232 podłączony został obwód sterujący załączaniem napięcia zasilania - klucz MOSFET - sterowany linią PWREN wyłączający napięcie zasilania np. podczas stanu wstrzymania pracy komputera[21]. Układ transceivera MRF49XA wymaga napięcia zasilania o wartości 2.2 3.8V[1] dlatego w obwodzie zasilania zastosowany został stabilizator o napięciu wyjściowym 3.3V. Jako stabilizator wybrany został układ LM2597. W aplikacji układu[15] zastosowany został dławik o indukcyjności 100µH i maksymalnym prądzie 0.52A[18], dioda BYS10-45 o maksymalnym napięciu 45V i prądzie 1.5A[16] oraz kondensator tantalowy niskoimpedancyjny firmy AVX serii TPS o pojemności 100µF i impedancji szeregowej 0.075Ω[17]. Zastosowany wyświetlacz EA DOGM162 może pracować przy napięciu 3.3V wykorzystując wewnętrzny układ podwyższający napięcie[8], jednakże do poprawnej pracy wymagane jest podłączenie dwóch dodatkowych kondensatorów (C14 i C11[7]). Jako mikrokontroler wybrany został układ ATMega48PA. Główną zaletą zastosowanego układu jest niski pobór prądu - 2.2mA podczas pracy dla wybranej częstotliwości taktowania 8MHz[5]. Obwód dopasowania impedancji anteny został wykonany zgodnie z zaleceniami opisanymi w nocie katalogowej układu MRF49XA[1]. Przyjęte zostały wartości obliczone przez producenta - impedancja anteny 7.8+83j Ω, admitancja 1.2-11.9j ms oraz indukcyjność 15.4 nh. Jako antenę wybrany został pojedynczy przewód o obliczonej długości. Do obliczenia wymaganej długości anteny monopolowej wykorzystany został wzór L = λ, gdzie λ [m] = 2.99792458 108 [m/s] [2]. Dla wybranej częstotliwości - 868MHz obliczona 4 f[ghz] długość anteny wynosi 8.63 cm. Na rysunku 2 przedstawiony został schemat blokowy modułu podrzędnego. Moduł może być zasilany z zewnętrznego źródła napięcia zasilania (Z1) lub z baterii litowej o napięciu 3.3V. Napięcie z zewnętrznego źródła stabilizowane jest przy użyciu układu LP2980[9]. W celu automatycznego rozłączania baterii przy pracy modułu z zewnętrznym źródłem zasilania zastosowany został elektroniczny układ przełączający napięcie zasilania TPS3619. Wymieniony układ charakteryzuje się małą wartością prądu spoczynkowego - maksymalnie 40µA[12]. Napięcie wyjściowe z układu TPS3619 podawane jest na stabilizator impulsowy podwyższający napięcie L6920. Jest on wymagany do poprawnej pracy układu podczas obniżania się napięcia na baterii wraz ze wzrostem jej zużycia. Wybrany układ L6920 cechuje się bardzo niskim prądem spoczynkowym jak na stabilizator impulsowy - maksymalnie 15µA przy napięciu wyjściowym 3.3V[10]. Do aplikacji układu L6920[11] zastosowany został dławik o indukcyjności 22µH i maksymalnym prądzie 1.11 A[18] oraz dwa kondensatory tantalowe niskoimpedancyjne firmy AVX serii TPS o pojemności 100µF i impedancji szeregowej 0.075Ω[17]. Jako mikrokontroler został wybrany układ ATTiny24A charakteryzujący się niskim pobór prądu - 0.42mA w stanie aktywnym i 0.058mA podczas zatrzymania pracy dla wybranej częstotliwości taktowania 1MHz[6]. Wadą mikrokontrolera ATTiny24A jest brak sprzętowego interfejsu SPI, a zamiast niego można skorzystać z interfejsu USI, którego wadą jest m.in. wymagana ręczna zmiana zbocza zegara w kodzie programu. Do pomiaru temperatury użyty został półprzewodnikowy czujnik MCP9701 o niskim poborze prądu - maksymalnie 12µA[13]. Pomiar temperatury odbywa się poprzez pomiar napięcia na wyjściu czujnika przy wykorzystaniu przetwornika analogowocyfrowego mikrokontrolera ATTiny24A. Napięcie wyjściowe czujnika wyraża się zależnością V OUT = 19.5[mV/ o C] T A [ o C] + 400[mV ].[3] 6
Wybór wymienionych elementów pozwolił osiągnąć niską sumaryczną wartość średniego zużycia prądu modułu w granicy 0.16 ma. Obliczone zostało, że dla baterii litowej 3.3 V o pojemności 1200 mah moduł może pracować ponad 10 miesięcy bez przerwy, co wydaje się być bardzo dobrym rezultatem. 2.4 Opis etapu projektowania układu elektronicznego Etap projektowania osobnych obwodów - radiowego oraz cyfrowego z mikrokontrolerem przebiega zwykle bez większych komplikacji, lecz umieszczenie ich razem na tej samej płytce drukowanej, a także użycie wspólnego źródła napięcia zasilania znacznie komplikuje proces projektowania układu. Napięcia na liniach cyfrowych bardzo często zmieniają swoją wartość pomiędzy poziomem masy, a napięciem zasilania, co przy wartości napięcia zasilania 3.3V oznacza zmiany rzędu 3.3Vpp. Dodatkowo czasy przełączania są bardzo krótkie, wyrażone w nanosekundach. Adekwatnie do wysokiej amplitudy i bardzo krótkiego czasu przełączania sygnał cyfrowy zachowuje się podobnie jak sygnał o bardzo wysokiej częstotliwości, niezależnie od rzeczywistej częstotliwości sygnału - widmo impulsu jest nieskończone. Sytuacja od strony toru radiowego wygląda nieco inaczej. Sygnał wejściowy pochodzący z anteny, doprowadzony do części odbiorczej transceivera może mieć wartości rzędu 1-3 µvpp. Tym samym stosunek wielkości sygnału cyfrowego do analogowego może być rzędu 1000000:1. Jeśli sygnały te nie zostaną odpowiednio odseparowane i zaekranowane, to w przypadku małych wartości sygnału wejściowego mogą pojawiać się błędy w transmisji, dodatkowo może pogorszyć się wydajność toru radiowego, a w wyjątkowych sytuacjach może doprowadzić do uszkodzenia układu. 2.4.1 Układ zasilania Z jednej strony układy cyfrowe pracujące przy napięciu zasilania rzędu kilku wolt wprowadzają znaczne szumy do źródła napięcia zasilania, z drugiej, część analogowa jest bardzo czuła na obecność szumów w napięciu zasilania. Z tego powodu prowadzenie linii zasilania toru radiowego powinno być realizowane z większą uwagą niż w przypadku obwodów cyfrowych[3]. Szczególnie ważne jest unikanie posługiwaniem się autorouter a. Istotnym faktem jest, iż współczesne mikrokontrolery wykonywane są w technologii CMOS, tym samym pobierają znaczną część prądu w krótkich odstępach czasu, w takt z częstotliwościa pracy zegara. Gdyby fakt ten zaobserwować na oscyloskopie, widoczne byłyby pulsacje prądu pobieranego ze źródła zasilania z częstotliwością pracy mikrokontrolera. Pominięcie filtracji zasilania spowodowałoby pojawienie się szpilek na linii napięcia zasilania. Jeśli zjawisko to przeniosłoby się na linie zasilania toru radiowego, mogłoby to doprowadzić do nieprawidłowej pracy układu transceivera, a nawet do jego uszkodzenia. Z tego powodu szczególnie ważne jest użycie niezależnej linii zasilania toru radiowego od pozostałych obwodów. Dla zapewnienia prawidłowej pracy rozprowadzenie napięcia zasilania musi być zrealizowane w topologi gwiazdy oraz przy każdym z zasilanych obwodów musi znajdować się kondensator o niskiej rezystancji szeregowej. Dokładna filtracja napięcia zasilania jest korzystna w przypadku redukcji szumów w paśmie transceivera radiowego, zwłaszcza, gdy szumy zmniejszają wydajność toru radiowego. Połączenie kondensatorów ceramicznych, o niskej pojemności - w granicy 7
27 do 47pF (z dielektrykiem NP0) oraz o większej pojemności - 100nF (z dielektrykiem X7R) pozwala na tłumienie szerokiego widma częstotliwości. Kondensatory o mniejszej pojemności - w zakresie 10-100nF powinny być umieszczone na linii zasilania układu transceivera oraz w punktach polaryzacji obwodu radiowego. Kondensatory o większej wartości pojemności - w zakresie 2.2-10µF powinny być umieszczone w centralnym punkcie układu zasilania Filtracja napięcia zasilania jest niezbędna. Niedostateczna filtracja pozwala na występowanie zjawiska interferencji, co powoduje nasilenie się szumów oraz pojawienie się nieprawidłowych sygnałów w torze radiowym, znacznie redukując jego wydajność. 2.4.2 Promieniowanie elektromagnetyczne Wpływ promieniowania elektromagnetycznego jest dość często pomijany w odniesieniu do układów zawierających na jednej płytce zarówno tor radiowy, jak i mikrokontroler. Obwody analogowe znajdujące się na jednej płytce wraz z torem radiowym narażone są na wpływ promieniowania elektromagnetycznego emitowanego przez część nadawczą toru radiowego. Należy zauważyć, że każda ze ścieżek na płytce może być anteną emitującą lub odbierającą sygnał radiowy. W takim przypadku, wejście przetwornika analogowo-cyfrowego może być narażone na negatywny wpływ promieniowania elektromagnetycznego. W przypadku niezapewnienia wystarczająco małej wartości impedancji wejścia przetwornika analogowo-cyfrowego, sygnał radiowy, który przedostanie się na wejście przetwornika i wykazywać będzie względnie dużą amplitudę zostaje wyprostowany przez diody zabezpieczające przed wyładowaniami elektrostatycznymi znajdujące się na wejściu przetwornika, węwnątrz mikrokontrolera. Taka sytuacja powoduje przesunięcie wartości sygnału mierzonego przez przetwornik o wartość zakłócenia, co może powodować znaczy błąd pomiaru. 2.4.3 Wypełnienie płytki obszarem podłączonym do masy Wypełnienie płytki obszarem podłączonym do masy używa się przy projektowaniu płytek drukowanych zawierających elementy o częstotliwości radiowej i jest elementem kluczowym do prawidłowego funkcjonowania układu. Z założenia takie pole ma stanowić punkt odniesienia - 0V w układzie[4]. Bezwzględnie należy wypełniać obszar płytki polem podłączonym do masy układu, nieprzestrzeganie tej zasady może być przyczyną wystąpienia niewyjaśnionych nieprawidłowości w działaniu układu, bardzo trudnych, a w pewnych przypadkach niemożliwych do zdiagnozowania. Z punktu widzenia układów cyfrowych ciężko jest zrozumieć takie zjawisko, gdyż większość układów cyfrowych pracuje bez najmniejszych problemów, bez wypełnienia obszaru płytki polem podłączonym do masy. Przy częstotliwościach radiowych, nawet bardzo krótka ścieżka zachowuje się jak element indukcyjny. Indukcyjność ścieżki może być nawet rzędu 1nH na 1 mm jej długości. W przypadku częstotliwości 868 MHz ścieżka o długości 1 cm miałaby wartość impedancji indukcyjnej około 54 Ω. Większość scieżek masy jest dłuższa niż podany przykład (1 cm), tym samym oczywiste jest, że niewypełnienie obszaru płytki doprowadzi do nieprawidłowej pracy układu. Niska impedancja pola masy pozwala na dostateczną separację dwóch różnych obwodów, pomiędzy którymi różnica amplitudy może wynosić nawet 120dB, tj. 1000000:1. W przypadku elementów montowanych powierzchniowo, na warstwie górnej powinny znajdować się elementy oraz linie z sygnałami, a na warstwie dolnej, pole podłączone do masy. Dobrym pomysłem jest wypełnienie całej możliwej przestrzeni na 8
płytce polem podłączonym do masy. W tym przypadku oba pola - na górnej oraz dolnej warstwie muszą być połączone z użyciem dużej liczby przelotek. Wszystkie połączenia do masy układu powinny być możliwie najkrótsze, a przelotki powinny znajdować się dostatecznie blisko pad ów łączonych z masą. 2.4.4 Prowadzenie ścieżek Prowadzone ścieżki nie powinny mieć ostrych krawędzi - należy unikać kątów prostych, gdyż tak poprowadzone ścieżki zachowują się jak antena. Prowadzenie ścieżek z zaokrąglonymi rogami zmniejsza możliwe problemy z występowaniem zjawiska interferencji elektromagnetycznej. Ze względu na fakt, iż linie z sygnałami cyfrowymi w przypadku pracy z wyższą częstotliwością generują dużo szumów, powinno unikać się prowadzenia linii sygnałowych toru radiowego w pobliżu układów cyfrowych. Obowiązkowe jest wypełnienie przelotkami powierzchni masy pod układem transceivera radiowego. Zwiększone długości ścieżek mają wpływ na pracę oscylatora kwarcowego, poprzez dodanie pasożytniczej pojemności do całkowitego obciążenia kwarcu. Aby zmniejszyć pasożytniczą pojemność, należy umieścić kwarc możliwie najbliżej układu transceivera. Użycie krótkich i bezpośrednich połączeń pomiędzy elementami zmniejsza zjawisko podciągania częstotliwości, spowodowane niepożądanymi pojemnościami. Długa ścieżka z sygnałem zegarowym może powodować zjawisko interferencji elektromagnetycznej. Wpływa to znacząco na obniżenie wydajności części odbiorczej toru radiowego, jak i dodaje częstotliwości harmoniczne z niepożądaną modulacją do toru radiowego. Należy zachować możliwie najkrótszą ścieżkę z sygnałem zegarowym. Dodatkowo ścieżka ta powinna zostać otoczona przyległym obszarem masy. Obszar masy pozwala na zredukowanie emisji zakłóceń oraz przesłuchu pojawiającego się przez sprzężenie pojemnościowe ze ścieżką sygnału zegarowego. 2.4.5 Dobór elementów indukcyjnych Używane elementy indukcyjne znajdujące się w torze radiowym powinny mieścić się w kategorii wysokich częstotliwości, a częstotliwość oscylacji własnych (SRF) powinna być co najmniej dwukrotnie większa niż częstotliwość pracy toru radiowego. Zastosowane elementy indukcyjne w projektowanych modułach (8.2nH i 22nH) mają wartość SRF 2.8 oraz 4.4GHz[14]. 9
3 Przebieg prac nad projektem Wszystkie prace nad projektem odbywały się według harmonogramu pracy, który określa poszczególne prace do wykonania w ramach realizacji projektu oraz czas wykonania prac. 3.1 Harmonogram prac Niezbędnym elementem przed realizacją projektu było ustalenie harmonogramu z uwzględnieniem czasu realizacji poszczególnych zadań do wykonania. 3.1.1 Zrealizowane etapy projektu ˆ 25 marca 2010 zakończenie przeglądu materiałów związanych z danym tematem ˆ 31 marca 2010 schemat układu elektronicznego ˆ 8 kwietnia 2010 projekt płytki drukowanej ˆ 15 kwietnia 2010 wykonanie płytki drukowanej ˆ 22 kwietnia 2010 montaż układu elektronicznego ˆ 29 kwietnia 2010 stworzenie oprogramowania pozwalającego na odczyt informacji z czujników oraz transmisję pojedynczych pakietów danych pomiędzy transceiverami radiowymi ˆ 6 maja 2010 zbadanie wpływu innych urządzeń radiowych na liczbę błędnie odebranych pakietów danych ˆ 13 maja 2010 opracowanie i implementacja protokołu komunikacji radiowej ˆ 20 maja 2010 stworzenie oprogramowania do wizualizacji danych z czujników ˆ 27 maja 2010 testy poprawności działania ˆ 3 czerwca 2010 opracowanie dokumentacji ˆ 10 czerwca 2010 sformułowanie raportu końcowego 10
4 Oprogramowanie Na etap opracowania oprogramowania składały się takie prace jak zapoznanie się z dokumentacjami wykorzystanych układów, ze sposobem użycia portu szeregowego komputera w systemach unix oraz z dokumentacją widgetu QwtPlot. 4.1 Oprogramowanie modułów Oprogramowanie modułu nadrzędnego i podrzędnego zostało napisane z wykorzystaniem środowiska AVR Studio firmy Atmel z zainstalowanym dodatkowo kompilatorem GNU GCC. 4.1.1 Ramka protokołu komunikacji radiowej Ramka danych rozpoczyna się ustaloną preambułą, zawierającą 3 bajty danych: 0xAA, 0x2D, 0xD4. Układ transceivera jest tak skonfigurowany, aby automatycznie synchronizował pobierane dane po wykryciu poprawnej preambuły. W efekcie transceiver po wykryciu poprawnej preambuły zapisuje do bufora FIFO pozostałe dane (bez preambuły)[1]. Następnie przesyłana jest starszy i młodszy bajt słowa 16-bitowego z wartością temperatury, starszy i młodszy bajt słowa 16-bitowego ze stanem baterii. Na końcu wysyłany jest starszy i młodszy bajt sumy kontrolnej CRC16. Struktura ramki danych: 0xAA 0x2D 0xD4 TH TL BH BL CRCH CRCL 4.1.2 Ramka protokołu komunikacji z komputerem Ramka danych rozpoczyna się ustaloną preambułą, zawierającą 1 bajty danych: 0xAA. Następnie przesyłana jest bajt z wartością temperatury, bajt ze stanem baterii. Na końcu wysyłany jest starszy i młodszy bajt sumy kontrolnej CRC16. Struktura ramki danych: 0xAA T B CRCH CRCL 4.1.3 Obsługa wyświetlacza EA DOGM162 Na potrzeby obsługi wyświetlacza LCD napisany został zestaw funkcji umożliwiający inicjalizację wyświetlacza, sterowanie podświetleniem, sprawdzenie flagi zajętości kontrolera, wysłanie komendy sterującej, wysłanie znaku, wyczyszczenie zawartości okna wyświetlacza, powrót kursora do pozycji początkowej. Wyświetlanie danych na wyświetlaczu realizowane jest z wykorzystaniem funkcji printf. 4.1.4 Obsługa transceivera MRF49XA Na potrzeby obsługi transceivera MRF49XA napisany został zestaw funkcji umożliwiający inicjalizację transceivera, resetowanie stanu transceivera, uruchomienie trybu oszczędności energii, odebranie ramki danych oraz wysłanie ramki danych. 4.1.5 Konfiguracja USART w mikrokontrolerze ATMega48PA Moduł USART skonfigurowany został do pracy w trybie asynchronicznym, z parametrami: 8 bitów danych, 1 bit stopu, kontrola parzystosci - parzyste (Even). 11
4.1.6 Obsługa i konfigracja interfejsu SPI/USI Interfejs SPI/USI został skonfigurowany do pracy w trybie (0,0). Tryb ten wymagany jest przez układ transceivera radiowego MRF49XA[1]. Napisane zostały funkcje umożliwiające wysłanie bajtu oraz słowa 16-bitowego. 4.1.7 Obsługa i konfiguracja licznika wznawiającego pracę mikrokontrolera ATTiny24A z trybu bezczynności Ze względu na wymagany niski pobór prądu poprzez mikrokontroler, po wysłaniu ramki z danymi, włączany jest tryb bezczynności. W trybie tym można użyć licznika do wznowienia pracy po określonym czasie[6]. W tym celu wykorzystany został licznik Timer1 oraz obliczone zostały wartości pozwalające uzyskać czas około jednej sekundy - preskaler 1024 oraz wartość komparatora 0x03D0. W efekcie po włączeniu stanu bezczynności po upływie około jednej sekundy wystąpienie przerwania TIM1 COMPA wznawia pracę mikrokontrolera. 4.1.8 Obsługa i konfigracja przetwornika A/C w mikrokontrolerze AT- Tiny24A Przetwornik analogowo-cyfrowy został skonfigurowany do pracy w trybie ciągłym Freerun. Wybrana została wartość źródła napięcia odniesienia z napięcia zasilania, więc zakres pomiarowy wynosi 0 3.3V. Wynik pomiaru jest wyrównany do prawej, dlatego operacja odczytu wartości z przetwornika wygląda następująco: value = ADCL; value += 256*ADCH; 4.1.9 Odczyt temperatury z czujnika MCP9701 Napięcie wyjściowe z czujnika podłączonego do wejścia ADC0 mikrokontrolera AT- Tiny24A mierzone jest 64 razy co 1ms, a suma wykonanych pomiarów jest zapisywana do ramki jako liczba 16-bitowa. Ponieważ napięcie wyjściowe czujnika temperatury wyraża się zależnością V OUT = 19.5[mV/ o C] T A [ o C] + 400[mV ][13], dlatego po odczycie danych przez moduł nadrzędny zmierzona suma poddawana jest operacjom: Temperature /= 64; Temperature -= 124; Temperature /= 6; 12
4.1.10 Odczyt stanu baterii Napięcie całkowicie naładowanej 3V litowej baterii bez obciążenia wynosi 3.6V, a przy nominalnym obciążeniu 3.3V. Przyjęte zostało więc, że napięcie w pełni naładowanej baterii wynosi 3.3V. Pomiar napięcia baterii wykonywany jest 64 razy co 1ms, a suma wykonanych pomiarów jest zapisywana do ramki jako liczba 16-bitowa. Ze względu na fakt, że napięcie odniesienia przetwornika analogowo-cyfrowego jest równe 3.3V, to zmierzona wartość baterii poddawana jest tylko jednej operacji: Battery /= 655; 4.2 Aplikacja dla komputera Aplikacja służąca do wizualizacji oraz rejestracji zmierzonej wartości temperatury napisana została z wykorzystaniem elementów biblioteki Qt. Rysunek 3: Widok okna aplikacji. Na rysunku 3 przedstawiony został widok okna aplikacji. W górnej części okna znajduje się okno wykresu prezentującego wartości temperatury zmierzonej przez moduł podrzędny. W dolnej części po lewej stronie znajdują się przycisk do połączenia/rozłączenia, pole wyboru portu szeregowego, przycisk zapisu danych do pliku oraz wkaźnik stanu baterii. Dane zapisywane są do pliku zgodnego z programem gnuplot. 13
Aby zobaczyć dane z pliku w formie wykresu wystarczy wypisać polecenie: gnuplot nazwa_pliku Wskaźnik baterii zmienia kolor w zależności od aktualnego stanu baterii. Gdy pozostało więcej niż 10% baterii wskaźnik przyjmuje kolor zielony. W przeciwnym przypadku - tj. gdy pozostało niewiecej niż 10% baterii wsaźnik przyjmuje kolor czerwony. 5 Podsumowanie W ramach realizacji projektu zbudowane zostały dwa moduły, które współpracując ze sobą umożliwiają zdalne monitorowanie temperatury. Zaletą zaprojektowanych modułów są niskie koszta budowy układu oraz względnie długi czas pracy modułu z czujnikiem przy zasilaniu bateryjnym. Podczas realizacji prac wymagana była umiejętność projektowania układów elektronicznych. Poznane zostało wiele zagadnień związanych z prawidłowym projektowaniem obwodów drukowanych dla układów z elementami w.cz. Duża część projektu skupia się właśnie na etapie projektowania modułów. Istotne było również sprecyzowanie założeń dotyczących budowy i parametrów modułu, a także wybór elementów spełniających wymagania. Zrealizowanie projektu pozwoliło pogłębić wiedzę w zakresie projektowania układów elektroniczych, wykorzystania układów radiowych w.cz., a także zapoznać się z nieznaną dotychczas biblioteką Qt o ogromnych możliwościach, dzięki której w bardzo prosty sposób można stworzyć aplikacje do wizualizacji danych pomiarowych. 14
A Zdjęcia zmontowanych modułów Poniżej zostały zamieszczone zdjęcia zmontowanych modułów. A.1 Moduł podrzędny Rysunek 4: Zdjęcie modułu podrzędnego - widok z góry. Rysunek 5: Zdjęcie modułu podrzędnego - widok od spodu. A.2 Moduł nadrzędny Rysunek 6: Zdjęcie modułu nadrzędnego - widok z góry bez wyświetlacza LCD. 15
Rysunek 7: Zdjęcie modułu nadrzędnego - widok z góry z wyświetlaczem LCD. Rysunek 8: Zdjęcie uruchomionego modułu nadrzędnego - widok z góry. Rysunek 9: Zdjęcie modułu nadrzędnego - widok od spodu. 16
B Schematy układu elektronicznego Poniżej znajdują się schematy ideowe, montażowe oraz widoki płytek drukowanych zaprojektowanych modułów. B.1 Moduł nadrzędny Rysunek 10: Schemat ideowy modułu nadrzędnego (1/2). 17
Rysunek 11: Schemat ideowy modułu nadrzędnego (2/2). 18
Rysunek 12: Płytka drukowana modułu nadrzędnego - warstwa TOP. Rysunek 13: Płytka drukowana modułu nadrzędnego - warstwa BOTTOM. Rysunek 14: Schemat montażowy modułu nadrzędnego - warstwa TOP. 19
Rysunek 15: Schemat montażowy modułu nadrzędnego - warstwa BOTTOM. 20
B.2 Moduł podrzędny Rysunek 16: Schemat ideowy modułu podrzędnego. 21
Rysunek 17: Płytka drukowana modułu podrzędnego - warstwa TOP. Rysunek 18: Płytka drukowana modułu podrzędnego - warstwa BOTTOM. 22
Rysunek 19: Schemat montażowy modułu podrzędnego - warstwa TOP. Rysunek 20: Schemat montażowy modułu podrzędnego - warstwa BOTTOM. 23
C Wykazy elementów Poniżej znajdują się wykazy elementów użytych do budowy zaporojektowanych modułów. C.1 Moduł nadrzędny C1 47pF 0603 1 szt. C10, C12, C16, C17, C19, C9, C20, C22, C24, C25, C7, C8 100nF 0603 12 szt. C11, C14 1uF 0805 2 szt. C13 22uF/16V SMDC 1 szt. C15, C6 10uF/10V SMDA 2 szt. C18 TPSC107K010R0075 1 szt. C2 10nF 0603 1 szt. C21, C23 4.7uF/10V SMDA 2 szt. C3 1.2pF 0603 1 szt. C4 27pF 0603 1 szt. C5 2.7pF 0603 1 szt. D1, D3 BYS10-45 2 szt. D2 P6SMBJ12A 1 szt. D4 LL-S172GC-2A 1 szt. IC1 MRF49XA 1 szt. IC2 ATMega48PA-20AU 1 szt. IC3 25AA02E48 1 szt. IC4 LM2597M-3.3 1 szt. IC5 FT232RL 1 szt. L1 100nH 0603 1 szt. L2 8.2nH 0603 1 szt. L3 22nH 0603 1 szt. L4 100uH DLG0504 1 szt. L5 LCBA-601 1 szt. LCD1 EA DOGM162S 1 szt. Q1 NDS355 1 szt. Q2 IRLML6401 1 szt. R1, R6, R7 10k 0603 3 szt. R2 0R 0805 1 szt. R3, R8 1k 0603 2 szt. R4, R5 10R 0805 2 szt. USB1 USBB-G 1 szt. X1 10MHz HC49S/SMD 1 szt. Z1 NCDW-02 1 szt. ZL1 ZL201-10G 1 szt. 24
C.2 Moduł podrzędny BT1 KEYS-108 / LS-14250 1 szt. C1, C19, C22, C24 47pF 0603 4 szt. C10, C12, C16, C17, C20, C7, C8, C9 100nF 0603 8 szt. C11, C18 TPSC107K010R0075 2 szt. C13 22uF/16V SMDC 1 szt. C14 4.7uF/10V SMDA 1 szt. C15, C6 10uF/10V SMDA 2 szt. C2 10nF 0603 1 szt. C3 1.2pF 0603 1 szt. C4 27pF 0603 1 szt. C5 2.7pF 0603 1 szt. D1 LL-S172GC-2A 1 szt. D2 P6SMBJ12A 1 szt. IC1 MRF49XA 1 szt. IC2 ATTiny24A-SSU 1 szt. IC3 25AA02E48 1 szt. IC4 L6920D 1 szt. L1 100nH 0603 1 szt. L2 8.2nH 0603 1 szt. L3 22nH 0603 1 szt. L4 22uH DLG0504 1 szt. R1 10k 0603 1 szt. R2 0R 0805 1 szt. R3 510R 0603 1 szt. U1 MCP9701 1 szt. U2 TPS3619 1 szt. U3 MMA7455L 1 szt. U4 LP2980AIM5-3.3 1 szt. X1 10MHz HC49S/SMD 1 szt. Z1 NCDW-02 1 szt. ZL1 ZL201-10G 1 szt. 25
Literatura [1] MRF49XA Datasheet, 2009, Microchip Technology, 2.2, 2.3.1, 4.1.1, 4.1.6 [2] Antenna Selection Guide, Application Note AN058, Texas Instruments, 2.3.1 [3] Powering Low-Power RF Products, Design Note DN019, Texas Instruments, 2.3.1, 2.4.1 [4] Adapting TI LPRF Reference Designs for Layer Stacking, Application Note AN068, Texas Instruments, 2.4.3 [5] ATmega48PA Datasheet, Rev B, 4/2010, Atmel Corporation, 2.3.1 [6] ATtiny24A Datasheet, Rev B, 3/2010, Atmel Corporation, 2.1, 2.3.1, 4.1.7 [7] ST7036 Datasheet V1.1, 12/2003, Sitronix, 2.3.1 [8] DOG-M Datasheet, Electronic Assembly, 2.3.1 [9] LP2980 Datasheet, 01/2009, National Semiconductor, 2.3.1 [10] L6920 Datasheet, 10/2006, STMicroelectronics, 2.3.1 [11] Designing with L6920DB, high efficiency syncronous rectifier step-up converter, Application Note AN2206, STMicroelectronics, 2.3.1 [12] TPS3619 Datasheet, 01/2007, Texas Instruments, 2.3.1 [13] MCP9701 Datasheet, 2005, Microchip Technology, 2.1, 2.3.1, 4.1.9 [14] High-Frequency Wound Chip Inductor Datasheet, Ferrocore, 2.4.5 [15] LM2597 Datasheet, 12/2000, National Semiconductor, 2.3.1 [16] BYS10-45 Datasheet, 2004, Vishay Semiconductors, 2.3.1 [17] TPS Series Low ESR Capacitor Datasheet, AVX, 2.3.1 [18] Unshielded SMD power inductors / DLG type, Ferrocore, 2.3.1 [19] 25AA02E48 2K SPI Bus Serial EEPROM with EUI-48 Node Identity, Datasheet, 2010, Microchip Technology, 2 [20] MMA7455L Technical Data, Rev 10, 12/2009, Freescale Semiconductor, 2.1 [21] FT232R Datasheet, Rev. 2.05, 2009, Future Technology Devices International Limited, 2.3.1 [22] diptrace.com, Novarm, 2.3 26