Wii Motion Plus =>vypočítání úhlu natočení (gyroskop)

Problémy s návrhem, konstrukcí, zapojením, realizací elektronických zařízení

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
radar0101
Příspěvky: 20
Registrován: 15 čer 2010, 00:00

Wii Motion Plus =>vypočítání úhlu natočení (gyroskop)

#1 Příspěvek od radar0101 »

Zdravím,
potřeboval bych pomoci, mam doma gyroskop od konzole Wii a potřebuju z něj dostat úhly natočení. Data z něj přečtu ale bohužel ta čísla co z něj dostanu, mě nic neřikaj. Co je to za hodnoty?
Děkuji za pomoc.

Zde je můj program pro přečtení dat.


Kód: Vybrat vše

  '$sim
$regfile = "m8def.dat"                                      'Soubor s deklaracemi
$crystal = 8000000                                          'Kmitočet krystalu v Hz
$baud = 57600
$hwstack = 100
$swstack = 64
$framesize = 64

'''''''
Dim X_natoceni As integer
Dim Y_natoceni As Integer
Dim Z_natoceni As Integer
Dim X_natoceni_0 As Integer
Dim Y_natoceni_0 As Integer
Dim Z_natoceni_0 As Integer
Dim Soucet As Word
'''''''

Dim Gyro_prijem(6) As Integer
Dim Adresa_w As Byte
Dim Adresa_r As Byte
''''''''''


Dim I As Byte
                                              '
'''''''''''''
Adresa_w = &HA6
Adresa_r = &HA4


Config Scl = Portd.7
Config Sda = Portb.0
Config I2cdelay = 2.5us
'''''''''''''



Gosub Gyro_inic
Waitms 100
Gosub Gyro_kalibrace_nuly
Waitms 100

Do

Gosub Gyro_prijem_dat


Print X_natoceni ; "  ,  " ; Y_natoceni ; "  ,  " ; Z_natoceni


Waitms 200
''''''''''''''''

Loop
End

Gyro_kalibrace_nuly:
For I = 1 To 10
I2cstart
I2cwbyte Adresa_r
I2cwbyte &H00
I2cstop

I2creceive &HA5 , Gyro_prijem(1) , 0 , 6

Shift Gyro_prijem(4) , Right , 2
Shift Gyro_prijem(4) , Left , 8
Gyro_prijem(4) = Gyro_prijem(4) + Gyro_prijem(1)
Gyro_prijem(4) = Gyro_prijem(4) / 10
X_natoceni_0 = X_natoceni_0 + Gyro_prijem(4)

Shift Gyro_prijem(5) , Right , 2
Shift Gyro_prijem(5) , Left , 8
Gyro_prijem(5) = Gyro_prijem(5) + Gyro_prijem(2)
Gyro_prijem(5) = Gyro_prijem(5) / 10
Y_natoceni_0 = Y_natoceni_0 + Gyro_prijem(5)

Shift Gyro_prijem(6) , Right , 2
Shift Gyro_prijem(6) , Left , 8
Gyro_prijem(6) = Gyro_prijem(6) + Gyro_prijem(3)
Gyro_prijem(6) = Gyro_prijem(6) / 10
Z_natoceni_0 = Z_natoceni_0 + Gyro_prijem(6)
Next
Return

gyro_inic:
I2cstart
I2cwbyte Adresa_w
I2cwbyte &HFE
I2cwbyte &H04
I2cstop
Return

Gyro_prijem_dat:

I2cstart
I2cwbyte Adresa_r
I2cwbyte &H00
I2cstop

I2creceive &HA5 , Gyro_prijem(1) , 0 , 6

Shift Gyro_prijem(4) , Right , 2
Shift Gyro_prijem(4) , Left , 8
Gyro_prijem(4) = Gyro_prijem(4) + Gyro_prijem(1)
X_natoceni = Gyro_prijem(4) - X_natoceni_0
X_natoceni = X_natoceni / 20

Shift Gyro_prijem(5) , Right , 2
Shift Gyro_prijem(5) , Left , 8
Gyro_prijem(5) = Gyro_prijem(5) + Gyro_prijem(2)
Y_natoceni = Gyro_prijem(5) - Y_natoceni_0

Shift Gyro_prijem(6) , Right , 2
Shift Gyro_prijem(6) , Left , 8
Gyro_prijem(6) = Gyro_prijem(6) + Gyro_prijem(3)
Z_natoceni = Gyro_prijem(6) - Z_natoceni_0
Waitms 100
Return

