Dalmierz optyczny – raport

Transkrypt

Dalmierz optyczny – raport
Dalmierz optyczny – raport
Adam Oleksy
24 czerwca 2008
1
Cel projektu
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
Podstawowe elementy
Urządzenie składa się z dwu podstawowych elementów, jakimi są:
• mikrokontroler MC9S12A64 firmy Freescale;
• dalmierz optyczny GP2Y0A710K0F firmy Sharp.
2.1
Mikrokontroler MC9S12A64
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;
• porty I/O
1
2.1.1
Przetwornik analogowo-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;
• jeden bit stopu.
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
Czujnik optyczny
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
Budowa czujnika
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
zasilanie 2, 3, oraz że nóżki te są zwarte ze sobą zgodnie ze swoim przeznaczeniem.
Okazało się jednak, że czujnik użyty w niniejszym projekcie posiadał nóżki, które były
od siebie odseparowane.
2.2.2
Zasada dział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.
IY 1 − IY 2
x = kx
(1)
IY 1 + IY 2
Wykorzystując powyższy fakt można obliczyć odległość obiektu, który odbił światło
wyemitowane przez nadajnik podczerwieni, wykorzystując zależność
L
d=f ,
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
Charakterystyka czujnika
Charakteryzują go następujące wartości:
• zakres pomiarowy od 100 do 550 centymetrów;
• wyjście analogowe;
• napięcie zasilania od 4, 5 do 5V;
• typowy pobór prądu 30mA.
• czas wykonania pomiaru 16, 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:
a
Yadc = (216 − 1) + b
(2)
d
gdzie:
• Yadc – wartość z uzyskana z przetwornika analogowo-cyfrowego;
• d – rzeczywista odległość obiektu od czujnika;
• a, b – współczynniki linearyzacji.
We wzorze użyto dodatkowo wartości 216 − 1. Spowodowane to jest tym, że obliczenia
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. W wyniku tych obliczeń otrzymano wartości parametrów: a = 0, 46, b = 219.
3
3.1
Budowa urządzenia
Schemat elektryczny
Na rysunku 3.1 został przedstawiony schemat elektryczny urządzenia.
5
550
Pomiar
Linearyzacja
500
1024 V5O
450
400
350
300
250
2
3
4
5
1
x
6
[1/cm]
7
8
9
10
−3
x 10
Rysunek 6: Charakterystyka napięciowa czujnika
3.2
Schemat blokowy
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
4.1
Program
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:
• funkcja nr 3 – odczyt n rejestrów;
• funkcja nr 16 – zapis n rejestró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ługa urzą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
razy większa od pierwotnej. Oznacza to, że jeżeli chcemy aby a = 0, 46, jako argument
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