Listing 1 Procedura przetwarzania rezystancji na wartość cyfrową
'podprogran odczytu rezystancji potencjometru Odczyn:
’ oc'zeKiwanie na rozładowanie kondensatora pomiarowego Waitms 2 Odczytane ■ 255 Sasin
clr (blad)
Setb Pl.l Zliczaj:
jnb p3.6/konieczlrczania
Nop ; Nop
djnz {odczytane},zliczaj setfc Iblad)
Konicczliczania: clr pl.1 Send Asm
If Blad = 0 Then 'odczyt OK
•ponieważ liczyli3my od gcry, a chcemy wartość od 0, lalezy wykonać działanie odzzytane“255-odczytane/ czyli proście]:
Odczytane = Not Odczytane 'mnożenie przez zmienna kalibracyjna 'wyr.ik w zmiennej pomocniczej typu Word Temp = Odczytane * Kalibracja Shift Temp , Right , 6
'wynik, przep. su jemy z powrotem do zmiennej typu Eyte Odczytane - Temp Elsę
'jeżeli jednak wystąpił blad, to musimy podać jakaś wartość Odczytane = 255 End If
'tutaj następuję formatowanie wyniku do postaci: 1 bit - kierunek wychylenia,
reszta - wychylenie od Dołożenie środkowego
3f Odczytane < 128 Then
Odczytane - 120 - Odczytane
End if
Return
Procedura pomiaru została napisana w asemblerze. Dzidki temu można łatwo określić, ile czasu będzie wykonywana każda instrukcja. Jeśli pomiar się udał, wynik jest mnożony przez zmienną kał ibracyjną. Pozwala to uzyskać dokładną konwersję położenia drążka na postać cyfrową. Zawartość zmiennej kalibraeyjnej jest ustawiana po uruchomieniu urządzenia Ważne jest, aby wtedy joystick ustawiony był w pozycji neutralnej. Zmienna kalibrocyjna obłiczana jest w taki sposób, aby przy każdym następnym pomiarze pozycji tej odpowiadała liczba 128. Kalibracja przeprowadzana jest tylko na podstawie pierwszego kanału, ponieważ potencjometry w joysticku są zawsze takie same. Dane do nadawania formatowane są w taki sposób, aby najbardziej znaczący bit odpowiadał za kierunek wychylenia drążka, a reszta bitów podaje bezwzględną wartość tego wychylenia. Upraszcza to dodatkowo sposób dekodowania przez mikrokontroler w robocie.
Transmisja danych o ustawieniach poszczególnych kanałów joysticka oraz stanów przycisków' odbywa się radiowo lub za pomocą podczerwieni. W obu przypadkach zastosowane jest kodowanie RC5. Pozwala to na bardzo wygodną obsługę odbierania danych przez mikrokontroler robota. Wystarczy do tego kilka instrukcji w Bascomie.
Eksperymentalnie ustalony zasięg nadawania w podczerwieni w pomieszczeniu zamkniętym wynosił około 15m, jednak w takiej odległości diody nadawcze muszą być ustawione dokładnie w kierunku odbiornika. Lepiej ma się sprawa w odległościach rzędu 2-3m, gdzie nie jest to konieczne, ponieważ występną silne odbicia od ścian. Zasięg można zwiększyć przez zmniejszenie wartości R6, ale nie należy z tym przesadzać. Tor radiowy ma zasięg do około 1 OOm w otwartym terenie, ale jest wtedy wrażliwy na zakłócenia. Efektywny zasięg jest rzędu 20-30m z niewielką anteną przy odbiorniku lub 5-1 Om bez anteny. Większe odległości przy małych pojazdach nic są chyba potrzebne.
Do wysyłania impulsów podczerwieni służą diody nadawcze podczerwieni Dl i D2. Jako nadajnik radiowy zastosowany jest typowy moduł nadajnika hybrydowego 433MHz. Jumper JP3 służy do odłączenia tranzystora sterującegodiodam; IRED, jeżeli zmontujemy układ pracujący i w podczerwieni, i radiowo. Dzięki temu możemy włączyć lub wyłączyć nadawanie w podczerwieni, co pozwoli oszczędzić baterie. Kodowanie danych do standardu RC5 zrealizowane jest całkowicie programowo. Odpowiednie procedury można obejrzeć w plikach źródłowych dostępnych na strome PPEdW. Procedury te zostały napisane prawie w całości w asemblerze. Dzięki temu dokładnie kontrolowany jest czas trwania każdej instrukcji. Dla instrukcji Bascoma czas wykonywania nie jest jasno określony i może zależeć od wersji tego programu. Częstotli
wość nośna 36kHz impulsów podczerwieni generowana jest również programowo.
Układ ma 4 tryby nadawania. Do ich wyboru służą jumpery JP1 i JP2. Jumper JP1 odpowiada za wybór liczby kanałów, natumiast JP2 za rozdzielczość nadawanych danych. Możliwe kombinacje przedstawione są w tabeli 1.
Rozdzielczość może być 3- lub 5-bitowa. Jest to według mnie całkowicie wystarczające w każdym zastosowaniu. Przy rozdzielczości 3-bitowej zmniejszona jest leż trochę częstotliwość nadawania kolejnych danych, dzięki czemu tryb ten dobrze nadaje się do pracy w trybie IRED, w którym pobiera mniej prądu. Program możemy oczy wiście dowolnie modyfikować, jeśli jest to potrzebne. Zajmuje on mniej niż połowę pamięci mikrokontrolera, więc jest jeszcze duże pole do popisu.
Układ możemy zmontować na płytce druko wanej przedstawionej na rysunku 2 Została ona przystosowana do obudowy Z-32. Moniu jemy ją w typowy sposób, zaczyna ąc od trzech zworek. Pod układy scalone, a szcze gólnie pod mikrokontroler warto zastosować podstawki. Podstawkę można też zamontować pod moduł radiowy. W modelu taka podstawka została wykonana z kawałków zwykłej podstawki do układów scalonych Diody IRED Dl i D2 montujemy w obudowie, łącząc je z płytką kabelkami. W modelu zostały one umieszczone w górnych rogach obudowy. Diodę D3 można również zamontować na kabelkach lub bezpośrednio w płytce, ale od strony lutowania. Gniazdo DB-15 dla joysticka montujemy w górnej części obudowy,
Tabela 1 Kombinacje ustawiane JP1 i JP2
Tryby pracy układu:
rozdzielczość, liczby kanałów i częstotliwość nadawania
JP1 |
JP2 |
Liczba kanałów joysticka/rozdzielczość |
Liczba przycisków |
Adresy |
rozwarty |
roz warty |
2/3bit |
0 |
27 |
rozwarty |
zwarty |
3/3bit |
3 |
27,28 |
zwarty |
rozwarty |
275bit |
2 |
27,28 |
zwarty |
zwarty |
4/5bit |
4 |
27-30 |
54 Listopad 2005 Elektronika dla Wszystkich