LEGO Gyroscope datasheet

Transkrypt

LEGO Gyroscope datasheet
LEGO Czujnik Gyroscope
©2010 RoboFACTORY
LEGO Akcelerometr
Tytuł dokumentu:
LEGO Gyroscope datasheet
Wersja dokumentu:
V1.2
Data:
11.03.2011
Wersja urządzenia którego
dotyczy dokumentacja:
LEGO_Gyroscope_V1.0
©2010 RoboFACTORY
2/14
LEGO Akcelerometr
Spis treści
1 Ogólny opis......................................................................................................................................4
1.1 .Właściwości.............................................................................................................................4
2 Szybki start.......................................................................................................................................5
2.1 .Przykładowy program..............................................................................................................5
3 Informacje o czujniku ......................................................................................................................6
3.1 .Dane techniczne.......................................................................................................................6
3.2 .Opis wyprowadzeń..................................................................................................................7
3.3 .Protokół komunikacji...............................................................................................................8
3.4 .Wykaz rejestrów......................................................................................................................9
3.5 .Definicje rejestrów.................................................................................................................10
3.6 .Wymiary modułu...................................................................................................................16
©2010 RoboFACTORY
3/14
LEGO Akcelerometr
1 Ogólny opis
Czujnik LEGO Gyroscope zbudowany jest w oparciu o układ 2-osiowego żyroskopu LPY430AL.
Układ ten zawiera w sobie pojemnościowe czujniki przyspieszenia, filtr dolnoprzepustowy, układ
kompensacji temperatury. Wyjścia układu podłączone są pod wejścia przetwornika ADC 10bit
procesora. Czujnik komunikuje się po magistrali I2C pod adresem 0x16.
1.1 Właściwości
– Małe wymiary
– Zakres pomiarowy +-300 dps (degrees/sec)
– Czułość 1 LSB/dps
– Częstotliwość pomiaru 280Hz (pasmo 140Hz)
– Wyjście cyfrowe ( interfejs I2C )
– Możliwość konfiguracji adresu magistrali I2C
– Wykrywanie przekroczenia zaprogramowanego progu przyspieszenia (Motion Detect) dla
każdej z osi osobno
©2010 RoboFACTORY
4/14
LEGO Akcelerometr
2 Szybki start
Czujnik należy podłączyć do kostki NXT do jednego z portów od 1 do 4 i używając bloczków
dostępnych na naszej stronie internetowej, można od razu przystąpić do zabawy.
2.1 Przykładowy program
Jest to zdjęcie przykładowego programu, który wyświetla nam dwie wartości: prędkość kątową w
osi x oraz z. Wartości te są co pół sekundy odświeżane. Program ten ma na celu pokazanie jak
odczytywać wartości z akcelerometru.
Program ten znajduje się również na naszej stronie internetowej.
©2010 RoboFACTORY
5/14
LEGO Akcelerometr
3 Informacje o czujniku
3.1 Dane techniczne
Maksymalne wartość parametrów fizycznych urządzenia:
Parametr
Min
Max
Jednostka
0
6.5
V
-40
+125
ºC
Napięcie wejściowe
-0.5
Vcc+0.5
V
Prąd pinu
-20
+20
mA
-
3000
g
Min
Typ
Max
Jednostka
3
5
5.5
V
Tryb pomiaru
-
10
12
mA
Tryb uśpienia
-
3
4
mA
-40
25
+85
ºC
Częstotliwość pomiaru
-
280
-
Hz
Czułość
-
1
-
count/dps
Prędkość magistrali I2C
-
-
400
kHz
Vcc (Napięcie zasilania)
Temperatura przechowywania
DATA Pin
Maksymalne przyspieszenie (wszystkie osie)
Operacyjne wartości parametrów urządzenia:
Parametr
Vcc (Napięcie zasilania)
Pobór prądu
Temperatura pracy
©2010 RoboFACTORY
6/14
LEGO Akcelerometr
3.2 Opis wyprowadzeń
Nr pinu
Nazwa pinu
Opis
Typ pinu
1
BOOT
2
GND
Masa urządzenia
POWER
3
GND
Masa urządzenia
POWER
4
VCC
Zasilanie urządzenia
POWER
5
SCL
I2C Serial Clock
INPUT
6
SDA
I2C Serial Data
INPUT/OUTPUT
Pin służący do aktualizacji oprogramowania w
urządzeniu. Podczas normalnej pracy
wymagany stan wysoki.
INPUT
Wyprowadzenia są kompatybilne ze standardem czujników LEGO Mindstorms NXT.
©2010 RoboFACTORY
7/14
LEGO Akcelerometr
3.3 Protokół komunikacji
Komunikacja z czujnikiem odbywa się pod magistrali I2C. Czujnik jest urządzeniem typu
„SLAVE” i zgłasza się pod adresem 0x16 lub pod adresem zaprogramowanym przez użytkownika,
wpisanym do odpowiedniego rejestru.
Przykład zapisu do rejestru urządzenia dwóch bajtów:
S
Slave Address +
Write bit = 0x16
A
Register
Address
A
Data0
A
Data1
A P
Przykład odczytu pojedynczego bajtu z rejestru urządzenia:
S
Slave Address +
Write bit = 0x16
A
Register
Address
A S
Slave Address +
Read bit = 0x17
A
Data
A P
Legenda:
– Master
– Slave
S – Bit Startu
A – Bit potwierdzenia
P – Bit Stopu
Każdy rejestr czujnika ma swój unikalny 8bit adres. Po odczycie jednego bajtu adres jest
automatycznie zwiększany o jeden. Pozwala to na odczyt kilku rejestrów, przy jednej sekwencji
odczytu i2c.
©2010 RoboFACTORY
8/14
LEGO Akcelerometr
3.4 Wykaz rejestrów
Adres
rejestru
Nazwa - Opis
Rozmiar
w bajtach
Wartość domyślna
0x00
SVN – Sensor Version Number, wersja firmware
urządzenia
8
„V1.0”
0x08
MF – Manufacturer, nazwa producenta
8
„RoboFACT”
0x10
ST – Sensor Type, nazwa rodzaju czujnika
16
„GYROSCOPE”
0x20
SSA – Second Slave Address, alternatywny adres
pod jakim będzie się zgłaszać czujnik na magistrali
I2C
1
0xFF
0x21
LPC – LED Power Control, rejestr służący do
sterowania zielona dioda LED
1
0x01
0x22
PC – Power Control, rejestr do kontroli trybów
oszczędzania energii
1
0x00
0x40
SR – Status Register, rejestr statusowy czujnika
1
0x00
0x41
LSC – LED Status Control, konfiguracja
pomarańczowej diody LED
1
0x07
0x42
XOUT – Odczyt przyspieszenia w osi X
2
-
0x44
ZOUT – Odczyt przyspieszenia w osi Z
2
-
0x50
MDX – Wartość przyspieszenia powyżej, której
następuje zapalenie flagi MDFX
2
0x0064
0x52
MDZ – Wartość przyspieszenia powyżej, której
następuje zapalenie flagi MDFZ
2
0x0064
0x70
SCC – Sensor Calibration Command, rozkaz
wykonania kalibracji
1
-
©2010 RoboFACTORY
9/14
LEGO Akcelerometr
3.5 Definicje rejestrów
0x00 – Sensor Version Number (SVN):
Nr Bajtu
D0
D1
D2
D3
D4
D5
D6
D7
Wartość
domyślna
'V'
'1'
'.'
'0'
-
-
-
-
Rejestr zawiera numer wersji urządzenia w postaci znaków ASCII.
0x08 – Manufacturer (MF):
Nr Bajtu
Wartość
domyślna
D0
D1
D2
D3
D4
D5
D6
D7
'R'
'o'
'b'
'o'
'F'
'A'
'C'
'T'
Rejestr zawiera nazwę serii czujników w postaci znaków ASCII.
0x10 – Sensor Type (ST):
Nr Bajtu
Wartość
domyślna
D0
D1
D2
D3
D4
D5
D6
D7
D8
'G'
'Y'
'R'
'O'
'S'
'C'
'O'
'P'
'E'
Rejestr zawiera nazwę typu czujników w postaci znaków ASCII.
0x20 – Second Slave Address (SSA):
Nr bitu
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
SSA[7]
SSA[6]
SSA[5]
SSA[4]
SSA[3]
SSA[2]
SSA[1]
0
Rejestr służy do konfiguracji alternatywnego adresu czujnika na magistrali I2C. Najmłodszy bit jest
zawsze równy 0, ze względu na fakt że najmłodszy bit adresu na magistrali służy do określenia
kierunku danych (zapis/odczyt). Po wykonaniu takiego zapisu do rejestru, zapalana jest flaga
zajętości w rejestrze statusowym. Czujnik po dokonaniu zapisu do pamięci nie ulotnej flash,
automatycznie gasi flagę zajętości i można przystąpić do dalszej pracy. Zapis może trwać
maksymalnie do 100ms.
0x21 – LED Power Control (LPC):
Nr bitu
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
LPC[0]
Jeśli bit LPC[0] rejestru LPC jest zapalony to dioda LED świeci, w przeciwnym wypadku nie
świeci.
©2010 RoboFACTORY
10/14
LEGO Akcelerometr
0x22 – Power Control (PC):
Nr bitu
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
PC[0]
Jeśli bit PC[0] jest zapalony to czujnik przechodzi w tryb uśpienia. Dokonywanie pomiarów
zostaje zatrzymane. Czujnik wybudza się tylko podczas wykrycia transmisji na I2C. Na czas
uśpienia diody LED zostają wyłączone.
0x40 – Status Register (SR):
Nr bitu
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
MDFZ
MDFX
MR
BUSY
Opis flag:
BUSY – Flaga zajętości urządzenia, kiedy flaga jest zapalona zapisane dane do
czujnika mogą zostać utracone, a dane odczytane z innego rejestru niż
statusowy mogą być zakłamane.
MR – Measurement ready, flaga zapala się jak nowy pomiar przyspieszenia
jest gotowy do odczytu w rejestrach XOUT, ZOUT. Flaga pozostaje
zapalona do momentu odczytu rejestru.
MDFX – Motion Detect Flag, flaga zapala się w przypadku wykrycia
przekroczenia zaprogramowanej wartość (rejestr MDX) w osi X. Flaga
pozostaje zapalona do momentu odczytu rejestru.
MDFZ – Motion Detect Flag, flaga zapala się w przypadku wykrycia
przekroczenia zaprogramowanej wartość (rejestr MDZ) w osi Z. Flaga
pozostaje zapalona do momentu odczytu rejestru.
©2010 RoboFACTORY
11/14
LEGO Akcelerometr
0x41 – LED Status Control (LSC):
Nr bitu
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
LSC[7]
LSC[6]
LSC[5]
LSC[4]
LSC[3]
LSC[2]
LSC[1]
LSC[0]
Rejestr służy do kontroli świecenie pomarańczowej diody LED. Dioda ta zapala się jeśli spełniony
jest warunek (LSC & SR) > 0. np. dla wartości LSC = 0x01 dioda LED zapali się tylko gdy flaga
BUSY będzie zapalona. Dla wartości LSC = 0x07 dioda zapali się jeśli zapalona będzie flaga
BUSY lub ROLLF lub PITCHF.
0x42 – 10bits X Output Value (XOUT):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
XOUT[9] XOUT[8] XOUT[7] XOUT[6] XOUT[5] XOUT[4] XOUT[3] XOUT[2]
b7
b6
b5
b4
b3
b2
-
-
-
-
-
-
b1
b0
XOUT[1] XOUT[0]
Rejestr zawiera wartość przyspieszenia w osi X. Od odczytanej wartości z rejestru XOUT należy
odjąć wartość 512 w celu uzyskania poprawnej wartości 1 count/dps.
0x44 – 10bits Z Output Value (ZOUT):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
ZOUT[9] ZOUT[8] ZOUT[7] ZOUT[6] ZOUT[5] ZOUT[4] ZOUT[3] ZOUT[2]
b7
b6
b5
b4
b3
b2
-
-
-
-
-
-
b1
b0
ZOUT[1] ZOUT[0]
Rejestr zawiera wartość przyspieszenia w osi Z. Od odczytanej wartości z rejestru ZOUT należy
odjąć wartość 512 w celu uzyskania poprawnej wartości 1 count/dps.
©2010 RoboFACTORY
12/14
LEGO Akcelerometr
Przykładowe wartość odczytane z rejestrów XOUT lub ZOUT i odpowiadające im prędkości
obrotowe:
Rejestr XOUT lub ZOUT
Wartość
prędkości
obrotowej
812
300dps
712
200dps
612
100dps
512
0
412
-100dps
312
-200dps
212
-300dps
0x50 – Motion Detect on X axis (MDX):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
MDX[7]
MDX[6]
MDX[5]
MDX[4]
MDX[3]
MDX[2]
MDX[1]
MDX[0]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
MDX[8]
Do rejestru należy wpisać wartość przyspieszenia w osi X wyrażoną w count/dps, powyżej której
następuje zapalenie flagi MDFX.
0x52 – Motion Detect on Z axis (MDZ):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
MDZ[7]
MDZ[6]
MDZ[5]
MDZ[4]
MDZ[3]
MDZ[2]
MDZ[1]
MDZ[0]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
MDZ[8]
Do rejestru należy wpisać wartość przyspieszenia w osi Z wyrażoną w count/dps, powyżej której
następuje zapalenie flagi MDFZ.
©2010 RoboFACTORY
13/14
LEGO Akcelerometr
0x70 – Sensor Calibration Command (SCC):
Bajt 0
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
-
Zapis do rejestru wartości większej od 0 powoduje wykonanie komendy kalibracji czujnika. Na
czas kalibracji zapalana jest flaga BUSY. Czujnik podczas kalibracji powinien być w pozycji
poziomej.
©2010 RoboFACTORY
14/14