Projekt z przedmiotu Wizualizacja Danych Sensorycznych Wykorzystanie czujnika PSD do określania szybkości zmian odległości Monika Puchalska 13 czerwca 2010
Spis treści 1 Opis rozwiązywanego problemu 2 2 Elektronika 2 2.1 Czujnik odległości............................................ 2 2.2 Schemat blokowy układu......................................... 2 2.3 Układ elektroniczny........................................... 3 2.4 Moduł zasilania.............................................. 6 3 Opis urządzenia 6 3.1 Budowa.................................................. 6 3.1.1 Konstrukcja............................................ 6 3.1.2 Elektronika............................................ 7 3.2 Program.................................................. 8 3.3 Opis najważniejszych funkcjonalności urządzenia........................... 10 3.4 Parametry stworzonego urządzenia................................... 10 4 Przykłady uzyskiwanych efektów pracy urządzenia 10 5 Wnioski i podsumowanie 11 6 Dodatek 12 6.1 Demontaż urządzenia........................................... 12 6.2 Projekt płytki............................................... 12 1
1 Opis rozwiązywanego problemu Przedmiotem projektu jest stworzenie urządzenia demonstrującego możliwości czujnika odległości wykorzystującego technologię PSD. Rzeczywista odległość przedmiotu od czujnika wizualizowana ma być zaświeceniem się odpowiedniej diody w linii składającej się z kilkunastu diod, natomiast prędkość wpływać będzie na modulację jasności jej świecenia. Całość ma stanowić samodzielny układ demonstracyjny. 2 Elektronika 2.1 Czujnik odległości Zastosowanym czujnikiem odległości, opartym o technologię PSD, jest dalmierz firmy Sharp, model GP2Y0A02YK [1], o zakresie pomiaru do 150 cm. Wstępnie wizualizowany miał być pomiar odległości do 150 cm, jednakże zauważono, że pomiary powyżej odległości 80 cm są obarczone dość dużym błędem. Jest to związane z charakterystyką czujnika, wraz ze wzrostem odległości, maleje nachylenie charakterystyki napięcia, co znacznie zmniejsza dokładność pomiaru (rys. 1). Dlatego też, zdecydowano, że linia diod będzie miała długość 80 cm i będzie umieszczona w odległości 17,5-102,5 cm od czujnika [4]. Wybór zakresu większego, niż taki, w którym pomiary czujnika są obarczone małym błędem, był podyktowany tym, że urządzenie to powinno ukazywać nie tylko dobre strony zastosowań tego typu czujników, ale także ukazywać ich niedoskonałości. Rysunek 1: Charakterystka napięcia wyjściowego w funkcji odległości. 2.2 Schemat blokowy układu Założenie podczas projektowania urządzenia było takie, że układ elektroniczny powinien być jak najprostszy, tak aby mógł zmieścić się w profilu aluminiowym. Zarazem niezawodny, gdyż, po złożeniu urządzenia, będzie utrudniony dostęp do układu, choć oczywiście zapewniona będzie możliwość demontażu. Dlatego też układ składa się z mikrokontrolera Atmega32 [2], analogowego czujnika odległości GP2Y0A02YK [1] oraz 35 diod. Rysunek 2: Schemat blokowy układu. 2
2.3 Układ elektroniczny Ze względu na profile aluminiowe, które zdecydowano wykorzystać do budowy urządzenia, maksymalna szerokość płyty głównej mogła wynosić 20 mm (wewnętrzny wymiar profilu 18 x 18 mm, płyta wsuwana jest pod skosem). Podłączenie 35 diod do mikrokontrolera zostało zrealizowane tak, że są 4 zakresy, włączane stanem wysokim, po 9 diod, załączane stanem niskim (w ostatnim zakresie jest 8 diod). Zapalenie odpowiedniej diody zostało jest realizowane w ten sposób, że stanem wysokim na odpowiednim bicie włączany jest dany zakres, a stanem niskim daną diodę w zakresie. W jednej jednostce czasu powinna być zasilana tylko jedna dioda, gdyż maksymalny prąd, jaki może popłynąć przez pin to 20 ma, a maksymalny prąd płynący przez diodę wynosi 16,5 ma. Zaletą tego postępowania jest fakt, że unikamy stosowania dużej ilości przewodów, które mogłyby nie zmieścić sie w zastosowanym profilu aluminiowym oraz oszczędzamy wyjścia mikrokontrolera. VCC +5V + + C8 47u/10V100n IC2 788TV 1 VI VO 3 C1 2 +5V +5V C2 100n 100u/6V3 VCC C9 JP2 1 2 +5V U$1 100n C3 100n CHOKE C5 C4 C12 100n 100n C11 100n C10 R1 10k 100n 4 7 8 29 27 28 17 5 38 18 6 39 IC1 RESET XTAL2 XTAL1 AREF AVCC VCC (ADC7)PA7 (ADC6)PA6 (ADC5)PA5 (ADC4)PA4 (ADC3)PA3 (ADC2)PA2 (ADC1)PA1 (ADC0)PA0 (SCK)PB7 (MISO)PB6 (MOSI)PB5 (SS)PB4 (AIN1/OC0)PB3 (AIN0/INT2)PB2 (T1)PB1 (T0/XCK)PB0 (TOSC2)PC7 (TOSC1)PC6 (TDI)PC5 (TDO)PC4 (TMS)PC3 (TCK)PC2 PC1(SDA) PC0(SCL) 30 31 32 33 34 35 36 37 3 2 1 44 43 42 41 40 26 25 24 23 22 21 20 19 +5V JP1 1 2 3 SV1 +5V 1 2 3 4 5 6 7 8 9 10 120 R2 120 R4 JP3 1 120 2 3 120 R3 4 R5 PWM JP5 1 2 3 4 JP4 1 2 3 4 5 (OC2)PD7 (ICP)PD6 (OC1A)PD5 (OC1B)PD4 (INT1)PD3 (INT0)PD2 (TXD)PD1 (RXD)PD0 16 15 14 13 12 11 10 9 MEGA32-A Rysunek 3: Schemat układu elektronicznego. JP3 JP5 R3 R4 R5 JP2 C11 C12 Ṙ1 SV1 JP4 JP1 IC1 C4 Rysunek 4: Rozmieszczenie elementów na płytce, widok z góry. 3
Rysunek 5: Płytka, widok z góry. R2 C10 C3 U$1 C5 C9 C2 C1 C8 Rysunek 6: Rozmieszczenie elementów na płytce, widok z dołu. Rysunek 7: Płytka, widok z dołu. 4
Rysunek 8: Podłączenie diod do mikrokontrolera. pin nr zakresu kolor przewodu PD4 1 brązowy PD5 2 czerwony PD7 3 pomarańczowy PB3 4 zółty Tablica 1: Podłączenie zakresu diod pin nr diody kolor przewodu PC3 1 zielony PC4 2 niebieski PC5 3 fioletowy PC6 4 szary PC7 5 biały PA7 6 czarny PA6 7 brązowy PA5 8 czerwony PA4 9 pomarańczowy Tablica 2: Podłączenie diod 5
2.4 Moduł zasilania Urządzenie zasilane jest z 5 baterii AAA poprzez stabilizator o niskim spadku napięcia (LDO) L4940V5 [3]. 3 Opis urządzenia 3.1 Budowa 3.1.1 Konstrukcja Rysunek 9: Schemat konstrukcji. Wstępna koncepcja konstrukcji zakładała aluminiowe ceowniki, jednakże dużym problemem było połączenie ich w sposób przedstawiony na rysunku 9. Pozostawał również problem zakrycia pustej ścianki. Dlatego też włożono dużo starań w poszukiwaniu odpowiednich materiałów, tak, aby zbudowane urządzenie było trwałe, możliwy byłby demontaż w celu dostania się zarówno do płytki jak i do każdej diody oraz aby całe urządzenie wyglądało estetycznie. Wykorzystano profile aluminiowe o przekroju 20 x 20 mm (rys. 10) oraz plastikowy łącznik do profili (rys. 11 i 12). W celu zakrycia końców profili wykorzystano zatyczki (rys. 13). Rysunek 10: Profile aluminiowe z zamontowanym włącznikiem. Rysunek 11: Plastikowy łącznik profili. 6
Rysunek 12: Plastikowy łącznik profili - demonstracja użycia. Rysunek 13: Zatyczka 3.1.2 Elektronika Urządzenie składa się z 4 profili. W najdłuższym znajdują się diody, przylutowane do taśmy przewodów (rys. 14) oraz przymocowane za pomocą oprawek. W pionowo zamontowanym profilu znajduje się włącznik urządzenia oraz czujnik odległości. Patrząc od przodu w profilu po prawej stronie jest płytka oraz 2 baterie, w profilu po lewej stronie są 3 baterie. Dostęp do baterii jest możliwy poprzez zdjęcie zatyczek końcowych, natomiast dostęp do płytki jest możliwy poprzez zdjęcie prawego profilu z łącznika. Rysunek 14: Sposób montażu diod 7
Rysunek 15: Montaż wszystkich przewodów 3.2 Program Uzyskanie jak najdokładniejszych wartości napięcia wyjściowego, przy danej odległości pozwoliło na ulepszenie działania urządzenia. Celem było uzyskanie takiej dokładności, aby dioda zapalała się dokładnie w miejscu, gdzie pojawiła się ręka. Wartości pobierane zostały w ten sposób, że na wyświetlaczu LCD wyświetlane były odczyty wartości analogowych. Pierwsze pomiary zostały przeprowadzone, gdy układ był podłączony do portu USB, urządzenie działało poprawnie - diody zapalały się w odpowiednich miejscach. Natomiast po podłączeniu układu do baterii, poprzez stabilizator, diody świeciły w pobliżu prawidłowego miejsca, ale nigdy nie tam gdzie powinny. Zmierzone napięcie, gdy układ zasilany był z portu USB, miało wartość 4.8 V. Natomiast gdy był układ zasilany z baterii poprzez stabilizator, napięcie za stabilizatorem wynosiło 5.0V. Napięcie odniesienie zmieniło się nieznacznie, jednakże uzyskane charakterystyki bardzo się od siebie różnią (rys. 16). Dlatego też należało nakreślić charakterystykę przy sposobie zasilania, jaki ma być zastosowany docelowo. Rysunek 16: Charakterystyka napięcia wyjściowego w funkcji odległości w zależności od napięcia odniesienia. W programie zastosowano tablicę, w której są zapisane wszystkie wartości napięcia oraz odpowiadające im odległości. Częstotliwość pomiaru czujnika wynosi około 40 ms, dlatego też, co 40 ms odczytywana jest wartość wejścia analogowego a następnie odszukiwane jest w tablicy wartość odległości odpowiadająca danemu odczytowi. Wartość odczytana porównywana z dwiema wartościami w tablicy i zaokrąglana jest do tej, gdzie jest mniejsza różnica. Następnie do rejestru przesuwnego zapisywany jest nowy pomiar. Za pomocą tegoż rejestru wyznaczana jest prędkość. Następne wywoływana jest funkcja, która zapala odpowiednią diodę oraz moduluje jej jasność w zależności od wyznaczonej prędkości. 8
Kod funkcji. for ( i = 0 ; i < 3 4 ; i ++) { // j e ż e l i odczytane n a p i ę c i e z n a j d u j e s i e pomiędzy danym przedziałem l u b do niego n a l e ż y i f ( ( n a p i e c i e <= t a b l i c a o d l e g l o s c i [ 0 ] [ i ] ) && ( n a p i e c i e >= t a b l i c a o d l e g l o s c i [ 0 ] [ i +1])) { // z a o k r ą g l i j do tego, g d z i e j e s t mniejsza r ó ż n i c a i f ( ( t a b l i c a o d l e g l o s c i [ 0 ] [ i ] n a p i e c i e ) < ( n a p i e c i e t a b l i c a o d l e g l o s c i [ 0 ] [ i +1])) { o d l e g l o s c = t a b l i c a o d l e g l o s c i [ 1 ] [ i ] ; else o d l e g l o s c = t a b l i c a o d l e g l o s c i [ 1 ] [ i +1]; break ; Wyznaczanie prędkości zostało zrealizowane w ten sposób, że wyznaczana jest droga przebyta przez przedmiot znajdujący się przed czujnikiem. Droga wyznaczana jest jako różnica odległości z 5 pomiarów. W zależności od wyliczonej wartości ustalana jest jasność diody. Kod funkcji. // w y l i c z a n i e p r z e b y t e j d r o g i droga = 0 ; for ( i = 0 ; i < i l o s c 1 ; i ++) { i f ( t a b l i c a d r o g [ i ] > t a b l i c a d r o g [ i +1]) { droga = droga + t a b l i c a d r o g [ i ] t a b l i c a d r o g [ i else { droga = droga + t a b l i c a d r o g [ i +1] t a b l i c a d r o g [ i ] ; Zapalenie odpowiedniej diody zostało jest realizowane w ten sposób, że stanem wysokim na odpowiednim bicie włączany jest dany zakres, a stanem niskim daną diodę w zakresie. W jednej jednostce powinna być zasilana tylko jedna dioda, gdyż maksymalny prąd, jaki może popłynąć przez pin to 20 ma, a maksymalny prąd płynący przez diodę wynosi 16,5 ma. Istnieją 4 zakresy, włączane stanem wysokim, po 9 diod, załączane stanem niskim (w ostatnim zakresie jest 8 diod). Kod funkcji. wartosc = 2 2 5 ; // r ó ż n i c a w a r t o ś c i pomiedzy zakresami // z a ł ą c z a n i e odpowiedniego z a k r e s u // stan wysoki i f ( ( o d l e g l o s c >= 175 ) && ( o d l e g l o s c <= 3 7 5 ) ) { OCR1B = j a s n o s c ; //PD4 r o z n i c a = 0 ; else i f ( ( o d l e g l o s c >= 400) && ( o d l e g l o s c <= 6 0 0 ) ) { OCR1A = j a s n o s c ; //PD5 r o z n i c a = 1 ; else i f ( ( o d l e g l o s c >= 625 ) && ( o d l e g l o s c <= 8 2 5 ) ) { OCR2 = j a s n o s c ; //PD7 r o z n i c a = 2 ; else i f ( ( o d l e g l o s c >= 850 ) && ( o d l e g l o s c <= 1 025)) { OCR0 = j a s n o s c ; //PB3 r o z n i c a = 3 ; // z a ł ą c z a n i e odpowiedniej diody w danym z a k r e s i e // stan n i s k i dystans = o d l e g l o s c r o z n i c a wartosc ; i f ( dystans == 175) {PORTC &= 0xF7 ; //PB3 else i f ( ( dystans > 175) && ( dystans < 2 2 5 ) ) {PORTC &= 0xEF ; //PB4 else i f ( dystans == 225) {PORTC &= 0xDF; //PB5 else i f ( ( dystans > 225) && ( dystans < 2 7 5 ) ) {PORTC &= 0xBF ; //PB6 else i f ( dystans == 275) {PORTC &= 0x7F ; //PB7 else i f ( ( dystans > 275) && ( dystans < 3 2 5 ) ) {PORTA &= 0x7F ; //PA7 else i f ( dystans == 325) {PORTA &= 0xBF ; //PA6 9
else i f ( ( dystans > 325) && ( dystans < 3 7 5 ) ) {PORTA &= 0xDF; //PA5 else i f ( dystans == 375) {PORTA &= 0xEF ; //PA4 3.3 Opis najważniejszych funkcjonalności urządzenia Urządzenie wizualizuje położeni zaświeceniem się odpowiedniej diody w linii złożonej z 35 diod. Natomiast szybkość zmiany odległości jest wizualizowana modulacją jasności świecenia. Przyrząd może zostać zastosowany przede wszystkim, jako układ demonstrujący działanie czujników PSD. Przy pomocy tego urządzenia można zauważyć, jakie są dobre i złe strony stosowania tego typu czujników oraz jakie środki należy przedsięwziąć, aby spróbować wyeliminować niepożądane efekty. 3.4 Parametry stworzonego urządzenia Urządzenie wizualizuje położenie dłoni, oraz jej prędkość w zakresie od 17,5 cm do 102,5 cm od dalmierza z dokładnością do 2,5 cm. 4 Przykłady uzyskiwanych efektów pracy urządzenia Rysunek 17: Reakcja na dłoń. Rysunek 18: Reakcja na żółty papier. 10
5 Wnioski i podsumowanie Wykonane urządzenie w zakresie do 80 cm bardzo dobrze wizualizuje położenie dłoni. Dioda świeci się dokładnie tam, gdzie jest ustawiona dłoń. Jeżeli chodzi o modulację jasności w zależności od szybkości zmiany odległości to dość dobrze jest widoczna zmiana jakości świecenia, aczkolwiek dobrym pomysłem mogłoby okazać się zastosowanie dodatkowo wyświetlacza alfanumerycznego LCD w celu wyświetlania wartości prędkości, lub też zastosowanie diod RGB. Urządzenie ukazuje również niedoskonałości tego typu czujników. Małe nachylanie charakterystyki napięcia wyjściowego od odległości w zakresie od 80 cm powoduje, że pomiary obarczone są dość dużymi błędami, co ma również wpływ na wyznaczanie prędkości, a co za tym idzie na jasność świecenia diody. Dalmierz analogowy dość dobrze nadawałby się do zastosowania w robocie typu minisumo, w celu wyznaczania odległości do przeciwnika jak również jego prędkości. Można by wtedy zastosować algorytm, który na podstawie wartości odległości oraz prędkości (można by również wyznaczać kierunek ruchu, czy zbliża się, czy oddala) generowałby różne zachowania, w tym też uniki, gdy przeciwnik jest zbyt blisko. Dodatkowo można by zawęzić filtrację pomiarów np. do 80 cm przy zakresie do 150 cm, tak, aby błąd pomiaru był jak najmniejszy. Podczas pracy z dalmierzem, jak również z innymi czujnikami analogowymi, najważniejszą rzeczą jest dokładne zbadanie jego charakterystyki, najlepiej w różnych warunkach. Istotnym jest również, przy pobieraniu odczytów wartości analogowych, aby pamiętać o tym do jakiego zasilania, jak stabilizowanego, ma być docelowo podłączony układ, gdy napięciem odniesienia jest napięcia zasilania. 11
6 Dodatek 6.1 Demontaż urządzenia Urządzenie składa się z 4 profili. W najdłuższym znajdują się diody, przylutowane do taśmy przewodów oraz przymocowane za pomocą oprawek. W pionowo zamontowanym profilu znajduje się włącznik urządzenia oraz czujnik odległości. Patrząc od przodu w profilu po prawej stronie jest płytka oraz 2 baterie, w profilu po lewej stronie są 3 baterie. Dostęp do baterii jest możliwy poprzez zdjęcie zatyczek końcowych, natomiast dostęp do płytki jest możliwy poprzez zdjęcie prawego profilu z łącznika. 6.2 Projekt płytki Rysunek 19: Projekt płytki, warstwa górna. Rysunek 20: Projekt płytki, warstwa dolna. 12
JP3 JP5 R3 R4 R5 JP2 C11 C12 1 2 3 IC2 R1 SV1 JP4 JP1 IC1 C4 Rysunek 21: Rozmieszczenie elementów, warstwa górna. C9 C2 C8 C1 C3 U$1 C5 C10 R2 Rysunek 22: Rozmieszczenie elementów, warstwa dolna. 13
element wartość obudowa C1 100nF C0805 C2 100nF C0805 C3 100nF C0805 C4 100nF C0805 C8 47µF/10V SMC B C9 100µF/6V 3 SMC B C10 100nF C0805 C11 100nF C0805 C12 100nF C0805 R1 10kΩ C0805 R2 120Ω C0805 R3 120Ω C0805 R4 120Ω C0805 R5 120Ω C0805 US1 100µH L1206 IC1 atmega32 TQFP44 IC2 stabilizator 5V TO220V JP1 PINHD-1X3 złacze goldpin 1x3 JP2 PINHD-1X2 złacze goldpin 1x2 JP3 PINHD-1X4 złacze goldpin 1x4 JP4 PINHD-1X5 złacze goldpin 1x5 JP5 PINHD-1X4 złacze goldpin 1x4 SV1 złącze programatora złacze goldpin 2x5 Tablica 3: Lista elementów 14
Literatura [1] sharp-world.com/ecg/. GP2Y0A02YK, Long Distance Measuring Sensor. [2] www.atmel.com. ATmega32A, 8-bit AVR R Microcontroller with 32K Bytes In-System Programmable Flash DataSheet, revision B, updated 7/09. [3] www.st.com. L4940, Very low drop 1.5 A regulator, DataSheet, December 2009 Doc ID 2141 Rev 12. [4] Rafał Gierczak. Dalmierz Sharp z linijką diodową RGB. Sprawozdanie z projektu, 16 czerwca 2009. Spis rysunków 1 Charakterystka napięcia wyjściowego w funkcji odległości....................... 2 2 Schemat blokowy układu......................................... 2 3 Schemat układu elektronicznego..................................... 3 4 Rozmieszczenie elementów na płytce, widok z góry........................... 3 5 Płytka, widok z góry............................................ 4 6 Rozmieszczenie elementów na płytce, widok z dołu........................... 4 7 Płytka, widok z dołu........................................... 4 8 Podłączenie diod do mikrokontrolera................................... 5 9 Schemat konstrukcji............................................ 6 10 Profile aluminiowe z zamontowanym włącznikiem........................... 6 11 Plastikowy łącznik profili......................................... 6 12 Plastikowy łącznik profili - demonstracja użycia............................ 7 13 Zatyczka.................................................. 7 14 Sposób montażu diod.......................................... 7 15 Montaż wszystkich przewodów..................................... 8 16 Charakterystyka napięcia wyjściowego w funkcji odległości w zależności od napięcia odniesienia. 8 17 Reakcja na dłoń.............................................. 10 18 Reakcja na żółty papier......................................... 10 19 Projekt płytki, warstwa górna...................................... 12 20 Projekt płytki, warstwa dolna...................................... 12 21 Rozmieszczenie elementów, warstwa górna............................... 13 22 Rozmieszczenie elementów, warstwa dolna................................ 13 Spis tablic 1 Podłączenie zakresu diod........................................ 5 2 Podłączenie diod............................................. 5 3 Lista elementów.............................................. 14 15