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

Podobne dokumenty