Wydział Elektroniki Wykrywacz przewodów ściennych
Transkrypt
Wydział Elektroniki Wykrywacz przewodów ściennych
Wydział Elektroniki Wykrywacz przewodów ściennych Wizualizacja danych sensorycznych - projekt Prowadzący: dr inż. Bogdan Kreczmer Wykonał: Jarosław Siarant 140410 Data: 14 czerwca 2008 1 Wstęp 1 1 Wstęp Celem projektu było zrealizowanie urządzenia, które wykrywa przewody ścienne. Ma ono również za zadanie podawać orientacje przewodu względem układu. Dlatego też w projekcie użyto trzech czujników zmiennego pola elektromagnetycznego, które generowane jest przez prąd płynące w obwodzie. Sam układ przetwarzania oparty jest na mikrokontrolerze Atmega8. Dane wizualizowane są na wyświetlaczu LCD. Zaimplementowana jest również komunikacja z komputerem, za pomocą protokołu RS232. Do urządzenia stworzono również interfejs graficzny napisany w QT. Poniżej przedstawiono budowę całego układu, zasadę działania oraz opis programu mikrokontrolera. 2 Budowa układu W tym punkcje przedstawiono budowę układu elektronicznego. Cały układ można podzielić na kilka części pełniących określona rolę. Jednym z elementów to układ detekcji przewodów. Do wykrywania zmiennego pola elektromagnetycznego wykorzystano układ licznika. Kolejny to układ przetwarzania danych z czujników (mikrokontroler) i sam układ wizualizacji danych za pomocą wyświetlacza LCD.Schemat całego układu (bez wyświetlacza) przedstawia rysunek 1. 2.1 Detekcja zmiennego pola elektromagnetycznego Jak już wspomniano wcześniej do detekcje pola elektromagnetycznego został wykorzystany układ licznika (model 4017). Jest to niestandardowe wykorzystane tego układu. Licznik ten na na wejściu bardzo dużą impedancję wejściową, dlatego też nawet niewielkie nadpęcie na wejściu powodują jego uruchomienia. Jako sensor podłączony do wejścia licznika wykorzystano krótki drucik, w który indukuje się siła elektromotoryczna, gdy jest on w zmiennym polu elektromagnetycznym. Na rysunku 2 widzimy schemat takiego układu. Do pinu P1 podłączony jest wspomniany wyżej sensor. Wyjście układu (dowolny wyjście licznika) podłączone jest do mikrokontroler. W przypadku wykrycia zmiennego pola elektromagnetycznego licznik zaczyna wysyłać impulsy, które są odbierane przez Atmege8. Detekcja zmiennego pola elektromagnetycznego 2 Rysunek 1: Schemat układu. 2.1 2.2 Układ przetwarzania danych 3 Rysunek 2: Schemat układu detekcji pola. 2.2 Układ przetwarzania danych Jako układ przetwarzania danych wykorzystano mikrokontroler Atmega8. Układ ten ma wystarczającą ilość podzespołów umożliwiającą zrealizowanie detektora. Cały układ elektroniczny miał za zadanie oprócz wykrycia przewodu podawać również jego orientacje. Dlatego zastosowano trzy czujniki zmiennego pola elektromagnetycznego. W mikrokontroler do zbierania danych wykorzystane są przerwania zewnętrzne (INT0 i INT1). Sama zastosowana Atmega posiada dwa wejścia przerwań zewnętrznych, dlatego trzeci czujnik został podłączony do pinu T0, który taktuje wewnętrzny zegar (Timer0). Mikrokontroler ma zadanie również tworzyć i wyświetlać informacje na wyświetlaczu LCD. Poniżej (rys. 3) przedstawiono schemat układu. Dokładna zasada działania przedstawiona będzie podczas opisu części programowej. 2.3 Układ wizualizacji danych - wyświetlacz LCD Do wizualizacji danych z czujników wykorzystano wyświetlacz LCD 2x16. Wykorzystano matrycę wyposażona jest w standardowy sterownik firmy Hitachi (44780). Układ wykorzystuje podłączenie do czterech Linei danych. Ogólny schemat podłączenia przedstawiono poniżej (rys. 4). 3 Opis części programowej 4 Rysunek 3: Schemat układu przetwarzania danych. 3 Opis części programowej W tej części dokumentu przedstawiona zostanie cześć programowa z dokładnym opisem sposobu realizacji poszczególnych elementów. Program został napisany z wykorzystaniem środowiska Kontrollerlab oraz kompilatora avr-gcc. Kod programu został zamieszczony w dodatku A. 3.1 Pozyskiwanie danych W sekcji (2.2) opasano sposób podłączenia czujników. Dwa czujniki wykorzystują przerwania zewnętrzne, natomiast trzeci możliwość taktowania licznika wewnętrznego (Timer0 ) z zewnętrznego oscylatora za pomocą pinu T0. Gdy układ detekcji wykryje przewód zaczyna wysalać impulsy. Praktyczne na mikrokontrolerze sprowadza się to do sprawdzania czy licznik Wasyla impulsy czy nie. Aby wykorzystać opisane wyżej elementy należy je odpowiednio skonfigurować. I tak Timer0 został skonfigurowany do taktowania z zewnętrznego oscylatora (pin T0 ) oraz wartość licznika zerowała się przy zrównaniu z wartością w rejestrze OCR. 3.2 Sprawdzanie zmian wykrytych przez czujniki 5 Rysunek 4: Sposób podłączenia wybielacza LCD. Odblokowane również zmotały przerwania (przerwanie generowane przy zrównaniu). W funkcji obsługi przerwania ustawiony jest licznik który jest implementowany za każdym zrównaniem (implementowany z kolejnym impulsem). Podobnie zrealizowano funkcje obsługi przerwań zewnętrznych. Po odpowiednim ich skonfigurowaniu (przerwanie przy zbocze narastającym) w funkcjach obsługi przerwań inkrementowane są liczniki. Co określony okres czasu wartości liczników są sprawdzane. Dzięki temu mamy informacje o zmianach wykrytych przez czujniki. 3.2 Sprawdzanie zmian wykrytych przez czujniki Opisane wyżej liczniki niosą informacje o zmianach. Co pewien okres ich wartości są sprawdzane. Do tego celu wykorzystano Timer2. Jest to drugi licznik 8-bitowy dostępny w układzie Atmega8 (Timer1 16-bitowy nie był wykorzystywany). Jest on skonfigurowań również w trybie CTC, czyli wartość licznika zerowana jest podczas zrównania z wartością w rejestrze OCR i włączone ma przerwania. Taktowany jest z częstotliwością F CP U/1024 (F CP U - częstotliwość taktowania procesora). Przerwania generowane są co około 150ms. W funkcji obsługi przerwania sprawdzany jest stan liczników i ustawiane są zmienne informujące o biedzącej sytuacji. Zmienne te wykorzystywane są w funkcjach tworzenia grafiki wyświetlanej później na wyświetlaczu. 3.3 Wyświetlanie informacji użytkownikowi 3.3 6 Wyświetlanie informacji użytkownikowi Do wyświetlanie informacje użytkownikowi zaimplementowanie dwie funkcje. Jedna tworzy grafikę a kolejna ją wyświetla. Obie funkcje wywoływane są w głównej pętli programu. Funkcja do tworzenia grafiki wykorzystuje zmienne ustawiane w podczas cyklicznych przerwań opasanych w poprzednim punkcje (punkt 3.2). Tworzy ona 2 ciągi znaków, które potem są wyświetlane na LCD. 3.4 Komunikacja z wykorzystaniem protokołu RS232 W układzie zaimplementowana została również komunikacja (protokół RS232). Do prawidłowego działania wymagany jest zewnętrzny konwerter poziomów TTLRS232. Wiadome jest, że Atmega8 posiada moduł USART umożliwiający komunikacje szeregową. USART został ustawiony w trybie 8N1 (8 bitów danych, bez sprawdzania parzystości, 1 bit stopu). Prędkość komunikacja wynosi 4800 bodów. Odblokowane są również przerwania (generowane podczas przyjścia nowego znaku). Komunikacja z komputerem odbywa się poprzez odpytywanie. Po tym jak układ otrzyma znak ’v’ sprawdza stan zmiennych opisujących aktualną sytuację i odsyła znaki informujące o położeniu przewodu (l,r,c- przewód odpowiednio po lewej, prawej, w środku) lub wysyła zero jeśli nie wykryto niczego. 4 Opis interfejsu Do napisania interfejsu zostało wykorzystane środowisko QT w wersji 4.3 i kom- pilatora g++ w wersji 4.2 pod systemem operacyjnym Ubuntu. Obsługa portu komunikacji szeregowej z urządzeniem jest zgodna ze standardem POSIX. Aplikacje można podzielić na dwie części pierwsza odpowiedzialna za otwarcie portu, druga to okno główne w którym wizualizowane są dane pobrane z urządzenia. Oba okna Stworzono wykorzystując program QTDesigner. W oknie głównym znajduje się pasek menu. W menu Plik można wybrać opcje otwierania portu. Wtedy pojawia się okno dialogowe. 4.1 Okno główne 4.1 7 Okno główne Okno główne składa się z pola, w którym wyświetlana jest grafika oraz dwa przyciski do odpytywania i zrywania poleczenia (rys. 5). Zawiera ono również pasek menu i statusu. W menu Plik można wybrać opcje otwierania portu. Wtedy pojawia się okno dialogowe opisane w następnym punkcie. Przyciskiem Połącz rozpoczynamy odpytywanie urządzenia natomiast Rozłącz powoduje jego przerwanie. Samo odpytywanie jest okresowe (wykorzystany timer dostępny w QT). Rysunek 5: Okno główne 4.2 Konfiguracja portu komunikacji szeregowej Jak już wspomniano wyżej jednym z dwóch okien interfejsu jest okno wyboru parametrów portu (rys. 6). Jest to okno dialogowe. Umożliwia ono wybór urządzenia oraz prędkość transmisji. Komunikacja standardowo odbywa się w trybie 8N1 (8 bitów danych, bez parzystości, 1 bit stopu). W projekcie interfejsu została stworzona klasa, która dziedziczy formatkę stwo- 5 Opis realizacji programowej 8 Rysunek 6: Okno konfiguracji portu rzoną w QTDesigner. Dziedziczy również klasę obsługi portu Rs232. Po wciśnięciu przycisku Otwórz i jeśli nie wystąpią błędy parametry portu zostaję ustawione a deskryptor jest kopiowany do klasy obsługującej okno główne. 5 Opis realizacji programowej Program składa się z kilku klas, które pełnią określone funkcje. Główna jest klasa Interfejs. Dziedziczy ona formatkę okna głównego, stworzoną w programie QTDesigner oraz klasę Rs232, obsługującą komunikację. Klasa ta zwiera metody umożliwiające odpytywanie urządzenia (metoda askDevice()). Wysyła ona co określony czas zapytanie w postacie litery v. Uruchamiana jest podczas przepełnienia licznika (wykorzystany QTimer ). Po zapytaniu sprawdzania jest odpowiedź. Bez niej nie następuje ponowne odpytanie urządzenia. Dane wizualizowane są na polu typu QPainter. Do odświeżania tego pola wykorzystany został drugi licznik. Do tworzenia grafiki została zaimplementowana oddzielna klasa o nazwie Painter. W klasie Interfejs okresowo wysyłany jest sygnał update do pola Painter. Umożliwia to jego odświeżanie. Sama grafika składa się z “sygnalizatora wyszukiwania“, z elementu podającego kierunek znalezienia przewodu oraz słownie wyświetlane są informacje. Klasa Rs232 umożliwia otwieranie, pobieranie i wysyłanie danych przez port szeregowy. Konfiguracje portu odbywa się przed jego otwarciem wewnątrz metody open. Oddzielną częścią interfejsu jest obsługa otwarcia portu. Klasa OpenPort, która 6 Podsumowanie 9 to umożliwia, dziedziczy formatkę przedstawioną na rysunku 6. Wykorzystuje ona wspomniani wcześniej metodę open. Okno to jest typu dialogowego. Dla rozpoznania decyzji użytkownika jest wykorzystany zwracany statusu okna (po kliknięciu przycisku Otwórz status ustawiony jest jako accepted ). Deskryptor otwartego poru jest kopiowany do klasy Interfejs, gdzie następuje komunikacja. 6 Podsumowanie Obecnie na rynku jest sporo urządzeń umożliwiających wykrywanie przewodów pod napięciem. Ogólnie zdanie to jest dość trudne. Głownie z tego powodu. że pole wokół przewodnika jest bardzo małe, natomiast w ich obrębie jest mnóstwo urządzeń, które zakłócają prawidłową detekcje przewodów. Profesjonalne detektory emitują własne sygnały w przewodach dla skutecznego ich wykrycia. W Związku z powyższym w ramach tego projektu zostało zrealizowane kilaka różnych układów detekcji. Spośród nich wybrany zostali jeden, dość prosty, który lepiej sobie radził niż inne układy oparte na tranzystorach. Jest on bardzo czuły przez to w niektórych sytuacjach może niepoprawnie wykryć zmienne pole. Dodatkowo podczas testowana zauważono że ściany pokryte akrylem powodują duże nagromadzenie się ładunków przez co w niektórych przypałach uniemożliwiają prawidłowe wykrycie przewodu. 7 Wykorzystane materiały • http://www.sklep.avt.pl/go/ info/?id=46958 • http://www.atmel.com/dyn/resources/prod documents/doc2486.pdf • http://www.zytrax.com/tech/layer 1/cables/tech rs232.htm#pins • http://palmavr.sourceforge.net/cgi-bin/fc.cgi • http://www.tkdami.net/ṽoytek/programy/adc/Przetwornik AC.html • “Projektowanie systemów mikroprocesorowych”, Paweł Hadam, BTC, Warszawa 2004 • http://doc.trolltech.com/ 7 Wykorzystane materiały • http://www.kiernek.yoyo.pl/ • http://free.of.pl/q/qtmoux/ 10