Jak odczytać żyroskop / akcelerometr


10

Niedawno kupiłem tę płytkę zabezpieczającą MPU6050 GY-521 . Próbowałem z moim Arduino Mega, korzystając z tego szkicu Arduino dostarczonego przez oficjalny arduino.cc .
( Karta katalogowa MPU-6050 , strona InvenSence (producent) )

Człowieku, daje to dziwną moc !!!

InvenSense MPU-6050
June 2012
WHO_AM_I : 68, error = 0
PWR_MGMT_2 : 0, error = 0

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1944, 368, 15608
temperature: 30.576 degrees Celsius
gyro x,y,z : -34, -204, -247, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1952, 364, 15304
temperature: 30.435 degrees Celsius
gyro x,y,z : -38, -216, -274, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1864, 388, 15356
temperature: 30.482 degrees Celsius
gyro x,y,z : -34, -233, -278, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1888, 324, 15260
temperature: 30.576 degrees Celsius
gyro x,y,z : -14, -220, -261, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1904, 392, 15316
temperature: 30.624 degrees Celsius
gyro x,y,z : -34, -241, -238, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1856, 308, 15604
temperature: 30.435 degrees Celsius
gyro x,y,z : -33, -252, -235, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1892, 444, 15528
temperature: 30.624 degrees Celsius
gyro x,y,z : 20, -236, -251, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1924, 356, 15520
temperature: 30.576 degrees Celsius
gyro x,y,z : -19, -224, -251, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 1844, 280, 15732
temperature: 30.529 degrees Celsius
gyro x,y,z : -1, -240, -249, 

MPU-6050
Read accel, temp and gyro, error = 0
accel x,y,z: 2004, 372, 15396
temperature: 30.671 degrees Celsius
gyro x,y,z : -20, -252, -255, 

(To tylko część tego, daje to królowi ciągłej wydajności). Wiem na pewno, tylko odczyt temperatury ma znaczenie. Ale jakie są te wartości dla przyspieszenia i odczytów żyroskopu?

OK, mówi, że są to wartości surowe. Jeśli tak, to w jaki sposób mogę je przekształcić w wartościowe wartości. Mając nadzieję, że może to być pomocne (jak wielu sugerowało), lubię też wiedzieć, jak korzystać z tak zwanej Jeff Rowbergbiblioteki.

Mam nadzieję, że będzie ktoś doświadczony z modułem MPU-6050. Po prostu daj mi punkt, aby zacząć. Nie mam pojęcia, jak korzystać z modułu ... :(

Każda pomoc jest znacznie ceniona. Dzięki !


1
Miałem podobny problem, który rozwiązałem w tym pytaniu electronics.stackexchange.com/questions/39024/…
— JDD

Wow - to fajne małe IMU!
— Scott Seidman

Odpowiedzi:


6

Akcelerometr „s odczyt wydaje się mieć sens. Datasheet , strona 13 wskazuje, 4 różne wrażliwości:

2 g  
4 g  
8 g  
16 g  

z resp. współczynniki skali wrażliwości:

16 384 counts/g  
8 192 counts/g  
4 096 counts/g  
2 048 counts/g  

Z odczytu Z zakładam, że masz wybraną skalę 2 g, a następnie 15 608 wynosi 0,95 g, czego można oczekiwać od odczytu osi Z, gdy trzymasz czujnik mniej więcej w pozycji poziomej. Odczyt X i Y prawdopodobnie wynika również z grawitacji, gdy nie trzymasz części idealnie poziomo. I będziesz miał błąd w czytaniu.



Podobne dla żyroskopu . Przy 131 zliczeniach na stopień / s możesz mieć tego rodzaju czytanie, jeśli trzymasz tę część w rękach.


Dzięki! Wszystkie twoje założenia są prawidłowe. Czy zatem sugerujesz, żebym pomnożyć powyżej surowego wyniku przez 1g/16384(przy użyciu skali 2 g), aby uzyskać rzeczywisty odczyt przyspieszenia (dla wszystkich osi ciebie)? Jak zatem radzić sobie z odczytami żyroskopów?
— Anubis,

A jakie jest znaczenie LSBtego urządzenia LSB/g?
— Anubis,

Żyroskop wydaje się być bardzo wrażliwy, więc trzymanie go w dłoniach może dać odczyt obrotu, gdy trzęsą się ręce (za dużo kawy? :-)). LSB = Najmniej znaczący bit, który tłumaczyłem jako „count”. Wskazuje minimalną zmianę.
— stevenvh

Ogólnie rzecz biorąc, „surowe” odczyty z tego typu urządzeń będą obejmować błędy przesunięcia (odchylenia) i współczynnika skali. W końcu będziesz chciał skalibrować te błędy, odejmując wartość przesunięcia i mnożąc przez wartość dostosowania współczynnika skali dla każdej osi.
— Dave Tweed,

Link do arkusza danych został zerwany. Czy znasz nową lokalizację tego dokumentu?
— Prawa noga

11

Żyroskop podaje wartości prędkości kątowej (stopnie / s) w trzech odpowiednich osiach (odpowiednio osie odchylenia, pochylenia i przechyłu).

Ale jakakolwiek surowa wartość podana najpierw przez te czujniki powinna zostać przeliczona na skalowalne wartości przyspieszenia lub prędkości kątowej.

Arkusz danych InvenSense MPU-6050 mówi, że musimy stosować różne współczynniki skalowania dla różnych zakresów wartości żyroskopu. Na końcu wyjaśnię, jak wykorzystać te czynniki skalowania.

Angular Velocity Limit  |   Sensitivity
----------------------------------------
250º/s                  |    131
500º/s                  |    65.5 
1000º/s                 |    32.8 
2000º/s                 |    16.4

9.81ms2

Współczynniki skalowania dla wartości akcelerometru:

Acceleration Limit  |   Sensitivity
----------------------------------------
2g                  |    16,384
4g                  |    8,192  
8g                  |    4,096 
16g                 |    2,048 

Konwertowanie nieprzetworzonych danych:

required_value=raw_valueproper_sensitivity

Na przykład masz pierwsze dane

accel x,y,z: 1944, 368, 15608
gyro x,y,z : -34, -204, -247

Wydaje się, że przyspieszenie wynosi 2 g. Zatem współczynnik skalowania = 16384

ax=194416384g

Gyro wydaje się być w granicy . Współczynnik skalowania lub czułość = 131250ºs

implikujegyro_value=−34131degreessec

Mam nadzieję, że to pomaga. :)


1
Wydaje mi się, że ta odpowiedź stanowi znacznie lepsze wyjaśnienie w porównaniu z przyjętym.
— chutsu,

@ajmal Rozumiem wartości czujników aż do opisanego punktu. Rozumiem również, że żyroskop domyślnie ma niewielki dryf. Ale nie rozumiem, jak wizualizować dane w pozycjonowaniu w świecie rzeczywistym. Dużo czytam o kątach Eulera, ćwiartkach, ale nie rozumiem kompromisów między przedstawieniami i matematyki za tym. Wszelkie sugestie, od czego zacząć.
— seetharaman
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.