Sprawozdanie z projektu: Dalmierz optyczny

Transkrypt

Sprawozdanie z projektu: Dalmierz optyczny
Sprawozdanie z projektu:
Dalmierz optyczny
Konrad Ćwiąkała
13 czerwca 2008
∗
Wizualizacja danych sensorycznych - Projekt.
Prowadzący - Dr inż. Bogdan Kreczmer
1
∗
1
Wstęp
Celem projektu było stworzenie dalmierza optycznego, w oparciu o czujnik typu PSD (GP2Y0A02) firmy Sharp. Dodatkowo zrealizowano funkcję
skanowania otoczenia w zakresie (−90◦ : +90◦ ). Wizualizację wyników
pomiarów zrealizowano przy pomocy wyświetlacza graficznego opartego o
sterownik S1D15705. Zaimplementowano także prosty protokół komunikacji
z komputerem poprzez złącze RS232.
Rysunek 1: Zdjęcie wykonanego urządzenia
2
2
Elementy składowe urządzenia
Na poniższym schemacie blokowym, przedstawiono najważniejsze elementy
składające się na zrealizowany projekt. W kolejnych podpunktach zostaną
przedstawione poszczególne moduły urządzenia.
Rysunek 2: schemat blokowy urządzenia
Na następnej stronie przedstawiano schemat elektroniczny płyty głównej
wykonanego urządzenia. Do płyty głównej poprzez oznaczone na schemacie
złącza zostały podłączone odpowiednie moduły. W kolejnych podpunktach
zostaną omówione poszczególne elementy płyty głównej oraz moduły peryferyjne dalmierza.
3
1
2
3
4
P2
+12 +5
1
2
+12
+5
U4
U2
U3
IN
P1
A
2
IN
C3
1000uF
L7805
Power
1
Switch
3
2
1
OUT
GND
OUT
GND
PB0 2
PB1 7
PB2 10
PB3 15
2
C4
3
1
1
9
PB4
220uF
78L33
IN1
IN2
IN3
IN4
EN1
EN2
4
5
12
13
+5
P6
VCC
VC
OUT1
OUT2
OUT3
OUT4
16
8
P5
3
6
11
14
1
2
3
4
5
6
GND
GND
GND
GND
GND
2
4
6
8
10
R1, R2, ... , R9 = 100K
+5
+3.3
R4
R5
R6
R7
R8
P7
Motor
PA1
PD4
PD5
PD6
PD7
L293D
1
3
5
7
9
A
R9
1
3
5
7
9
2
4
6
8
10
PA2
Keyboard
+5
GND
ISP
GND
R3
B
B
C5
+5
100uF
U1
1
2
3
4
5
6
7
8
GND
U5
C6
2
16
1uF
C7
VDD
VCC
1uF
14
7
P9
C
13
8
3
2
1
6
RS232
C8
1uF
T1OUT
T2OUT
C1+
C1C2+
C2T1IN
T2IN
R1IN R1OUT
R2IN R2OUT
VEE
GND
1
3
4
5
11
10
C9
1uF
C10
1uF
14
15
16
17
18
19
20
21
12
9
15
MAX232
9
PB0 (XCK/T0)
PB1 (T1)
PB2 (AIN0/INT2)
PB3 (AIN1/OC0)
PB4 (SS)
PB5 (MOSI)
PB6 (MISO)
PB7 (SCK)
PD0 (RXD)
PD1 (TXD)
PD2 (INT0)
PD3 (INT1)
PD4 (OC1B)
PD5 (OC1A)
PD6 (ICP)
PD7 (OC2)
RESET
C1
+5
R2
P4
D
1
C?
R1
2
33pF
12
13
XTAL2
XTAL1
Y1
16MHz
P3
PA0 (ADC0)
PA1 (ADC1)
PA2 (ADC2)
PA3 (ADC3)
PA4 (ADC4)
PA5 (ADC5)
PA6 (ADC6)
PA7 (ADC7)
PC0 (SCL)
PC1 (SDA)
PC2 (TCK)
PC3 (TMS)
PC4 (TDO)
PC5 (TDI)
PC6 (TOSC1)
PC7 (TOSC2)
VCC
AVCC
AREF
GND
GND
1
2
3
40
39
38
37
36
35
34
33
Sensor
GND
22
23
24
25
26
27
28
29
C
P8
+5
+3.3
10
30
32
+5
31
11
PC6
PC4
PC2
PC0
PA6
PA4
ATmega32-16PC
1
3
5
7
9
11
13
15
PC7
PC5
PC3
PC1
PA7
PA5
PA3
2
4
6
8
10
12
14
16
LCD
33pF
GND
GND
3
2
1
Title
Dalmierz optyczny - płyta główna
D
GND
Encoder
Size
Number
Revision
A4
GND
Date:
File:
1
2
3
2008-06-03
D:\Work\..\Sheet1.SchDoc
Sheet of
Drawn By:
4
Konrad Ćwiąkała
2.1
Zasilanie
Do zasilania urządzenia zastosowano zasilacz sieciowy, dający na wyjściu
napięcie 12V przy prądzie rzędu 500mA. Nieustabilizowany prąd z zasilacza
został wykorzystany do sterowania silnikiem krokowym. Stabilizacji napięcia podawanego na elementy cyfrowe dokonano na stabilizatorze liniowym
L7805. Przy obniżaniu napięcia z 12V do 5V i stosunkowo dużym poborze
prądu przez układ, występowały znaczne straty mocy wydzielanej w postaci
ciepła. Dla zabezpieczenia stabilizatora przed przegrzaniem zastosowano radiator o powierzchni 0.25dm2 . Drugi stabilizator widoczny na schemacie
(78L33) był wykorzystywany tylko to do generowania napięcia odniesienia
dla przetwornika ADC.
2.2
Mikrokontroler
W urządzeniu zastosowano mikokontroler ATmega32 należący do rodziny
AVR produkowanej przez firmę ATMEL. Jest to 8-bitowy procesor zbudowany w architekturze RISC. Poniżej przedstawiono niektóre własności
wybranego mikrokontrolera:
• 32 kB pamięci Flash
• 2 kB pamięci SRAM
• 1kB pamięci EEPROM
• 32 programowalne linie I/O
• 2 timery 8-bitowe i timer 16-bitowy
• 8-kanałowy, 10-bitowy przetwornik ADC
• port transmisji szeregowej USART
• interfejs SPI
Podobnie jak we wszystkich mikrokontrolerach z rodziny AVR, także w przypadku ATmega32, możliwe jest programowanie pamięci Flash w systemie
(In-System Programming). Mikrokontroler dostępny jest w kilku obudowach.
Ze względu na spore rozmiary urządzenia, oraz jego prototypowy charakter
postanowiono wybrać obudowę PDIP-40.
5
2.3
Sterownik silnika krokowego L293D
Do sterowania silnikiem krokowym wybrano układ L293D produkowany przez
firmę STMicroelectronics. Układ jest dedykowany do sterowania silnikami
szczotkowymi przy częstotliwościach sygnałów sterujących dochodzących do
5kHz. Ze względu na swoją architekturę może on zostać także wykorzystany
do sterowania unipolarnym silnikiem krokowym. W omawianym urządzeniu
każdy kanał sterownika obsługiwał jedno uzwojenie silnika. W czasie pracy
oba sygnały enable były ustawione na stałe (Sterowanie sygnałami enable
poprzez PWM mogło zapewnić pracę silnika w trybie mikrokrokowym).
Rysunek 3: Architektura sterownika L293D
Wykorzystany układ zapewnia możliwość sterowania prądami rzędu 600mA
na kanał (1.2A w impulsie). Układ posiada dodatkowo wbudowane diody
zabezpieczające oraz zabezpieczenie temperaturowe. Na sterownik można
podać napięcie dochodzące do 36V, przy obsłudze logiki na poziomach TTL.
Do sterowania układem wykorzystano 6 linii wyjściowych mikrokontrolera (4
na obsługę kanałów i 2 generujące sygnały enable).
6
2.4
MAX232 (transceiver RS232 - TTL)
Układ MAX232 został wykorzystany w standardowej konfiguracji jako dwukierunkowy translator poziomów sygnałów RS232 i TTL. Zastosowanie układu było
konieczne dla zapewnienia komunikacji urządzenia z komputerem przez port
szeregowy.
Rysunek 4: Architektura transceivera MAX232
Na chwilę obecną w urządzeniu zaimplementowana została jedynie prosta
jednokierunkowa komunikacja z komputerem. Komunikacja odbywa się w
trybie tekstowym przy baud rate równym 19200. Jeden pakiet zawiera 8
bitów danych, 1 bit stopu, oraz bit parzystości (even parity). Dla zabezpieczenia przed utratą niektórych pakietów wysyłane paczki mają określony
format. Zaimplementowano trzy formaty wysyłanych paczek danych:
• B %s;
• D %d,%d;
• S %d,%d;
Pierwsze formatowanie oznacza wystąpienie zdarzenia (np. naciśnięcie przycisku), drugie pracę w trybie dalmierza, a trzecie w trybie skanera. W dwóch
ostatnich formatowaniach wysyłane liczby oznaczają odpowiednio pozycję
wieżyczki i zmierzoną odległość (w centymetrach). Każda paczka zakończona jest średnikiem.
7
2.5
Czujnik GP2Y0A02
W urządzeniu zastosowano czujnik typu PSD produkowany przez firmę Sharp.
Wybrany czujnik ma następujące właściwości:
• efektywny zasięg pomiaru 20cm-150cm
• zasilanie napięciem 4.5-5.5V
• napięcie wyjściowe 0-3V
Rysunek 5: Wygląd zewnętrzny czujnika GP2Y0A02
Rysunek 6: Zależność napięcia wyjściowego od mierzonej odległości
8
2.6
Wyświetlacz LCD z kontrolerem S1D15705
W urządzeniu zamontowano wyświetlacz graficzny o rozdzielczości 162x64
pikseli. Wyświetlacz posiada wbudowane podświetlenie diodowe. Całość
(wyświetlacz z podświetleniem) jest zasilana napięciem 5V i pobiera w czasie
pracy prąd rzędu 250mA.
Rysunek 7: Wygląd zastosowanego układu wyświetlacza
Do obsługi wyświetlacza konieczne było wykorzystanie 13 linii wyjściowych
mikrokontrolera.
2.7
Klawiatura
Częścią interfejsu urządzenia jest 6-przyciskowa klawiatura. Wyjścia klawiszy niewciśniętych były zwarte do masy. Odcięcie od masy i podanie na
odpowiadające przyciskowi wejście mikrokontrolera napięcia 5V następowało
po wciśnięciu przycisku.
9
2.8
Silnik krokowy M42SP-4
Do zrealizowania ruchomej wieżyczki skanera wykorzystano unipolarny silnik krokowy M42SP-4 firmy Mitsumi. Silniki tego typu są stosowane w
drukarkach do poruszania karetki z tuszem. Wykorzystany silnik ma następujące parametry:
• Znamionowe napięcie zasilania 24V
• Pobór prądu przy napięciu znamionowym 646mA
• Rozdzielczość 3.75◦ /step
W skonstruowanym urządzeniu sterowanie silnikiem odbywało się zawsze
w trybie półkrokowym, dzięki czemu uzyskano efektywną rozdzielczość skanera równą 1.875◦ . Do wykrycia skrajnych położeń wieżyczki skonstruowano
prosty czujnik krańcowy. Do spodniej części silnika doklejono 2 przełączniki,
natomiast do wału silnika przyczepiono kawałek laminatu. Laminat w skrajnych położeniach, włączając jeden z przełączników wywoływał przerwanie
mikrokontrolera.
Rysunek 8: Wygląd silnika, oraz stworzonego czujnika położeń krańcowych
10
3
Konstrukcja urządzenia
Do ostatecznego montażu elementów składowych wykorzystano dwie standardowe obudowy plastikowe. Mniejsza stanowi obrotową wieżyczkę urządzenia
wyposażoną w czujnik. Większa zawiera w sobie pozostałe moduły, łącznie z
gniazdem zasilania i gniazdem DB9-F pozwalającym na podłączenie urządzenia
do portu szeregowego komputera.
Rysunek 9: Mniejsza obudowa z okienkiem czujnika
Rysunek 10: Obie obudowy połączone za pomocą wału silnika
11
Dla ułatwienia obsługi urządzenia zbudowano interfejs składający się z
wyświetlacza graficznego i rozmieszczonych wokół niego klawiszy. Rozmieszczenie klawiszy jest zgodne z menu, programu obsługującego urządzenie, dzięki
czemu użytkowanie dalmierza jest bardzo proste.
Rysunek 11: Wygląd interfejsu urządzenia
4
Program wsadowy mikrokontrolera
Program obsługujący urządzenie napisano w języku C, w środowisku CodeVision AVR. Największym problemem okazała się obsługa wyświetlacza, która
wymagała napisania całej biblioteki funkcji pozwalającej na wygodną obsługę programową wyświetlania zarówno w trybie znakowym jak i w trybie
graficznym. Podstawowe funkcje obsługiwały:
inicjalizacja pracy wyświetlacza
wyczyszczenie całego wyświetlacza
wypełnienie całego wyświetlacza
wysłanie komendy do wyświetlacza
wysłanie danych do wyświetlacza
wysłanie znaku do wyświetlacza
wysłanie napisu do wyświetlacza
przejście do wskazanego miejsca
void
void
void
void
void
void
void
void
12
lcd
lcd
lcd
lcd
lcd
lcd
lcd
lcd
init();
clear();
fill();
wrc(char data);
wrd(char data);
wrw(char sign);
prnt(char *string);
gotoxy(int x,int y);
Na chwilę obecną nie udało się zrealizować wszystkich założeń narzuconych wcześniej na część programową projektu. Obsługiwane są dwa tryby
pracy skanera:
• Pomiar ciągły
• Skanowanie
Przy pracy urządzenia w trybie pomiar ciągły wieżyczka skanera jest
ustawiana na zadanej pozycji, a na wyświetlaczu pokazywana jest odległość
do przeszkody.
Tryb skanowanie zapewnia pomiar odległości w zakresie −90◦ : +90◦ .
Wynik pomiaru jest wyświetlany w formie wykresu. Na osi X przedstawiony
jest kąt obrotu wieżyczki, natomiast na osi Y przedstawiona jest odległość
do przeszkody.
5
Przykłady działania dalmierza
W tym rozdziale zamieszczono zdjęcia obrazujące działanie skonstruowanego
urządzenia w różnych przypadkach ustawienia sceny, przy pracy w trybie
dalmierza oraz w trybie skanera.
Rysunek 12: Obiekt w odległości 24cm na wprost
13
Rysunek 13: Obiekt w odległości 38cm na wprost
Rysunek 14: Brak obiektu w odległości mniejszej niż 1.5m przed dalmierzem
14
Rysunek 15: Obiekt w odległości 24cm na pozycji około −30◦
Rysunek 16: Skanowanie wnęki
15
Rysunek 17: Przeszkoda na tle wnęki
Rysunek 18: Dwie oddzielne płaskie przeszkody
16
Rysunek 19: Narożnik
Rysunek 20: Dwie płaskie przeszkody w różnych odległościach
17
Rysunek 21: Trzy wąskie przeszkody
6
Podsumowanie
Badania dowiodły, że urządzenie działa poprawnie. Pomiar odległości w
trybie dalmierza zapewnia dokładność rzędu ±1cm, przy odległościach do
przeszkody mniejszych niż 70cm. Wraz ze wzrostem odległości do przeszkody
wzrasta błąd pomiaru. Skaner zbudowany na bazie czujnika typu PSD jest
pozbawiony głównych wad związanych z konstrukcjami ultradźwiękowymi.
Możemy bardzo dobrze odwzorowywać wszelki wnęki i narożniki, a dokładność pomiaru jest w bardzo małym stopniu zależna od faktury przeszkody.
Wykorzystany w projekcie czujnik ma również swoje wady. Sensor PSD jest
bardzo czuły na zakłócenia w podczerwieni. Pracę urządzenia można bardzo
łatwo zaburzyć oświetlając czujnik dowolnym źródłem promieniowania podczerwonego np. pilotem do telewizora.
18