Sprawozdanie z projektu: Dalmierz optycznykreczmer/wds/projekty/SPR/2007-08/cwiakal… ·...
Transcript of Sprawozdanie z projektu: Dalmierz optycznykreczmer/wds/projekty/SPR/2007-08/cwiakal… ·...
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 czu-jnik typu PSD (GP2Y0A02) firmy Sharp. Dodatkowo zrealizowano funkcjęskanowania otoczenia w zakresie (−90◦ : +90◦). Wizualizację wynikówpomiarów zrealizowano przy pomocy wyświetlacza graficznego opartego osterownik S1D15705. Zaimplementowano także prosty protokół komunikacjiz 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 elementyskł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łównejwykonanego urządzenia. Do płyty głównej poprzez oznaczone na schemaciezłącza zostały podłączone odpowiednie moduły. W kolejnych podpunktachzostaną omówione poszczególne elementy płyty głównej oraz moduły peryfer-yjne dalmierza.
3
1
1
2
2
3
3
4
4
D D
C C
B B
A A
Title
Number RevisionSize
A4
Date: 2008-06-03 Sheet ofFile: D:\Work\..\Sheet1.SchDoc Drawn By:
PB0 (XCK/T0)1
PB1 (T1)2
PB2 (AIN0/INT2)3
PB3 (AIN1/OC0)4
PB4 (SS)5
PB5 (MOSI)6
PB6 (MISO)7
PB7 (SCK)8
RESET9
PD0 (RXD)14
PD1 (TXD)15
PD2 (INT0)16
PD3 (INT1)17
PD4 (OC1B)18
PD5 (OC1A)19
PD6 (ICP)20
PD7 (OC2)21
XTAL212
XTAL113
GND 11
PC0 (SCL) 22
PC1 (SDA) 23
PC2 (TCK) 24
PC3 (TMS) 25
PC4 (TDO) 26
PC5 (TDI) 27
PC6 (TOSC1) 28
PC7 (TOSC2) 29
AREF 32AVCC 30
GND 31
PA7 (ADC7) 33PA6 (ADC6) 34PA5 (ADC5) 35PA4 (ADC4) 36PA3 (ADC3) 37PA2 (ADC2) 38PA1 (ADC1) 39PA0 (ADC0) 40
VCC 10
U1
ATmega32-16PC12
Y116MHz
33pF
C1
33pF
C?R1
123
P4
Encoder
123
P3
Sensor
12345678910
P6
ISP
1 23 45 67 89 10
P7
Keyboard
1 23 45 67 89 1011 1213 1415 16
P8
LCD
1 2
P2
Switch
12
P1
Power
123456
P5
Motor
IN1
3
OUT 2
GND
U2
L7805 1000uF
C3
220uF
C4
GND
GND
IN1
3
OUT 2
GND
U3
78L33
+5 +3.3
GND
+5 +3.3
+5
GND
GND
R2
+5
+5
GND
R3
100uF
C5
+5
EN11
EN29
IN12
IN27
IN310
IN415 OUT1 3
OUT2 6
OUT3 11
OUT4 14
VC 8VCC 16
GND4
GND5
GND12
GND13
U4
L293D
+12
GND
+12 +5
PC0PC1PC2
PC4PC6
PC7PC5PC3
PA7PA6 PA5
PA3PA4
GND
+5
PB0PB1PB2PB3
PB4
GND
PA1PD4PD5PD6PD7
PA2
Dalmierz optyczny - płyta główna
Konrad Ćwiąkała
R4 R5 R6 R7 R8 R9
+5 R1, R2, ... , R9 = 100K
C1+ 1VDD2
C1- 3
C2+ 4
C2- 5
VEE6
T2OUT7
R2IN8 R2OUT 9
T2IN 10T1IN 11
R1OUT 12R1IN13
T1OUT14
GND 15
VCC16
U5
MAX232
123
P9
RS232
1uF
C9
1uFC10
1uF
C7
1uFC8
1uF
C6
2.1 Zasilanie
Do zasilania urządzenia zastosowano zasilacz sieciowy, dający na wyjściunapięcie 12V przy prądzie rzędu 500mA. Nieustabilizowany prąd z zasilaczazostał wykorzystany do sterowania silnikiem krokowym. Stabilizacji napię-cia podawanego na elementy cyfrowe dokonano na stabilizatorze liniowymL7805. Przy obniżaniu napięcia z 12V do 5V i stosunkowo dużym poborzeprądu przez układ, występowały znaczne straty mocy wydzielanej w postaciciepła. Dla zabezpieczenia stabilizatora przed przegrzaniem zastosowano ra-diator o powierzchni 0.25dm2. Drugi stabilizator widoczny na schemacie(78L33) był wykorzystywany tylko to do generowania napięcia odniesieniadla przetwornika ADC.
2.2 Mikrokontroler
W urządzeniu zastosowano mikokontroler ATmega32 należący do rodzinyAVR produkowanej przez firmę ATMEL. Jest to 8-bitowy procesor zbu-dowany w architekturze RISC. Poniżej przedstawiono niektóre własnościwybranego 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 przy-padku 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 charakterpostanowiono wybrać obudowę PDIP-40.
5
2.3 Sterownik silnika krokowego L293D
Do sterowania silnikiem krokowym wybrano układ L293D produkowany przezfirmę STMicroelectronics. Układ jest dedykowany do sterowania silnikamiszczotkowymi przy częstotliwościach sygnałów sterujących dochodzących do5kHz. Ze względu na swoją architekturę może on zostać także wykorzystanydo sterowania unipolarnym silnikiem krokowym. W omawianym urządzeniukażdy kanał sterownika obsługiwał jedno uzwojenie silnika. W czasie pracyoba sygnały enable były ustawione na stałe (Sterowanie sygnałami enablepoprzez 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 600mAna kanał (1.2A w impulsie). Układ posiada dodatkowo wbudowane diodyzabezpieczające oraz zabezpieczenie temperaturowe. Na sterownik możnapodać napięcie dochodzące do 36V, przy obsłudze logiki na poziomach TTL.Do sterowania układem wykorzystano 6 linii wyjściowych mikrokontrolera (4na 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 dwukierunk-owy translator poziomów sygnałów RS232 i TTL. Zastosowanie układu byłokonieczne dla zapewnienia komunikacji urządzenia z komputerem przez portszeregowy.
Rysunek 4: Architektura transceivera MAX232
Na chwilę obecną w urządzeniu zaimplementowana została jedynie prostajednokierunkowa komunikacja z komputerem. Komunikacja odbywa się wtrybie tekstowym przy baud rate równym 19200. Jeden pakiet zawiera 8bitów danych, 1 bit stopu, oraz bit parzystości (even parity). Dla zabez-pieczenia przed utratą niektórych pakietów wysyłane paczki mają określonyformat. 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 przy-cisku), drugie pracę w trybie dalmierza, a trzecie w trybie skanera. W dwóchostatnich formatowaniach wysyłane liczby oznaczają odpowiednio pozycjęwieżyczki i zmierzoną odległość (w centymetrach). Każda paczka zakońc-zona 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 162x64pikseli. Wyświetlacz posiada wbudowane podświetlenie diodowe. Całość(wyświetlacz z podświetleniem) jest zasilana napięciem 5V i pobiera w czasiepracy 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ściowychmikrokontrolera.
2.7 Klawiatura
Częścią interfejsu urządzenia jest 6-przyciskowa klawiatura. Wyjścia klaw-iszy niewciśniętych były zwarte do masy. Odcięcie od masy i podanie naodpowiadające przyciskowi wejście mikrokontrolera napięcia 5V następowałopo wciśnięciu przycisku.
9
2.8 Silnik krokowy M42SP-4
Do zrealizowania ruchomej wieżyczki skanera wykorzystano unipolarny sil-nik krokowy M42SP-4 firmy Mitsumi. Silniki tego typu są stosowane wdrukarkach do poruszania karetki z tuszem. Wykorzystany silnik ma następu-ją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ę zawszew trybie półkrokowym, dzięki czemu uzyskano efektywną rozdzielczość skan-era równą 1.875◦. Do wykrycia skrajnych położeń wieżyczki skonstruowanoprosty czujnik krańcowy. Do spodniej części silnika doklejono 2 przełączniki,natomiast do wału silnika przyczepiono kawałek laminatu. Laminat w skra-jnych położeniach, włączając jeden z przełączników wywoływał przerwaniemikrokontrolera.
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 stan-dardowe obudowy plastikowe. Mniejsza stanowi obrotową wieżyczkę urządzeniawyposażoną w czujnik. Większa zawiera w sobie pozostałe moduły, łącznie zgniazdem zasilania i gniazdem DB9-F pozwalającym na podłączenie urządzeniado 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ę zwyświetlacza graficznego i rozmieszczonych wokół niego klawiszy. Rozmieszcze-nie klawiszy jest zgodne z menu, programu obsługującego urządzenie, dziękiczemu 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 CodeVi-sion AVR. Największym problemem okazała się obsługa wyświetlacza, którawymagała napisania całej biblioteki funkcji pozwalającej na wygodną ob-sługę programową wyświetlania zarówno w trybie znakowym jak i w trybiegraficznym. Podstawowe funkcje obsługiwały:
inicjalizacja pracy wyświetlacza void lcd init();wyczyszczenie całego wyświetlacza void lcd clear();wypełnienie całego wyświetlacza void lcd fill();wysłanie komendy do wyświetlacza void lcd wrc(char data);wysłanie danych do wyświetlacza void lcd wrd(char data);wysłanie znaku do wyświetlacza void lcd wrw(char sign);wysłanie napisu do wyświetlacza void lcd prnt(char *string);przejście do wskazanego miejsca void lcd gotoxy(int x,int y);
12
Na chwilę obecną nie udało się zrealizować wszystkich założeń narzu-conych wcześniej na część programową projektu. Obsługiwane są dwa trybypracy skanera:
• Pomiar ciągły
• Skanowanie
Przy pracy urządzenia w trybie pomiar ciągły wieżyczka skanera jestustawiana 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 przedstawionyjest 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 skonstruowanegourządzenia w różnych przypadkach ustawienia sceny, przy pracy w trybiedalmierza 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 wtrybie dalmierza zapewnia dokładność rzędu ±1cm, przy odległościach doprzeszkody mniejszych niż 70cm. Wraz ze wzrostem odległości do przeszkodywzrasta błąd pomiaru. Skaner zbudowany na bazie czujnika typu PSD jestpozbawiony głównych wad związanych z konstrukcjami ultradźwiękowymi.Możemy bardzo dobrze odwzorowywać wszelki wnęki i narożniki, a dokład-ność pomiaru jest w bardzo małym stopniu zależna od faktury przeszkody.Wykorzystany w projekcie czujnik ma również swoje wady. Sensor PSD jestbardzo czuły na zakłócenia w podczerwieni. Pracę urządzenia można bardzołatwo zaburzyć oświetlając czujnik dowolnym źródłem promieniowania pod-czerwonego np. pilotem do telewizora.
18