2.3.2. Schemat modułu enkodera.
Transkrypt
2.3.2. Schemat modułu enkodera.
Wrocław, 08.06.2008r. Pomiar prędkości kątowej z użyciem żyroskopu Murata ENV-05D oraz enkodera austriamicrosystems AS5046. (Raport z projektu) Dawid Pacholski Filip Romanowski 1 Spis treści 1. Cel projektu. 3 2. Realizacja. 4 2.1. Opis układu pomiarowego. 4 2.2. Żyroskop. 4 2.3. Moduł z enkoderem magnetycznym. 5 2.3.1. Enkoder. 5 2.3.1. Zarys ogólny 5 2.3.2. Konfiguracja pinów. 7 2.3.3. Interfejs szeregowy. 9 2.3.2. Schemat modułu enkodera. 2.4. Moduł do przesyłu danych z czujników. 10 11 2.4.1. Mikrokontroler. 11 2.4.2. Opis programu mikrokontrolera. 12 2.4.3. Schemat modułu do przesyłu danych. 13 3. Interfejs graficzny. 16 3.1. Ogólnie o interfejsie graficznym. 16 3.2. Szata graficzna oprogramowania wizualizacyjnego. 16 3.3. Programowa realizacja interfejsu graficznego. 18 4. Podsumowanie. 20 5. Literatura. 20 2 1. Cel projektu. Celem projektu było zbudowanie stanowiska pomiarowego prędkości kątowej. W skład stanowiska wchodzić miały: • dostarczone przez prowadzącego wahadło, • zamieszczony na końcu wahadła żyroskop ENV-05D firmy Murata, • enkoder magnetyczny firmy austriamicrosystems zamieszczony na osi obrotu wahadła, • moduł z mikrokontrolerem MC9S12A64 firmy Freescale, • oprogramowanie wizualizacyjne. Niestety nie udało nam się uruchomić ani interfejsu BDM ani płytki z mikrokontrolerem MC9S12A64, dlatego zadanie zostało zrealizowane przy użyciu mikrokontrolera Atmega8. Moduł z mikrokontrolerem miał zajmować się odbieraniem, przetwarzaniem oraz przesyłaniem, przez port szeregowy, sygnałów z żyroskopu oraz z enkodera do komputera PC. Żyroskop posiada tylko wyjście analogowe, więc mikrokontroler odbiera dane o prędkości kątowej przez przetwornik ADC. Dla uproszenia zdecydowaliśmy się, że dane o kącie wychylenia z enkodera będą także pobierane drogą analogową (aczkolwiek moduł z mikrokontrolerem jest przygotowany do odbioru danych także przez interfejs I2C). Oprogramowanie wizualizacyjne umożliwi zobrazowanie na komputerze zmian prędkości i kąta wychylenia wahadła. Program zostanie napisany przy użyciu biblioteki Qt. 3 2. Realizacja. 2.1. Opis układu pomiarowego. Schemat naszego układu pomiarowego przedstawia poniższy rysunek. wahadło komputer PC (host) RS232 mikrokontroler (serwer danych) żyroskop enkoder Komputer PC wysyła komendy (np. z żądaniami odesłania danych z czujników). Dostępne komendy: • ‘K’ – kalibracja, • ‘P’ – odczyt z wartości danych pomiarowych kolejno żyroskopu (pierwszy bajt danych), a następnie z enkodera (drugi bajt danych). Czerwona dioda znajdująca się na module z mikrokontrolerem sygnalizuje trwanie kalibracji. Czerwona dioda znajdująca się na module enkodera sygnalizuje, że pole magnetyczne, pochodzące od magnesu zamontowanego na osi wahadła, ma zbyt małe natężenie (magnes zbyt daleko od enkodera, lub układ nie wybrany przez linię CSn – stan aktywny niski, patrz dalsza część raportu). Czerwony przycisk na obudowie modułu mikrokontrolera służy do resetowania układu, na wypadek wystąpienia błędów w komunikacji. Kolory przewodów: • żyroskop: o czarny – VCC, o niebieski – GND, o czerwony – VOUT, 4 • enkoder: o brązowy – SDA, o zielony – VOUT, o biały – CSn, o czarny – SCL, o niebieski – VCC, o czerwony – GND. 2.2. Żyroskop. W projekcie wykorzystaliśmy żyroskop ENV-05D firmy Murata, który charakteryzuje się następującymi właściwościami: wymiary 23.2 x 19.6 x 11.5 mm napięcie zasilania VCC 5 ± 0.5 VDC pobór prądu ICC 15 mA ωMAX 60 °/s VO 2.5 ± 0.4 VDC 10 mVp-p maksymalna wartość prędkości kątowej mierzonej napięcie wyjściowe (przy prędkości kątowej 0 i temperaturze otoczenia -30° ~ 80°C) poziom szumów na wyjściu (12kHz) zakres temperatury pracy TOPR -30 ~ 80 °C zakres temperatury przechowywania TSTG -40 ~ 85 °C 20 g waga 5 2.3. Moduł z enkoderem magnetycznym. 2.3.1. Enkoder. 2.3.1.1. Zarys ogólny. Użyliśmy enkodera AS5046 firmy austriamicrosystems. Rysunek 1. Typowe zastosowanie AS5046 oraz magensu 6 Jest to bezdotykowy, jednoukładowy, programowalny enkoder magnetyczny o programowalnym zakresie do 360°. Układ posiada czujniki Halla, wyjście analogowe oraz cyfrowe. AS5046 zapewnia 12-bitowy odczyt cyfrowy oraz 10-bitowe wyjście analogowe (w zakresie napięcia zasilania VCC) proporcjonalne do kąta magnesu obracającego się nad enkoderem. Rysunek 2. AS5046 schemat blokowy Dodatkowo, interfejs szeregowy umożliwia użytkownikowi konfigurację czujników Halla i dostęp do każdego z czujników z osobna. AS5046 zapewnia także informację o natężeniu pola magnetycznego, pozwalając na kontrolowanie czy magnes znajduje się w odpowiedniej odległości od układu. Dzięki możliwości programowania enkodera (bity A2..0), możliwe jest stosowanie do 7 układów z jednym układem zarządzającym (Master). 7 Kąt bezwzględny jest próbkowany z częstotliwością 10.4kHz w trybie fast, lub z częstotliwością 2.6kHz w trybie slow (w zależności od ustawienia pinu 2 – MODE). Oczywistym jest, że tryb slow jest używany gdy wymagana jest duża precyzja natomiast tryb fast gdy wymagana jest duża szybkość pomiaru. Wewnętrzny regulator napięcia, pozwala na zasilanie AS5046 z 3.3VDC lub 5.0VDC. Całość umieszczona jest w obudowie SSOP16 (5.3mm x 6.2mm). 2.3.1.2. Konfiguracja pinów. Rysunek 3. Rozkład pinów enkodera Pin Symbol Typ Opis Magnet Field Magnitude RaNGe warning; 1 MagRngn DO_OD aktywny stan niski, wskazuje, że natężenie pola magnetycznego jest poza zalecanymi granicami (45mT - 75mT). Mode input; 2 Mode DI_PD, ST wybór trybu pracy między niskimi szumami (pin niepodłączony, lub w stanie niskim) a wysoką szybkością pomiaru (stan wysoki); wewnętrzny rezystor pull-down. 8 Chip Select; 3 CSn DI_PU, ST aktywny stan niski; wejście z bramką Schmitta; wewnętrzny rezystor pull-up (50kΩ); do transmisji szeregowej musi być podłączony do VSS. 4 SCL DI,ST 5 NC - Serial Clock Line; wejście zegara dla transmisji szeregowej. Powinno pozostać niepodłączone. Serial Data Line; 6 SDA DIO dwukierunkowa linia danych dla transmisji szeregowej. 7 VSS S Ujemne napięcie zasilania (GND). OTP Programming Input; 8 Prog DI_PD wejście do programowania; wewnętrzny rezystor pull-down (~74kΩ); powinno być podłączone do VSS jeśli programowanie nie jest wykorzystywane. DAC Reference voltage; 9 DACref AI 10 DACout AO 11 FB AI 12 Vout AO 13 NC - Powinno pozostać niepodłączone. 14 NC - Powinno pozostać niepodłączone. wejście dla zewnętrznego napięcia odniesienia. DAC output; wyjście przetwornika DAC; niebuforowane. Feedback; weiście odwracające wzmacniacza operacyjnego. OPAMP output; wyjście wzmacniacza operacyjnego. 9 Wyjście reulatora 3V dla wewnętrznego rdzenia 15 VDD3V3 S układu, regulowane z VDD5V. Podłączyć do VDD5V dla 3V zasilania. Nie podłączać zasilania z zewnątrz. 16 VDD5V S Dodatnie napięcie zasilania, 3.0 do 5.5 V Legenda: DO_OD wyjście cyfrowe otwarty S kolektor zasilanie (supply pin ) (digital output open drain) DI_PD wejście cyfrowe pull-down DO_T (digital input pull-down) DI_PU wejście cyfrowe pull-up (digital output /tri-state) ST (digital input pull-up) AI wejście analogowe wejście z bramką Schmitta (schmitt-trigger input) AO (analog input) DI wyjście cyfrowe trójstanowe wyjście analogowe (analog output) wejście cyfrowe (digital input) 2.3.1.3. Interfejs szeregowy. Interfejs szeregowy enkodera AS5046 umożliwia komunikację z opcjonalną długości słowa transmitowanego: • 1 bajt, • 3 baty, • 4 bajty. W naszym projekcie w zupełności wystarcza słowo 1 bajtowe. Przykładowy przebieg na liniach SCL oraz SDA pokazujący transmisję jednego bajtu zawierającego kąt wychylenia wahadła pokazuje poniższy rysunek. 10 Rysunek 4. Transmisja jednego bajtu z enkodera Domyślnie w enkoderze bity Address A2..0 są ustawione na wartości 0 (można je przeprogramować), natomiast bity Type idenifier T3..0 należy ustawić na sekwencję 0101 (oznacza to wybór dostępu do kąta bezwzględnego za pomocą interfejsu szeregowego). Ostatnim bitem bajtu adresu powinien być bit R/W (u nas będziemy tylko czytać ze Slave’a – enkodera, dlatego będzie on miał wartość 1). Podsumowując, bajt adresu wysyłany przez Master’a powinien mieć postać: 0x51 (0b01010001). 2.3.2. Schemat modułu enkodera. Rysunek 5. Schemat modułu enkodera 11 Opis złącza JP1 Pin Opis 1 wyjście analogowe enkodera (VOUT) 2 lina danych interfejsu I2C (SDA) 3 lina zegara interfejsu I2C (SCL) 4 Chip Select – aktywny stan niski (CSn) 5 GND 6 VCC Spis elementów modułu enkodera Symbol R1 Wartość 180Ω R2, R3 15kΩ C1 10μF C2 100nF IC1 AS5046 LED1 JP1 czerwona 5mm goldpin 1x6 2.4. Moduł do przesyłu danych z czujników. 2.4.1. Mikrokontroler. Do realizacji zadania skorzystaliśmy z następujących peryferii mikrokontrolera: • SPI (Serial Peripheral Interface) – programator AVRProg USB, • UART (komunikacja szeregowa), 12 • TWI (komunikacja zgodna ze standardem I2C), • ADC. Mikrokontroler działa na wewnętrznym generatorze sygnału zegarowego 1MHz (brak zewnętrznego kwarcu – na płytce jest miejsce aby go podłączyć). Dla mikrokontrolera firmy Freescale (HC12), planowaliśmy skorzystać z następujących peryferii: • SCI (transmisja szeregowa), • ATD (przetwornik A/C). Oba powyższe bloki są bardzo zbliżone budową do bloków z mikrokontrolera Atmega8 (odpowiednio UART – SCI, ADC – ATD). 2.4.2. Opis programu mikrokontrolera. Program dla mikrokontrolera został skompilowany w środowisku AVR Studio 4. Do załadowania skompilowanego pliku do mikrokontrolera użyliśmy programu AVRdude. Program jest dość nieskomplikowany; oto kolejne kroki działania: • inicjowane są rejestry sterujące transmisją szeregową oraz przetwornikiem ADC (ustawiana jest prędkość transmisji na 2400 baud, 8 bitów danych, 2 bity stopu, • następnie program czeka (odbiór znaków z UART odbywa się przez tzw. polling) na odbiór znaku ‘K’ (jak „kalibracja”); po odebraniu tego znaku przez 5s mierzona jest wartość prędkości kątowej, liczona średnia z odczytów, po czym wynik odsyłany jest przez UART; w czasie kalibracji wahadło musi pozostawać w spoczynku; wszystko to po to, aby program wizualizujący dane mógł poprawnie interpretować wartość 0 z żyroskopu (wartość ta zmienia się wraz z temperaturą), 13 • po odesłaniu wartości 0 żyroskopu, program oczekuje odebrania przez UART znaku ‘P’, odpowiadającego komendzie odesłania przez UART odpowiednio 2 bajtów danych pomiarowych – odpowiednio odczytu z żyroskopu i enkodera, albo tez po raz kolejny znaku ‘K’ po którym nastąpi ponowna kalibracja układu. 2.4.3. Schemat modułu do przesyłu danych. Rysunek 6. Schemat modułu do odbioru danych z czujników 14 Opis złącza JP5 (złącze czujników) Opis Pin Pin Opis VCC 1 2 GND Żyroskop VOUT 3 4 NC SDA 5 6 Enkoder VOUT CSn 7 8 SCL VCC 9 10 GND Opis złącza JP4 (złącze do transmisji szeregowej RS232) Opis Pin T1OUT 1 R1IN 2 GND 3 Złącze JP1 jest standardowym złączem programatora AVRProg. Zdjęcie zmontowanego modułu zamieszczone jest poniżej. 15 Rysunek 7. Moduł odbioru i przesyłu danych z czujników. 16 Spis elementów modułu z mikrokontrolerem Symbol Wartość R1 180Ω R2, R3 2kΩ R4, R5 460Ω L1 100μH C1, C5, C6, C8, C9, C10 C2, C7, C11, C12 100μF 100nF IC1 Atmega8 IC4 L7805CV LED1 zielona 5mm X1 gniazdo zasilacza JP1 goldpin 2x5 JP4 goldpin 1x3 JP5 goldpin 2x5 17 3. Interfejs graficzny. W celu stworzenia interfejsu graficznego wykorzystaliśmy QT - zestaw przenośnych bibliotek i narzędzi programistycznych dedykowanych dla języka C++. Podstawowym składnikiem tychże bibliotek są klasy służące do budowy graficznego interfejsu programów komputerowych. Warto jednak dodać ,że począwszy od wersji 4.0 Qt zawiera też narzędzia do tworzenia programów konsolowych i serwerów. Właścicielem Qt jest norweska firma Trolltech. 3.1. Ogólnie o interfejsie graficznym. Oprogramowanie wizualizacyjne służy głównie do zobrazowania użytkownikowi zmian prędkości kątowej i kąta wychylenia całego wahadła. Tak jak zostało to wyjaśnione wcześniej zmiany prędkości kątowej są poprzez przetwornik analogowo – cyfrowy odczytywane bezpośrednio z zamontowanego na końcu wahadła żyroskopu, natomiast kąt wychylenia wahadła odczytujemy ze wskazań zamontowanego tuż przy osi obrotu wahadła enkodera. Interesujące nas dane są wyświetlane na ekranie w następujących jednostkach: - wartość prędkości kątowej [deg./sec.] – stopnie/sekunda, - wartość kąta wychylenia – [deg.] – stopnie. 3.2. Szata graficzna oprogramowania wizualizacyjnego. Całość interfejsu graficznego naszego oprogramowania wizualizacyjnego składa się z dwóch okien: okna głównego (Żyroskop), oraz okna służącego do ustawienia parametrów transmisji (Ustawienia portu COM). Po odpaleniu programu (podwójne kliknięcie lewym klawiszem myszy na ikonę oprogramowania graficznego) uruchamia się okno główne całej aplikacji. 18 Rysunek 6. Widok głównego okna aplikacji. W tym momencie na ekranie będziemy widzieli okienko jak wyżej, z tą różnicą że żaden z trzech przycisków (Kalibracja, Połącz, Rozłącz) nie będzie aktywny. Aby móc korzystać z aplikacji, na samym początku musimy wybrać zakładkę Plik w okienku głównym (pojedyncze kliknięcie lewym klawiszem myszy), a następnie w ten sam sposób Ustawienia portu COM. Na ekranie wyświetli się wówczas dodatkowe okienko. 19 Rysunek 7. Widok głównego okna aplikacji. W oknie tym będziemy mieli możliwość ustawienia parametrów transmisji portu RS 232 (wybór urządzenia i prędkości transmisji). Dopiero po ustawieniu tych parametrów i ich akceptacji za pomocą przycisku Otwórz w głównym oknie aplikacji aktywny stanie się przycisku Kalibracja – służący jak sama nazwa mówi do skalibrowania żyroskopu, aby wykonywane pomiary nie były zakłócone poprzez efekt tzw. „pływającego zera”. Po wykonaniu kalibracji możemy zacząć wykonywać pomiary za pomocą przycisku Połącz. Użytkownik może w dowolnej chwili zerwać transmisję (przycisk Rozłącz), co spowoduje zatrzymanie wykonywania pomiarów, a na ekranie widoczne będą ostatnie zmierzone wartości. Ponowne kliknięcie przycisku Połącz spowoduje powrót do trybu wykonywania pomiarów. Podczas wykonywania pomiarów mamy możliwość śledzenia ruchu wahadła (jego zachowanie modeluje obracająca się wskazówka – której ruch ograniczony jest w ten sam sposób jak ruch wahadła czyli od -90° do +90°, położenie pierwotne – swobodny zwis wskazuje wartość zero) oraz odczytywać wartości bieżącej prędkości kątowej i wychylenia na dwóch wyświetlaczach LCD. 3.3. Programowa realizacja interfejsu graficznego. Jak już wspomniano na wstępie, całość oprogramowania została napisana z wykorzystaniem bibliotek QT 4.3, pod systemem operacyjnym Ubuntu. 20 Obydwa wspomniane wcześniej okienka naszej aplikacji zostały stworzone za pomocą programu QTDesigner, który w wygodny sposób pozwala budować odpowiednie „formatki” i zarządzać całą strukturą i zachowaniem się okienek. Stworzone zostały odpowiednie klasy, po których to dziedziczone są wspomniane okna. Okienka odpowiedzialnego za ustawienia portu COM wykorzystuje klasę RS 232, która obsługuje otwieranie, zamykanie oraz czytanie i zapisywanie informacji poprzez ten port, a także może zwrócić deskryptor portu. Kiedy w okienku wyboru portu zatwierdzimy wprowadzoną przez nas konfigurację, zostaje ustawiony znacznik, mówiący właśnie o tym, że nastąpiła akceptacja otwarcia portu. Następnie port jest otwierany, a ustawiony wcześniej deskryptor zostaje skopiowany i zapamiętany w aplikacji głównego okna, dzięki czemu mamy tam także zapewnioną właściwą komunikację z urządzeniem. Formatka kona głównego (stworzona w QTDesigner) jest dziedziczona przez klasę interfejs. Jest to zasadnicza klasa odpowiadającą za wygląd okna głównego, komunikacje (dziedziczy również klasę Rs232) i wyświetlanie informacji z urządzenia. W aplikacji okna głównego znajduje się metoda (ask) służąca do odpytywania urządzenia. Kiedy użytkownik przystępując do wykonywania pomiarów naciśnie przycisk Kalibracji, do mikrokontrolera zostaje wysłany znak ‘K’, który informuje go, że ma skalibrować urządzenie i odesłać odpowiednią wartość. Po poprawnej kalibracji układu i naciśnięciu przycisku połącz do mikrokontrolera zostają wysyłane zapytania (wysłany zostaje symbol ‘P’), dzięki czemu procesor wie (przychodzi odpowiednie przerwanie), że w tej chwili ma odczytać wartość pomiaru z żyroskopu i enkodera. Z mikrokontrolera informacje wysyłane są dwubajtowo. Pierwszy bajt to wartość z żyroskopu, natomiast drugi z enkodera. Zarówno do odpytywania jak i do odświeżania (w celu poprawnego odrysowywania na bieżąco dostarczanych pomiarów) wykorzystaliśmy timery. 21 4. Podsumowanie. Zrealizowany przez nas projekt pozwolił nam nauczyć się sposobu działania sensorów, takich jak żyroskop oraz enkoder, oraz poznać sposób przetwarzania i wizualizacji danych pomiarowych na komputerze klasy PC. Niestety nie udało nam się zrealizować założenia które mówiło o wykorzystaniu mikrokontrolera firmy Freescale. 5. Literatura. • dokumentacja AS5046 (www.austriamicrosystems.com), • dokumentacja Atmega8 (www.atmel.com), • dokumentacja ENV-05D (www.murata.com), • J. Doliński, „Mikrokontrolery AVR w praktyce”, Wydawnictwo BTC, Warszawa 2003, • J. Bogusz, „Lokalne interfejsy szeregowe w systemach cyfrowych”, Wydawnictwo BTC, Warszawa 2004, • A. Witkowski, „Mikrokontrolery AVR programowane w języku C – przykłady zastowowań”, Wydawnictwo Pracowni Komputerowej Jacka Skalmierskiego, Gliwice 2006, • dokumentacja bilioteki Qt (www.trolltech.com), • D. Solin, „Poznaj programowanie przy użyciu biblioteki Qt w 24 godziny”, Wydawnictwo Infoland, Warszawa 2001. 22