Sprawozdanie z projektu: Dalmierz optyczny Konrad Ćwiąkała czerwca 008 Wizualizacja danych sensorycznych - Projekt. Prowadzący - Dr inż. Bogdan Kreczmer
Wstęp Celem projektu było stworzenie dalmierza optycznego, w oparciu o czujnik typu PSD (GPY0A0) 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 SD5705. Zaimplementowano także prosty protokół komunikacji z komputerem poprzez złącze RS. Rysunek : Zdjęcie wykonanego urządzenia
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 : 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.
4 A +5 P Power P6 4 6 8 0 + 5 7 9 U IN OUT L7805 +5 P Switch C 000uF +5 +. U IN OUT 78L C4 0uF PB0 PB PB PB PB4 7 0 5 9 4 5 U4 IN IN IN IN4 EN EN L9D VCC VC OUT OUT OUT OUT4 6 8 6 4 + +5 P5 4 5 6 Motor R4 R5 R6 R7 R8 R9 +5 R, R,..., R9 = 00K PA PD4 PD5 PD6 PD7 P7 4 5 6 7 8 9 0 Keyboard PA A ISP R B B C5 00uF U +5 P C P9 RS C6 uf C7 uf C8 uf +5 R 6 4 7 8 6 U5 VDD C+ VCC C- C+ C- TOUT TIN TOUT TIN RIN ROUT RIN ROUT VEE MAX R 4 5 0 9 5 C9 uf C0 uf C pf C? Y 6MHz 4 5 6 7 8 4 5 6 7 8 9 0 9 PB0 (XCK/T0) PB (T) PB (AIN0/INT) PB (AIN/OC0) PB4 (SS) PB5 (MOSI) PB6 (MISO) PB7 (SCK) PD0 (RXD) PD (TXD) PD (INT0) PD (INT) PD4 (OCB) PD5 (OCA) PD6 (ICP) PD7 (OC) RESET XTAL XTAL ATmega-6PC PA0 (ADC0) PA (ADC) PA (ADC) PA (ADC) PA4 (ADC4) PA5 (ADC5) PA6 (ADC6) PA7 (ADC7) PC0 (SCL) PC (SDA) PC (TCK) PC (TMS) PC4 (TDO) PC5 (TDI) PC6 (TOSC) PC7 (TOSC) VCC AVCC AREF 40 9 8 7 6 5 4 4 5 6 7 8 9 0 0 +5 +. +5 PC6 PC4 PC PC0 PA6 PA4 P8 Sensor 4 5 6 7 8 9 0 4 5 6 LCD PC7 PC5 PC PC PA7 PA5 PA C D P4 Encoder pf Title Size Dalmierz optyczny - płyta główna Number Revision D A4 Date: 008-06-0 Sheet of File: D:\Work\..\Sheet.SchDoc Drawn By: Konrad Ćwiąkała 4
. Zasilanie Do zasilania urządzenia zastosowano zasilacz sieciowy, dający na wyjściu napięcie V 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 V 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.5dm. Drugi stabilizator widoczny na schemacie (78L) był wykorzystywany tylko to do generowania napięcia odniesienia dla przetwornika ADC.. Mikrokontroler W urządzeniu zastosowano mikokontroler ATmega 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: kb pamięci Flash kb pamięci SRAM kb pamięci EEPROM programowalne linie I/O timery 8-bitowe i timer 6-bitowy 8-kanałowy, 0-bitowy przetwornik ADC port transmisji szeregowej USART interfejs SPI Podobnie jak we wszystkich mikrokontrolerach z rodziny AVR, także w przypadku ATmega, 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
. Sterownik silnika krokowego L9D Do sterowania silnikiem krokowym wybrano układ L9D 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 : Architektura sterownika L9D Wykorzystany układ zapewnia możliwość sterowania prądami rzędu 600mA na kanał (.A w impulsie). Układ posiada dodatkowo wbudowane diody zabezpieczające oraz zabezpieczenie temperaturowe. Na sterownik można podać napięcie dochodzące do 6V, przy obsłudze logiki na poziomach TTL. Do sterowania układem wykorzystano 6 linii wyjściowych mikrokontrolera (4 na obsługę kanałów i generujące sygnały enable). 6
.4 MAX (transceiver RS - TTL) Układ MAX został wykorzystany w standardowej konfiguracji jako dwukierunkowy translator poziomów sygnałów RS i TTL. Zastosowanie układu było konieczne dla zapewnienia komunikacji urządzenia z komputerem przez port szeregowy. Rysunek 4: Architektura transceivera MAX 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 900. Jeden pakiet zawiera 8 bitów danych, 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
.5 Czujnik GPY0A0 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 0cm-50cm zasilanie napięciem 4.5-5.5V napięcie wyjściowe 0-V Rysunek 5: Wygląd zewnętrzny czujnika GPY0A0 Rysunek 6: Zależność napięcia wyjściowego od mierzonej odległości 8
.6 Wyświetlacz LCD z kontrolerem SD5705 W urządzeniu zamontowano wyświetlacz graficzny o rozdzielczości 6x64 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 50mA. Rysunek 7: Wygląd zastosowanego układu wyświetlacza Do obsługi wyświetlacza konieczne było wykorzystanie linii wyjściowych mikrokontrolera..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
.8 Silnik krokowy M4SP-4 Do zrealizowania ruchomej wieżyczki skanera wykorzystano unipolarny silnik krokowy M4SP-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 4V Pobór prądu przy napięciu znamionowym 646mA Rozdzielczość.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ą.875. Do wykrycia skrajnych położeń wieżyczki skonstruowano prosty czujnik krańcowy. Do spodniej części silnika doklejono 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 0
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 0: Obie obudowy połączone za pomocą wału silnika
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 : 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 lcd init(); void lcd clear(); void lcd fill(); void lcd wrc(char data); void lcd wrd(char data); void lcd wrw(char sign); void lcd prnt(char *string); void lcd 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 : Obiekt w odległości 4cm na wprost
Rysunek : Obiekt w odległości 8cm na wprost Rysunek 4: Brak obiektu w odległości mniejszej niż.5m przed dalmierzem 4
Rysunek 5: Obiekt w odległości 4cm na pozycji około 0 Rysunek 6: Skanowanie wnęki 5
Rysunek 7: Przeszkoda na tle wnęki Rysunek 8: Dwie oddzielne płaskie przeszkody 6
Rysunek 9: Narożnik Rysunek 0: Dwie płaskie przeszkody w różnych odległościach 7
Rysunek : 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 ±cm, 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. 8