Politechnika Wrocławska Instytut Cybernetyki Technicznej Wizualizacja Danych Sensorycznych Projekt Kompas Elektroniczny Prowadzący: dr inż. Bogdan Kreczmer Wykonali: Tomasz Salamon Paweł Chojnowski Wrocław, styczeń 2005
1. Cel projektu Projekt powstał w ramach kursu Wizualizacja Danych Sensorycznych i polegał na opracowaniu oraz praktycznym wykonaniu układu elektronicznego kompasu. 2. Założenia główne Projektowany układ miał: - zapewnić obsługę, konfigurację i komunikację z modułem kompasu CMPS03 - przetwarzać i wyświetlać dane na panelu LCD oraz pierścieniu diod LED - komunikować się z komputerem PC wykorzystując protokół MODBUS - stanowić w miarę małe urządzenie 3. Rozwiązanie projektowe Sercem całego układu przedstawionego na Rys.1 jest mikrokontroler ATmega8, który steruje wyświetlaczem LCD oraz poszczególnymi diodami LED. Układ komunikuje się z modułem CMPS03 poprzez sprzętową magistralę I2C. Układ U1 stabilizator 5V- pracuje w swej typowej aplikacji, obniżając i stabilizując napięcie pochodzące z zewnętrznego zasilacza wtyczkowego. Układ U3 MAX232 zapewnia dopasowanie poziomów napięć do standardu RS232. Przyciski S1 - (Menu) i S2 (Ok) umożliwiają konfiguracje i obsługę urządzenia. Złącze Z4 służy do połączenia urządzenia z komputerem, za pomocą kabla typu null-modem (opis poniżej). Złącze Z2 (z sygnałami magistrali I2C) służy do dołączenia modułu CMPS03. Złącze to, rozszerzone o sygnały +5V i masy, zostało tak że umieszczone na zewnątrz obudowy, umożliwiając tym samym zewnętrzne dołączenie modułu CMPS03. Opis jego wyprowadzeń przedstawiono na Rys. 4. Kompas Elektroniczny 2
Rys. 1 Schemat ideowy układu Kompas Elektroniczny 3
Powyższy układ zmontowano na specjalnie do tego celu zaprojektowanych płytkach, których widoki przedstawiono na poniższych rysunkach. Rys.2 Widok ścieżek płytki mikroprocesora (odbicie lustrzane) i widok montażu elementów Rys.3 Widok ścieżek płytki diod (odbicia lustrzane) i widok montażu elementów Kompas Elektroniczny 4
4. Opis modułu CMPS03 Użyty w projekcie moduł kompasu jest układem specjalnie zaprojektowanym do zastosowań w robotyce do celów nawigacji. Zbudowany został w oparciu o magnetyczne sensory KMZ51 Philipsa i mikroprocesor PIC 16F872 o bardzo niskim poborze prądu. Układ zasilany jest napięciem 5V i nominalnie pobiera 15mA prądu. Rys.4 Widok i opis wyprowadzeń modułu CMPS03 Informacje o aktualnym kącie obrotu możemy uzyskać na dwa sposoby : poprzez wyjście PWM (Pin 4) na którym dostępny jest sygnał o współczynniku wypełnienia proporcjonalnym do kąta obrotu : od 1ms dla 0 do 36,99ms dla 359.9 poprzez odczyt odpowiednich rejestrów mikroprocesora PIC za pomocą magistrali J 2 C w których dostępne są już gotowe, wstępnie przetworzone informacje. Opis zawartości dostępnych z poziomu magistrali J 2 C rejestrów przedstawiono poniżej: Kompas Elektroniczny 5
Rejestr Funkcja 0 Numer wersji oprogramowania 1 Zgrubna, bajtowa informacja o odchyleniu od 0 do 255 dla kąta pełnego 2,3 Informacja dokładna w postaci słowa 2 bajtowego od 0 do 3599 dla kąta pełnego, reprezentująca odpowiednio 0-359.9 4,5 Test Wewnętrzny - Sensor1 6,7 Test Wewnętrzny Sensor2 8,9 Test Wewnętrzny - kalibracja wartości sensora 1 10,11 Test Wewnętrzny - kalibracja wartości sensora 2 15 Kalibracja Tab.1 Adresy i zawartości dostępne w rejestrach modułu CSMP03 Dokładny opis powyższego modułu znaleźć można na stronie producenta: http://www.robot-electronics.co.uk/htm/cmps3doc.shtml 5. Komunikacja z komputerem W urządzeniu zaimplementowano obsługę protokołu MODBUS (pracującego w trybie RTU) dzięki czemu możliwe jest odczytywanie danych przez komputer PC (lub inny sterownik zewnętrzny) pełniący rolę typu MASTER (parametry transmisji: 9600, 8, N,1 ) Opisywane urządzenie pełni rolę typu SLAVE o adresie 12, który w odpowiedzi na zapytanie funkcją o kodzie 3 (odczyt n rejestrów), wysyła zawartość 2 bajtowego rejestru o adresie 1, zawierającego najnowsze dane odczytane z rejestrów 2 i 3 modułu kompasu. Poniżej znajdują się przykładowe ramki komunikacji z urządzeniem: Master: [0C] [03] [00][01] [00][01] [D4][D7] adres Slave ^ ^ \ / \ / \ / / \ kod adres liczba suma CRC funkcji rejestru rejestrów - zapytanie Kompas Elektroniczny 6
Slave: [0C] [03] [02] [07][33] [D7][A0] adres Slave ^ ^ ^ \ / \ / / \ kod liczba zawartość suma CRC funkcji bajtów rejestru - odpowiedź W przypadku wysłania zapytania o innym kodzie funkcji lub o rejestr o innym adresie, urządzenie wyśle informacje o błędzie (kod 83) zgodnie ze specyfikacją protokołu odpowiednio : 01 (niedozwolona funkcja) lub 02 (niedozwolony adres danych) np. Master: [ 0C] [04] [00][01] [00][01] [61][17] - zapytanie Slave: [0C] [83] [01] [11][33] - odpowiedź Master: [0C] [03] [00][03] [00][02] [35][16] - zapytanie Slave: [0C] [83] [02] [51][32] - odpowiedź 6. Obsługa urządzenia Urządzenie gotowe jest do pracy tuż po włączeniu zasilania. Na wyświetlaczu LCD prezentuje aktualny kąt odchylenia od kierunku Północy. Dodatkowo, gdy kąt odchylenia odpowiada 4 głównym kierunkom, wyświetla informację typu: Wschód, Zachód, Północ, Południe. W centralnej części urządzenia znajduje się pierścień 12 diod Led, z których każda odpowiada odchyleniu 30 ( 12 x 30 = 360 ). Zaświecają się one pojedynczo, przeciwnie do wykonywanego obrotu, dzięki czemu święcąca się dioda wskazuje kierunek północny. Klawiszem Menu przechodzimy kolejno po dostępnych w menu opcjach, których wyboru dokonujemy klawiszem Ok.. Funkcja Kalibracja służy do skalibrowania modułu kompasu w przypadku znaczącej zmiany otoczenia modułu (np. po zamieszczeniu modułu wewnątrz obudowy urządzenia, ze względu na obecność w niej metalowych przedmiotów). Kalibracja, po jej aktywowaniu z poziomu menu, polega na ustawieniu modułu kolejno w kierunkach północnym, wschodnim, południowym i zachodnim, i naciśnięciu każdorazowo po ustawieniu klawisza Ok, zgodnie z komunikatami wyświetlanymi na LCD. Kompas Elektroniczny 7
7. Załączniki Wymiary modułu Przykład płyty czołowej ;) Kompas Elektroniczny 8