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