Dalmierz optyczny raport Adam Oleksy 24 czerwca 2008 1 Celprojektu Celem projektu jest zbudowanie urządzenia pomiarowego opartego o dalmierz optyczny. Urządzenie ma za zadanie pomiar odległości przeszkody od czujnika. Pomiar ten wykonywany jest za pomocą czujnika optycznego GP2Y0A710K0F firmy Sharp. Podstawowymi założeniami jest interakcja użytkownika z urządzeniem za pomocą klawiatury oraz alfanumerycznego wyświetlacza LCD. Dodatkowo urządzenie może pracować w systemie wykorzystującym do komunikacji protokół Modbus. W systemie takim dalmierz jest urządzeniem podrzędnym. 2 Podstawoweelementy Urządzenie składa się z dwu podstawowych elementów, jakimi są: mikrokontroler MC9S12A64 firmy Freescale; dalmierz optyczny GP2Y0A710K0F firmy Sharp. 2.1 MikrokontrolerMC9S12A64 W projekcie wykorzystano 16-bitowy mikrokontroler firmy Freescale. Mikrokontroler ten zamontowano na płytce rozwojowej zaprojektowanej przez Marka Kabałę oraz Marka Wnuka. Dokumentację dotycząca modułu z procesorem można znaleźć na stronie domowej dra Marka Wnuka. W projekcie wykorzystano następujące zasoby mikrokontrolera: przetwornik analogowo-cyfrowy; modułsci; portyi/o 1
2.1.1 Przetwornikanalogowo-cyfrowy Przetwornik analogowo-cyfrowy wykorzystywany jest w celu konwersji sygnału napięciowego, pochodzącego z czujnika, na liczbę 10-bitową. Sam przetwornik pracuje w trybie pomiaru pojedynczego z wykorzystaniem przerwania informującego o zakończeniu pomiaru. Czas konwersji napięcia został ustawiony na 5µs. Obsługa tego zasobu została oparta o kod wygenerowany przez Processor Expert. 2.1.2 Komunikacja Moduł SCI wykorzystywany jest przy komunikacji urządzenia z komputerem. Konfiguracja modułu: prędkość transmisji 9600bps; brak bitu parzystości; jedenbitstopu. Urządzenie to obsługiwane jest przez podprogram do obsługi protokołu Modbus, pracującego w trybie ASCII. Implementacja została dostarczona przez dra Marka Wnuka oraz zmodyfikowana na potrzeby używanego mikrokontrolera przez autora projektu. 2.1.3 Interakcja z użytkownikiem W celu umożliwienia interakcji użytkownika z urządzeniem, zastosowano alfanumeryczny wyświetlacz LCD oraz prostą, 4-przyciskową klawiaturę. Oba te urządzenia podłączono do portów wejściowo-wyjściowych, znajdujących się w mikrokontrolerze. 2.2 Czujnikoptyczny W projekcie został wykorzystany czujnik optyczny firmy Sharp przestawiony na rysunku 1. Rysunek 1: Czujnik optyczny 2
Rysunek 2: Budowa czujnika optycznego 2.2.1 Budowaczujnika Budowa wewnętrzna czujnika przedstawiona jest na rysunku 2. Warto zwrócić uwagę na sposób zasilania. Rysunek 2 sugeruje, że masa znajduje się na nóżkach 1, 5, natomiast zasilanie2,3,orazżenóżkitesązwartezesobązgodniezeswoimprzeznaczeniem. Okazało się jednak, że czujnik użyty w niniejszym projekcie posiadał nóżki, które były od siebie odseparowane. 2.2.2 Zasadadziałania Zasada działania czujnika opiera się na dwu podstawowych elementach(rys. 2). Odległość obiektu od czujnika określana jest za pomocą linijki PSD(Position sensitive device) czułej na światło padające na jej powierzchnię. Rysunek 3: Linijka PSD 3
Na rysunku 3 przedstawiona jest schematyczna budowa linijki. Światło padające na czujnik powoduje rozpływ prądów poprzez elektrody Y1 oraz Y2. Ze stosunku tych dwu prądów(równanie(1)) można w prosty sposób obliczyć pozycję punktu, który jest oświetlony. x=k x I Y1 I Y2 I Y1 +I Y2 (1) Wykorzystując powyższy fakt można obliczyć odległość obiektu, który odbił światło wyemitowane przez nadajnik podczerwieni, wykorzystując zależność d=f L x, gdzie: f odległość czujnika PSD od soczewki, L odległość czujnika od nadajnika podczerwieni, x pozycja punktu padania promienia świetlnego na czujnik PSD(rys. 4). Rysunek 4: Zasada pomiaru z czujnikiem PSD Pomiar odległości wykonywany jest dwa razy: z zapaloną diodą, oraz z wyłączoną diodą. Wykonywane jest to w celu wyeliminowania tła. 2.2.3 Charakterystykaczujnika Charakteryzują go następujące wartości: zakres pomiarowy od 100 do 550 centymetrów; wyjście analogowe; napięciezasilaniaod4,5do5v; typowy pobór prądu 30mA. czaswykonaniapomiaru16,5±3,7ms. 4
Rysunek 5: Charakterystyki napięciowe czujnika optycznego Charakterystyka napięciowa czujnika przedstawiona jest na rysunkach 5. Widać z nich, że funkcja napięcia wyjściowego od odległości jest funkcją nieliniową. Analizując jednak drugi wykres można zauważyć, że funkcja napięcia wyjściowego od odwrotności odległości jest już funkcją liniową. 2.2.4 Linearyzacja sygnału wyjściowego W celu wyświetlenia wyniku pomiaru, wcześniej należy go zlinearyzować, tak aby pokazywał on odległość od badanego obiektu. Wiedząc, że napięcie wyjściowe czujnika jest odwrotnie proporcjonalne od odległości obiektu, można wyznaczyć ogólną postać funkcji daną wzorem: gdzie: Y adc =(2 16 1) a +b (2) d Y adc wartośćzuzyskanazprzetwornikaanalogowo-cyfrowego; d rzeczywista odległość obiektu od czujnika; a, b współczynniki linearyzacji. Wewzorzeużytododatkowowartości2 16 1.Spowodowanetojesttym,żeobliczenia wykonywane na mikrokontrolerze są stałoprzecinkowe. Dzięki dodaniu tej wartości uniknięto stosowania zmiennych zmiennoprzecinkowych, które to mogłyby znacznie wydłużyć czas poświęcony na obliczenia. Na rysunku 6 pokazane są punkty pomiarowe, na podstawie których wyliczono prostą regresji.wwynikutychobliczeńotrzymanowartościparametrów:a=0,46,b=219. 3 Budowaurządzenia 3.1 Schematelektryczny Na rysunku 3.1 został przedstawiony schemat elektryczny urządzenia. 5
550 Pomiar Linearyzacja 500 450 1024 VO 5 400 350 300 250 2 3 4 5 6 1 x [1/cm] 7 8 9 10 x 10 3 3.2 Schematblokowy Rysunek 6: Charakterystyka napięciowa czujnika Funkcjonalność urządzenia została przedstawiona na rysunku 7. Jednym z urządzeń służących do komunikacji, jest klawiatura, która została zbudowana z mikrostyków podłączonych do portu B mikrokontrolera. Z rysunku 8 widać, że jeden z najstarszych bitów portu służy do aktywowania lub dezaktywowania klawiatury. Reszta pinów portu pełni rolę wejść, do których podłączone są rezystory podciągające. Taka konfiguracja narzuca stan aktywny który ma wartość 0. Podobnie ustawienie najstarszego bitu na 0 aktywuje klawiaturę. Wyświetlacz jest podłączony do portu A mikrokontrolera i pracuje w trybie 4. bitowym. Bity te wykorzystywane są jako linie danych, dodatkowo potrzebne są 3 linie sterujące, tak więc wyświetlacz w sumie zajmuje siedem linii portu A. Na rysunku 9 pokazane jest schematyczne podłączenie wyświetlacza do mikrokontrolera. 4 Program 4.1 Mikrokotroler Program obsługujący mikrokontroler jest napisany w języku C w środowisku CodeWarrior. Podczas tworzenia oprogramowania zostały wykorzystane generatory kodu modułu Processor Expert(m.in. obsługa i konfiguracja przetwornika analogowo-cyfrowego). Ponadto wykorzystano bibliotekę implementującą protokół Modbus, napisaną przez dra Marka Wnuka. Została ona zmodyfikowana i poprawiona na potrzeby niniejszego projektu. Modyfikacje polegały na przystosowaniu implementacji do działania na procesorze 6
7
Rysunek 7: Schemat blokowy urządzenia Rysunek 8: Klawiatura urządzenia Rysunek 9: Podłączenie wyświetlacza do mikrokotrolera 8
MC9S12A64. 4.1.1 ProtokółModbus W urządzeniu zaimplementowano 3 podstawowe funkcje, umożliwiające urządzeniu pracę z innymi podzespołami systemu przy wykorzystaniu protokołu Modbus. Wykorzystana biblioteka udostępnia funkcje: funkcjanr3 odczytnrejestrów; funkcjanr16 zapisnrejestrów; funkcja nr 17 identyfikacja urządzenia. Stan urządzenia zapisany jest w 4 kolejnych rejestrach poczynając od rejestru nr 1001. Zapisane są w nich kolejno: 1. aktualna wartość odczytana z przetwornika analogowo-cyfrowego; 2. aktualna wartość odległości(zlinearyzowany pomiar); 3. parametr a wykorzystywany w linearyzacji(wartość jest 100 razy większa); 4. parametr b wykorzystywany w linearyzacji. Zapis do dwu pierwszych rejestrów nie skutkuje zmianami w działaniu urządzenia. Natomiast zapis do dwu kolejnych rejestrów(tj. 1003 i 1004) powoduje zmiany funkcji linearyzującej. Zmiany widoczne są już przy kolejnym odczycie. 4.1.2 Obsługaurządzenia Jak wcześniej wspomniano, do komunikacji z urządzeniem służy alfanumeryczny wyświetlacz LCD oraz 4-przyciskowa klawiatura. Po uruchomieniu urządzenia na wyświetlaczu pokazuje się menu składające się z: Poj. pomiar Ciag. pomiar Tryb Modbus Konfiguracja Do poruszania po menu służą trzy pierwsze służące kolejno do: wejście do wybranej pozycji; wybranie niższej pozycji; wybranie wyższej pozycji. 9
We wszystkich trybach aktywny jest przynajmniej jeden(pierwszy) przycisk służący do powrotu do menu. W trybach pracy ręcznej(pojedynczy oraz ciągły pomiar) aktywny jest także drugi przycisk służący do wyzwolenia wykonania pomiaru. W przypadku pomiaru pojedynczego wykonywany jest jeden pomiar po każdym wyzwoleniu. Natomiast w przypadku pomiaru ciągłego naciśnięcie drugiego przycisku powoduje rozpoczęcie serii pomiarowej, lub jej zakończenie. W przypadku menu konfiguracyjnego aktywne są wszystkie przyciski. Przycisk 2 i 3 powoduje odpowiednio zmniejszenie lub zwiększenie wybranego parametru. Przycisk 4 powoduje przejście do kolejnego parametru, następnie zatwierdza wprowadzone zmiany. W każdej chwili aktywny jest przycisk 1 powodujący powrót do menu bez wprowadzania zmian. W trybie Modbus aktywny jest jedynie przycisk 1 powodujący powrót do menu. 4.2 Master W celu obsługi urządzenia z poziomu komputera stworzono prostą aplikację symulującą urządzenie nadrzędne. Program ten odpytuje co sekundę urządzenie podrzędne a następnie wyświetla wynik na standardowym wyjściu. Dodatkowo na standardowym wyjściu błędów wyświetlane są dokładne informacje dotyczące odczytanych rejestrów. Wywołanie programu ma postać lcd2modbus[-aparam -bparam -ddevice] gdzie: - PARAM liczba całkowita; - DEVICE ścieżka bezwzględna do urządzenia szeregowego. Dodatkowo a przyjmuje tylko wartości dodatnie i powoduje zmianę parametru a wykorzystywanego przy linearyzacji. Wartość podawana w linii poleceń powinna być 100 razywiększaodpierwotnej.oznaczato,żejeżelichcemyabya=0,46,jakoargument powinniśmy podać wartość 46. Parametr b przyjmuje wartości dodatnie oraz ujemne i powoduje zmianę parametru b wykorzystywanego przy linearyzacji. 5 Wnioski Wynikiem projektu jest działające urządzenie spełniające założenia. Uwagę jednak należy zwrócić na zastosowany czujnik. Pomimo zastosowania dobrego układu pomiarowego(osobny stabilizator dla napięcia referencyjnego), odczyty są niestabilne i niedokładne. Problem nasila się w momencie pomiaru odległości większych niż 3m. Zastosowanie uśredniania wyniku z 100 kolejnych próbek(około 10 pomiarów czujnika) nie zmieniło sytuacji. Problemy pokazały się także przy linearyzacji, gdyż zmiana nawet o jeden wartości odczytanej z przetwornika analogowo-cyfrowego, zmienia wynik o kilka centymetrów. Problem ten także nasila się wraz ze zwiększaniem odległości. 10
Podsumowując, urządzenie nadaje się do wykonywania zgrubnych pomiarów odległości. 11