WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu Jakub Stanisz 19 czerwca 2008
1 Wstęp Celem mojego projektu było stworzenie dalmierza, opierającego się na czujniku PSD. Zadaniem dalmierza była komunikacja z komputerem poprzez łącze RS232 oraz wizualizacja pracy na ekranie LCD. Dalmierz miał pracować w trzech trybach: pomiar pojedynczy, pomiar uśredniony (z zadanego czasu) oraz pomiar aktualnej odległości. Trzy tryby pracy dostępne są na ekranie komputera, natomiast na wyświetlaczu LCD jest stale widoczna aktualna odległość wykrywana przez czujnik. 2 Wykorzystane elementy Do wykonania mojego zadania użyłem następujących elementów elektronicznych: 2.1 Mikrokontroler Do obsługi czujnika optycznego użyłem 8-bitowego mikrokontrolera atmega 32. Użyłem go ze względu na dużą ilość dostępnych materiałów związanych z mikrokontolerami AVR, odpowiednią ilość wyprowadzeń oraz łatwość dostępu do kompilatorów C++ dedykowanych specjalnie dla mikroprocesorów AVR. W materiałach dodatkowych zamieszczam jego szczegółową dokumentację. 2.2 Wyswietlacz LCD Wyświetlacz jakiego użyłem do wizualizacji wyników bezpośrednio z czujnika to LMC-SSC2M16DEYW-03. Jest to wyświetlacz alfanumeryczny 2x16 (posiada dwa rzędy po szesnaście znaków). Połączenie między mikrokontrolerem a LCD jest zrealizowane w trybie 4-bitowym, bez kontroli flagi zajętości. Wyświetlacz podłączony jest do portu B mikrokontrolera (szczegółowy schemat podłączenia poniżej). Dokumentacja samego wyświetlacza została zamieszczona w materiałach dodatkowych. 2.3 MAX 232 Układ scalony MAX232 to część zastosowana do obsługi portu RS232. Układ MAX232 zawiera w sobie zintegrowaną przetwornicę napięcia. Dzięki temu przy zasilaniu 3V - 5V (wartości sygnałów z mikrokontrolera) uzyskujemy potrzebne napięcia -12V - 12V, potrzebne dla zapewnienia zgodności ze standardem RS232. Standard ten opisuje sposób połączenia urządzenia końcowego danych - komputer, oraz urządzenia komunikacji danych - dalmierz. Dokumentacja dostępna w materiałach dodatkowych. 2.4 Stabilizator napięcia Stabilizator napięcia jakiego użyłem to popularny stabilizator ST7805. Stabilizuje on napięcie wejściowe, które wynosiło okolo 12V, na napięcie 5V, potrzebne do zasilenia mikrokontrolera oraz innych peryferiów. Dalsze informacje dostępne w materiałach dodatkowych. 1
2.5 Czujnik optyczny Czujnik jaki zastosowałem to bardzo popularny czujnik Sharpa GP2D120. Mierzy on odległość w zakresie od 4 cm do 30 cm. Zależność odległości od napięcia przedstawia poniższy wykres. Szczegółowe informacje o czujniku można znaleźć w informacjach dodatkowych. 2
2.6 Schemat układu Poniżej zamieszczam schemat całej płytki: Rzeczywisty wygląd całego układu wygląda następująco: 3
3 Oprogramowanie 3.1 Oprogramowanie mikrokontrolera Do oprogramowania mikrokontrolera użyłem programu AtmanAVR. Jest on bardzo przejrzysty i intuicyjny w obsłudze. Program ten potrafi sam konfigurować porty mikrokontrolera (po wybraniu w menu konfiguracji, w kodzie pojawiają się przypisane odpowiednie wartości do odpowiednich rejestrów). Znacznie przyspiesza to odpowiednią konfigurację portów. 3.2 Opis wizualizacji na LCD Na LCD wyświetlane są cały czas wartości odległości wykrytego przedmiotu od czujnika. Wartość odległości jest zależna od napięcia wyjściowego z czujnika. Napięcia podzielone są na przedziały według których jest wyświetlana odpowiednia odległość. Tabelę tych zależności zamieszczam poniżej: Przedział napięcia [V] Wartość odległości [cm] (, 2.50 3.0 (2.50, 2.45 4.0 (2.45, 2.20 5.0 (2.20, 2.00 6.0 (2.00, 1.80 7.0 (1.80, 1.58 8.0 (1.58, 1.40 9.0 (1.40, 1.25 10.0 (1.25, 1.15 12.0 (1.15, 0.95 14.0 (0.95, 0.80 17.0 (0.80, 0.72 19.0 (0.72, 0.65 21.0 (0.65, 0.55 25.0 (0.55, 0.42 30.0 (0.42, 0.38 35.0 (0.38, 0.32 40.0 (0.32, ) > 40.0 Kod źródłowy programu wczytanego do mikrokontrolera (wraz z dokładnym opisem użytych funkcji) zamieszczam w materiałach dodatkowych. 3.3 Interfejs na komputerze Na komputerze został stworzony prosty interfejs w języku C. Do programu przekazywane są dane z portu COM6. Po sprawdzeniu szeregu błędow związanych z połączeniem płytki i komputera przechodzimy do głównej części programu. Zaczynamy pobierać wartości napięcia odczytywane z przetwornika ADC. Wartości odległości wyświetlane w programie komputerowym, podobnie jak w programie zaimplementowanym na mikrokontrolerze, zależne są od przedziału, w którym znajduje się odczytana wartość napięcia. Stworzony przeze mnie interfejs pozwala na wybranie jednego z trzech wspomnianych wcześniej trybów pracy: 4
Pomiar pojedynczy Jest to pojedyncza wartość odległości zczytana w momencie włączenia tej opcji. Pomiar uśredniony Jest to pomiar uśredniony z danego czasu podanego przez użytkownika (w sekundach). Czas podany przez użytkownika mnożony jest przez ilość pomiarów wykonywanych w czasie jednej sekundy. Jest on dzielony następnie przez całą ilość próbek. Wyliczona w ten sposób wartość zostaje pokazana użytkownikowi. Pomiar aktualnej odległości W tym trybie wyświetlana jest cały czas aktualna wartość odległości (podobnie jak na ekranie LCD). Kod źródlowy programu oraz opis użytych funkcji można znaleźć w materiałach dodatkowych. Widok interfejsu przedstawiony jest poniżej: Kod źródłowy programu załączony jest w informacjach dodatkowych. 3.4 Opis protokołu komunikacji z komputerem Transmisja danych odbywa się z następującymi parametrami: Liczba bitów na sekundę - 4800 Bity danych - 8 Parzystość - brak Bity stopu - 2 4 Bibliografia Dokumentacja użytego sprzętu: Dokumentacja użytego sprzętu została załączona do materiałów dodatkowych. 5
Forum elektroniczne: www.elektroda.pl Opis podłączenia mikrokontrolera z wyświetlaczem LCD www.mikrokontrolery.net 6