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 !

Anubis
źródło
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.

stevenvh
źródło
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. :)

sasebot
źródło
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