Uživatelský avatar
radar0101
Příspěvky: 20
Registrován: 15 čer 2010, 00:00

#2 Příspěvek od radar0101 »

Ještě možnost že ten gyroskop nefunguje…pac je divný že ty výstupní hodnoty lítají jak splašený….. Noo poraďte :wink: dííky
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#3 Příspěvek od Andrea »

Neleze z toho gyra náhodou úhlová rychlost? Možná kdybys napsal, co tam máš za typ, dalo by se radit konkrétněji.
Uživatelský avatar
iginoiii
Příspěvky: 364
Registrován: 01 črc 2010, 00:00
Bydliště: Bratislava

#4 Příspěvek od iginoiii »

Čo ja poznám gyra, od analog devices, tak zo všetkých ide samozrejme uhlová rýchlosť ako spomína Andrea, takže jedine integrovať, signál by mohol byť použiteľný. i
Naposledy upravil(a) iginoiii dne 21 zář 2011, 19:39, celkem upraveno 2 x.
Uživatelský avatar
radar0101
Příspěvky: 20
Registrován: 15 čer 2010, 00:00

#5 Příspěvek od radar0101 »

Dobře tak dejme tomu ze z toho leze ω. Tak jakej je nejlepší algoritmus na získání toho úhlu? Pač se ty data rychle mění tak se asi bude muset vzít průměr z pár vzorků? Pak dat nějakou časovou prodlevu a znova změřit a vypočítat, nebo jak?
Děkuji za rady…
A primo jaký v tom je gyro nevím. Tady je odkaz na nějaké info:
http://wiki.pinguino.cc/index.php/With-wii-motion%2B
http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#6 Příspěvek od Andrea »

radar0101 píše:A primo jaký v tom je gyro nevím.

Když nevíš, co je tam za gyro, tak jak víš, jak s ním komunikovat? 8O
Uživatelský avatar
radar0101
Příspěvky: 20
Registrován: 15 čer 2010, 00:00

#7 Příspěvek od radar0101 »

Protože jsem si našel jakej používá ta konzole wii, tedy přímo ten modul s gyroskopem, komunikační protokol.
A tak tam maj nějakej IDG600.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#8 Příspěvek od Andrea »

IDG600 je dvojosý.
Uživatelský avatar
iginoiii
Příspěvky: 364
Registrován: 01 črc 2010, 00:00
Bydliště: Bratislava

#9 Příspěvek od iginoiii »

Algoritmus na získanie natočenia z rýchlosti? integrácia, ako som už spomenul, vo vašom prípade si naštudujte numerickú integráciu. Tú určite pôjde implementovať do mikroprocesoru, aj keď ja osobne tieto problémy riešim v Matlabe :)
Uživatelský avatar
radar0101
Příspěvky: 20
Registrován: 15 čer 2010, 00:00

#10 Příspěvek od radar0101 »

To je jasny ze z úhlovej rychlosti se integraci v case dostaneš na uhel...Matlab je super nastroj to taky...ale spis bych potřeboval vědět jak se pracuje s tím gyroskopem, jak se zpracovávají ty data z něj....Bych potřeboval poradit od někoho kdo už s gyroskopem pracoval a dostal z něj úhel natočení a hlavně jakej postup pro to použil atd…
Zatím děkují…ale potřeboval bych se s tím dostat dál.
:wink:
Uživatelský avatar
iginoiii
Příspěvky: 364
Registrován: 01 črc 2010, 00:00
Bydliště: Bratislava

#11 Příspěvek od iginoiii »

Niečo mi hovorí, že k podobnému hotovému projektu sa nedostanete, pretože ich moc nebude na internete zverejnených, a skôr či neskôr aj tak skončíte pri numerickej integrácii. Ale možno sa mýlim, i
Uživatelský avatar
radar0101
Příspěvky: 20
Registrován: 15 čer 2010, 00:00

#12 Příspěvek od radar0101 »

Tak je tam ITG 3205...asi nějaká činská kopie pac celej ten motion plus je z Číny za par korun. Tak se pokusím cist data prim z nej...vyzkouším nějaký věci a uvidíme zda z toho dostanu ten úhel.
Každopádně díky.
Odpovědět

Zpět na „Řešení problémů s různými konstrukcemi“