Cara membaca gyro / accelerometer

10

Saya baru-baru ini membeli board breakout MPU6050 GY-521 ini . Saya mencobanya dengan Arduino Mega menggunakan sketsa Arduino yang disediakan oleh arduino.cc resmi .
( MPU-6050 Lembar Data , Halaman InvenSence (produsen) )

Sobat, ini memberikan hasil yang aneh ini !!!

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, 

(Ini hanya bagian dari itu, ini memberikan raja hasil ini terus menerus). Saya tahu pasti, hanya pembacaan suhu yang berarti. Tapi apa nilai-nilai yang diberikan untuk pembacaan akselerasi dan gyro ??

OK, katanya itu adalah nilai mentah. Jika demikian, lalu bagaimana saya bisa mengubahnya menjadi nilai yang berarti. Berharap ini bisa membantu (seperti yang disarankan banyak orang), saya juga ingin tahu cara menggunakan Jeff Rowbergperpustakaan yang disebut .

Semoga akan ada seseorang yang berpengalaman dengan modul MPU-6050. Beri saya titik untuk memulai. Saya tidak tahu bagaimana menggunakan modul ... :(

Setiap bantuan sangat dihargai. Terima kasih!

Anubis
sumber
1
Saya memiliki masalah serupa yang diselesaikan dalam pertanyaan ini electronics.stackexchange.com/questions/39024/...
JDD
Wow-- itu IMU kecil yang bagus!
Scott Seidman

Jawaban:

6

The accelerometer 's membaca tampaknya masuk akal. The datasheet , halaman 13 menunjukkan 4 kepekaan yang berbeda:

2 g  
4 g  
8 g  
16 g  

dengan resp. faktor skala sensitivitas:

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

Dari pembacaan Z, saya menganggap Anda memiliki skala 2 g yang dipilih, maka 15 608 adalah 0,95 g, yang merupakan apa yang dapat Anda harapkan dari pembacaan sumbu Z ketika Anda memegang sensor lebih atau kurang horizontal. Pembacaan X dan Y mungkin juga disebabkan oleh gravitasi ketika Anda tidak memegang bagian dengan sempurna secara horizontal. Dan Anda akan memiliki kesalahan dalam membaca juga.



Mirip dengan gyro . Pada hitungan 131 per derajat, Anda mungkin membaca ini jika memegang bagian di tangan Anda.

stevenvh
sumber
Terima kasih! Semua asumsi Anda benar. Lalu apakah Anda menyarankan saya untuk mengalikan di atas output mentah dengan 1g/16384(ketika menggunakan skala 2g) untuk mendapatkan pembacaan percepatan nyata (untuk semua sumbu kamu)? Lalu, bagaimana cara menghadapi pembacaan gyro?
Anubis
Dan apa arti dari LSBunit ini LSB/g?
Anubis
Lang tampaknya sangat sensitif, sehingga memegangnya di tangan Anda dapat memberikan pembacaan rotasi ketika tangan Anda akan sedikit goyang (terlalu banyak kopi? :-)). LSB = Least Significant Bit, yang saya terjemahkan sebagai "count". Ini menunjukkan perubahan minimum.
stevenvh
Secara umum, pembacaan "mentah" dari jenis perangkat ini akan mencakup kesalahan offset (bias) dan faktor skala. Akhirnya, Anda akan ingin mengkalibrasi kesalahan ini dengan mengurangi nilai offset dan mengalikannya dengan nilai penyesuaian faktor skala untuk setiap sumbu.
Dave Tweed
Tautan ke lembar data telah rusak. Apakah Anda mengetahui lokasi baru dari dokumen itu?
Kaki kanan
11

Sebuah Giroskop memberikan nilai Kecepatan Sudut (derajat / dtk) dalam tiga sumbu masing-masing (masing-masing Yaw, Pitch, dan Roll).

Tetapi nilai mentah apa pun yang diberikan pertama oleh sensor-sensor ini harus dikonversi menjadi akselerasi yang masuk akal atau nilai kecepatan sudut dengan penskalaan.

Lembar Data InvenSense MPU-6050 mengatakan bahwa kita harus menggunakan faktor penskalaan yang berbeda untuk rentang nilai giro yang berbeda. Saya akan menjelaskan bagaimana cara menggunakan faktor-faktor penskalaan ini pada akhirnya.

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

Demikian pula, untuk Accelerometer (yang memberikan akselerasi sumbu x, y, z termasuk gravitasi) unit yang digunakan adalah g ( ).9.81ms2

Faktor penskalaan untuk nilai accelerometer:

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

Mengonversi data mentah:

required_value=raw_valueproper_sensitivity

Misalnya, dalam data pertama, Anda dapatkan

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

Akselerasi sepertinya berada di batas 2g. Jadi, faktor penskalaan = 16384

menyiratkanax=194416384g

Gyro tampaknya berada dalam batas . Jadi, faktor penskalaan atau sensitivitas = 131250ºs

menyiratkangyro_value=34131degreessec

Semoga itu bisa membantu. :)

sasebot
sumber
1
Saya merasa jawaban ini memberikan penjelasan yang jauh lebih baik dibandingkan dengan yang diterima.
chutsu
@ Jabmal Saya mengerti nilai sensor sampai ke titik yang Anda jelaskan. Saya juga mengerti bahwa lang secara default memiliki sedikit penyimpangan. Tapi saya tidak mengerti bagaimana memvisualisasikan data di posisi dunia nyata. Saya membaca banyak tentang sudut euler, quarternions, tetapi saya tidak mengerti pertukaran antara representasi, dan matematika di belakangnya. Ada saran untuk memulai.
seetharaman