LEGO Kompas datasheet

Transkrypt

LEGO Kompas datasheet
LEGO Czujnik Kompas
©2010 RoboFACTORY
LEGO Akcelerometr
Tytuł dokumentu:
LEGO Kompas datasheet
Wersja dokumentu:
1.2
Data:
11.03.2011
Wersja urządzenia którego
dotyczy dokumentacja:
LEGO_Kompas_V1.0
©2010 RoboFACTORY
2/19
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.................................................................................................................11
©2010 RoboFACTORY
3/19
LEGO Akcelerometr
1 Ogólny opis
Czujnik LEGO Kompas zbudowany jest w oparciu o w pełni scalony układ 3-osiowego
akcelerometru oraz 3-osiowego magnetometru LSM303DLH. Układ ten zawiera w sobie
pojemnościowe czujniki przyspieszenia, czujniki pola magnetycznego oraz 12-bitowy przetwornik
analogowo-cyfrowy. Czujnik komunikuje się po magistrali I2C pod adresem 0x14.
1.1 Właściwości
– Małe wymiary
– Zakres pomiarowy przyspieszenia +-8g
– Czułość akcelerometru 256 LSB/g
– Zakres pomiarowy magnetometru +-1,3 Gauss
– Czułość magnetometru 1055 LSB/Gauss
– Wyjście cyfrowe ( interfejs I2C )
– Możliwość konfiguracji adresu magistrali I2C
– Wykrywanie swobodnego spadania (Free Fall)
– Wykrywanie przekroczenia zaprogramowanego progu przyspieszenia (Motion Detect) dla
każdej z osi osobno
– Obliczanie kątów obrotu względem osi X i Y (Roll i Pitch)
– Obliczanie wartości kąta między liniami ziemskiego pola magnetycznego, a osią X czujnika
– Kompensacja kąta dla obrotu czujnika w osi X i Y
©2010 RoboFACTORY
4/19
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 wartości indukcji magnetycznej w
osiach x, y oraz z. Wartości te są co pół sekundy odświeżane. Program ten ma na celu pokazanie jak
odczytywać wartości z kompasu.
Program ten, znajduje się również na naszej stronie internetowej.
©2010 RoboFACTORY
5/19
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
10000
gauss
Vcc (Napięcie zasilania)
Temperatura przechowywania
DATA Pin
Maksymalne przyspieszenie (wszystkie osie)
Maksymalna wartość pola magnetycznego
Operacyjne wartości parametrów urządzenia:
Parametr
Min
Typ
Max
Jednostka
3
5
5.5
V
Tryb pomiaru
-
10
12
mA
Tryb uśpienia
-
3
4
mA
-30
25
+85
ºC
Częstotliwość pomiaru
-
30
-
Hz
Czułość akcelerometru
250
255
260
count/g
Vcc (Napięcie zasilania)
Pobór prądu
Temperatura pracy
Czułość magnetometru
Rozdzielczość magnetyczna
Błąd pomiaru kąta
Prędkość magistrali I2C
©2010 RoboFACTORY
-
6/19
1055
count/gauss
8
mgauss
2,3
º
-
400
kHz
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/19
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 0x14 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 = 0x14
A
Register
Address
A
Data0
A
Data1
A P
Przykład odczytu pojedynczego bajtu z rejestru urządzenia:
S
Slave Address +
Write bit = 0x14
A
Register
Address
A S
Slave Address +
Read bit = 0x15
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/19
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
„COMPASS”
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
0x09
0x42
AXOUT – Odczyt przyspieszenia w osi X
2
-
0x44
AYOUT – Odczyt przyspieszenia w osi Y
2
-
0x46
AZOUT – Odczyt przyspieszenia w osi Z
2
-
0x48
ROLL – kąt obrotu w osi X
2
-
0x4A
PITCH – kąt obrotu w osi Y
2
-
0x4F
MDS – Motion Detect Status, rejestr z flagami
zapalanymi przy wykryciu ruchu
1
0x00
0x50
FFL – Free Fall Level, wartość przyspieszenia poniżej,
której następuje zapalenie flagi FFF w rejestrze
statusowym
2
0x0019
0x52
MDX – Wartość przyspieszenia powyżej, której następuje
zapalenie flagi MDFX
2
0x0120
0x54
MDY – Wartość przyspieszenia powyżej, której następuje
zapalenie flagi MDFY
2
0x0120
0x56
MDZ – Wartość przyspieszenia powyżej, której następuje
zapalenie flagi MDFZ
2
0x0120
0x60
MXOUT – Odczyt wartości pola magnetycznego w osi X
2
-
©2010 RoboFACTORY
9/19
LEGO Akcelerometr
0x62
MYOUT – Odczyt wartości pola magnetycznego w osi Y
2
-
0x64
MZOUT – Odczyt wartości pola magnetycznego w osi Z
2
-
0x66
CV – Course Value, wartość absolutna kąta
2
-
0x68
RCV – Raw Course Value, wartość absolutna kąta
2
-
0x6A
MCVX – Magnetic Calibration Value, offset w osi X
2
-
0x6C
MCVY – Magnetic Calibration Value, offset w osi Y
2
-
0x6E
MCVZ – Magnetic Calibration Value, offset w osi Z
2
-
0x70
SCC – Sensor Calibration Command, rozkaz wykonania
kalibracji kompasu
1
-
0x71
SSRC – Sensor Set/Reset Command, rozkaz
rozmagnesowania czujnika
1
-
©2010 RoboFACTORY
10/19
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
'C'
'O'
'M'
'P'
'A'
'S'
'S'
-
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
11/19
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
przyspieszenia 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
-
ADF
MDF
FFF
CVF
HF
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 jest gotowy do
odczytu w rejestrach AXOUT, AYOUT, AZOUT, MXOUT, MYOUT,
MZOUT. Flaga pozostaje zapalona do momentu odczytu któregoś z
rejestru.
HF – Horizontal Flag, flaga zapala się gdy czujnik jest w położeniu poziomym
CVF – Course Value Flag, flaga zapala się jak czujnik wskazuje kierunek
północny.
FFF – Free Fall Flag, flaga zapala się gdy wartość przyspieszenia dla każdej z
osi mniejsza jest od zapisanej wartości w rejestrze FFL, flaga pozostaje
zapalona do momentu odczytu rejestru.
MDF – Motion Detect Flag, flaga zapala się w przypadku wykrycia
przekroczenia zaprogramowanej wartość (rejestry MDX, MDY, MDZ)
przyspieszenia. Odczytując rejestr MDS można sprawdzić w której osi
nastąpiło przekroczenie wartości. Flaga pozostaje zapalona do
momentu odczytu rejestru.
ADF – Acceleration Detected Flag, flaga zapala się w przypadku wykrycia
liniowego lub kątowego przyspieszenia. Oznacza to, że pomiar z
rejestrów CV, ROLL i PITCH może być obarczony błędem i nie należy
go traktować jako prawidłowy. Do wyznaczenia kursu można się
posłużyć rejestrem RCV, ale wtedy czujnik musi być w pozycji
poziomej.
©2010 RoboFACTORY
12/19
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 – 12bits Accelerometer X Output Value (AXOUT):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
AXOUT[11] AXOUT[10] AXOUT[9]
b4
b3
b2
b1
b0
AXOUT[8]
AXOUT[7]
AXOUT[6]
AXOUT[5]
AXOUT[4]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
AXOUT[3]
AXOUT[2]
AXOUT[1]
AXOUT[0]
Rejestr zawiera wartość przyspieszenia w osi X. Od odczytanej wartości z rejestru AXOUT należy
odjąć wartość 2048 w celu uzyskania poprawnej wartości 256 count/g.
0x44 – 12bits Accelerometer Y Output Value (AYOUT):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
AYOUT[11] AYOUT[10] AYOUT[9]
b4
b3
b2
b1
b0
AYOUT[8]
AYOUT[7]
AYOUT[6]
AYOUT[5]
AYOUT[4]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
AYOUT[3]
AYOUT[2]
AYOUT[1]
AYOUT[0]
Rejestr zawiera wartość przyspieszenia w osi Y. Od odczytanej wartości z rejestru AYOUT należy
odjąć wartość 2048 w celu uzyskania poprawnej wartości 256 count/g.
0x46 – 12bits Accelerometer Z Output Value (AZOUT):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
AZOUT[11] AZOUT[10] AZOUT[9]
b4
b3
b2
b1
b0
AZOUT[8]
AZOUT[7]
AZOUT[6]
AZOUT[5]
AZOUT[4]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
AZOUT[3]
AZOUT[2]
AZOUT[1]
AZOUT[0]
Rejestr zawiera wartość przyspieszenia w osi Z. Od odczytanej wartości z rejestru AZOUT należy
odjąć wartość 2048 w celu uzyskania poprawnej wartości 256 count/g.
©2010 RoboFACTORY
13/19
LEGO Akcelerometr
Przykładowe wartość odczytane z rejestrów AXOUT, AYOUT lub AZOUT i odpowiadające im
przyspieszenie:
Rejestr XOUT, YOUT lub ZOUT
Wartość
przyspieszenia
4095
8g
2560
2g
2304
1g
2048
0
1792
-1g
1536
-2g
0
-8g
0x48 – X Rotation (ROLL):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
ROLL[8] ROLL[7] ROLL[6] ROLL[5] ROLL[4] ROLL[3] ROLL[2] ROLL[1]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
ROLL[0]
Rejestr zawiera wartość kąta odchylenia płaszczyzny XY urządzenia od wektora przyspieszenia
ziemskiego w osi X. Od odczytanej wartości z rejestru ROLL należy odjąć wartość 180 w celu
uzyskania poprawnej wartości w stopniach. Wartość minimalna -180, wartość maksymalna 179.
Jeśli zapalona jest flaga ADF, wartość rejestru może być nie prawidłowa.
0x4A – Y Rotation (PITCH):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
PITCH[8] PITCH[7] PITCH[6] PITCH[5] PITCH[4] PITCH[3] PITCH[2] PITCH[1]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
PITCH[0]
Rejestr zawiera wartość kąta odchylenia płaszczyzny XY urządzenia od wektora przyspieszenia
ziemskiego w osi Y. Od odczytanej wartości z rejestru PITCH należy odjąć wartość 180 w celu
uzyskania poprawnej wartości w stopniach. Wartość minimalna -180, wartość maksymalna
179.Jeśli zapalona jest flaga ADF, wartość rejestru może być nie prawidłowa.
©2010 RoboFACTORY
14/19
LEGO Akcelerometr
0x4F – Motion Detect Status (MDS):
Nr bitu
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
MDZF
MDYF
MDXF
FFF
Opis flag:
FFF – Free Fall Flag, flaga zapala się gdy wartość przyspieszenia dla każdej z
osi mniejsza jest od zapisanej wartości w rejestrze FFL, flaga pozostaje
zapalona do momentu odczytu rejestru.
MDXF – Motion Detect X Flag, flaga zapala się w przypadku wykrycia
przekroczenia zaprogramowanej wartość przyspieszenia w rejestrze
MDX. Flaga pozostaje zapalona do momentu odczytu rejestru.
MDYF – Motion Detect Y Flag, flaga zapala się w przypadku wykrycia
przekroczenia zaprogramowanej wartość przyspieszenia w rejestrze
MDY. Flaga pozostaje zapalona do momentu odczytu rejestru.
MDZF – Motion Detect Z Flag, flaga zapala się w przypadku wykrycia
przekroczenia zaprogramowanej wartość przyspieszenia w rejestrze
MDZ. Flaga pozostaje zapalona do momentu odczytu rejestru.
0x50 – Free Fall Level (FFL):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
FFL[7]
FFL[6]
FFL[5]
FFL[4]
FFL[3]
FFL[2]
FFL[1]
FFL[0]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
FFL[8]
Do rejestru należy wpisać wartość przyspieszenia wyrażoną w count/g, poniżej której następuje
ustawienie flagi FFF.
0x52 – 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/g, powyżej której
następuje zapalenie flagi MDFX.
©2010 RoboFACTORY
15/19
LEGO Akcelerometr
0x54 – Motion Detect on Y axis (MDY):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
MDY[7]
MDY[6]
MDY[5]
MDY[4]
MDY[3]
MDY[2]
MDY[1]
MDY[0]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
MDY[8]
Do rejestru należy wpisać wartość przyspieszenia w osi Y wyrażoną w count/g, powyżej której
następuje zapalenie flagi MDFY.
0x56 – 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/g, powyżej której
następuje zapalenie flagi MDFZ.
©2010 RoboFACTORY
16/19
LEGO Akcelerometr
0x60 – 12bits Magnetometer X Output Value (MXOUT):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
MXOUT[11] MXOUT[10] MXOUT[9] MXOUT[8]
b7
b6
b5
b4
-
-
-
-
b3
b2
b1
MXOUT[7] MXOUT[6] MXOUT[5]
b3
b2
b1
MXOUT[3] MXOUT[2] MXOUT[1]
b0
MXOUT[4]
b0
MXOUT[0]
Rejestr zawiera wartość natężenia pola magnetycznego w osi X. Od odczytanej wartości z rejestru
MXOUT należy odjąć wartość 2048 w celu uzyskania poprawnej wartości 1055 count/gauss.
0x62 – 12bits Magnetometer X Output Value (MYOUT):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
MYOUT[11] MYOUT[10] MYOUT[9] MYOUT[8]
b3
b2
b1
b0
MYOUT[7]
MYOUT[6]
MYOUT[5]
MYOUT[4]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
MYOUT[3]
MYOUT[2]
MYOUT[1]
MYOUT[0]
Rejestr zawiera wartość natężenia pola magnetycznego w osi Y. Od odczytanej wartości z rejestru
MYOUT należy odjąć wartość 2048 w celu uzyskania poprawnej wartości 1055 count/gauss.
0x64 – 12bits Magnetometer Z Output Value (MZOUT):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
MZOUT[11] MZOUT[10] MZOUT[9] MZOUT[8]
b3
b2
b1
b0
MZOUT[7]
MZOUT[6]
MZOUT[5]
MZOUT[4]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
MZOUT[3]
MZOUT[2]
MZOUT[1]
MZOUT[0]
Rejestr zawiera wartość natężenia pola magnetycznego w osi Z. Od odczytanej wartości z rejestru
MZOUT należy odjąć wartość 2048 w celu uzyskania poprawnej wartości 1055 count/gauss.
0x66 – Course Value (CV):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
CV[8]
CV[7]
CV[6]
CV[5]
CV[4]
CV[3]
CV[2]
CV[1]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
CV[0]
Rejestr zawiera wartość kąta jaki jest zawarty między liniami pola magnetycznego ziemi, a osą X
czujnika. Wartość kąta obliczana jest na podstawie danych z magnetometru oraz akcelerometru, co
pozwala na poprawne obliczanie wartość kąta w sytuacja gdy czujnik nie jest położony poziomo.
Od odczytanej wartości z rejestru CV należy odjąć wartość 180 w celu uzyskania poprawnej
©2010 RoboFACTORY
17/19
LEGO Akcelerometr
wartości w stopniach. Wartość minimalna -179, wartość maksymalna 180. Jeśli zapalona jest flaga
ADF, wartość rejestru może być nie prawidłowa. Wtedy można posłużyć się rejestrem RCV, ale
należy pamiętać, że czujnik musi być w pozycji poziomej.
0x68 – Raw Course Value (RCV):
Bajt 0
Funkcja
Bajt 1
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
RCV[8]
RCV[7]
RCV[6]
RCV[5]
RCV[4]
RCV[3]
RCV[2]
RCV[1]
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
RCV[0]
Rejestr zawiera wartość kąta jaki jest zawarty między liniami pola magnetycznego ziemi, a osą X
czujnika. Wartość kąta obliczana jest wyłącznie na podstawie danych z magnetometru, dlatego aby
wskazania były prawidłowe czujnik musi być w pozycji poziomej. Od odczytanej wartości z
rejestru RCV należy odjąć wartość 180 w celu uzyskania poprawnej wartości w stopniach. Wartość
minimalna -179, wartość maksymalna 180.
©2010 RoboFACTORY
18/19
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. Podczas kalibracji należy obrócić czujnik w osi Z dwa
razy i następnie w osi X również dwa razy.
0x71 – Sensor SET/RESET Command (SSRC):
Bajt 0
Funkcja
b7
b6
b5
b4
b3
b2
b1
b0
-
-
-
-
-
-
-
-
Zapis do rejestru wartości większej od 0 powoduje wykonanie komendy rozmagnesowania
czujnika. Na czas wykonywania rozkazu (100ms) zapalana jest flaga BUSY.
©2010 RoboFACTORY
19/19