如何读取陀螺仪/加速度计


10

我最近购买了此MPU6050 GY-521接线板。我使用arduino.cc官方提供的Arduino草图在Arduino Mega上进行了尝试MPU-6050数据表InvenSence(生产商)页面

伙计,它给出了这个奇怪的输出!!!

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, 

(这只是其中的一部分,它连续地提供了输出之王)。我肯定知道,只有温度读数才有意义。但是,加速度和陀螺仪读数的值是多少?

好的,它说这些是原始值。如果是这样,那么我如何将它们转换为有意义的值。希望它会有所帮助(正如许多建议一样),我也想知道如何使用所谓的Jeff Rowberg库。

希望会有人对MPU-6050模块有经验。请给我一个起点。我不知道如何使用模块... :(

任何帮助是极大的赞赏。谢谢 !


1
我有一个类似的问题,解决了这个问题 electronics.stackexchange.com/questions/39024/...
JDD

哇-那是一个漂亮的小IMU!
Scott Seidman

Answers:


6

加速度计的阅读似乎是有道理的。该数据表,第13页显示4个不同的敏感性:

2 g  
4 g  
8 g  
16 g  

与。灵敏度比例因子:

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

从Z读数中,我假设您选择了2 g刻度,那么15 608为0.95 g,这是将传感器保持水平或水平时从Z轴读数中可以期望的。当您没有将零件完全保持水平时,X和Y读数也可能是由于引力引起的。而且您的阅读中也会出现错误。



类似的陀螺仪。如果您将零件握在手中,则每度/秒为131个计数。


谢谢!您所有的假设都是正确的。然后,您是否建议我将原始输出值乘以1g/16384(使用2g刻度时)以获得真实的加速度读数(对于所有轴)?那么,如何处理陀螺仪的读数呢?
Anubis 2012年

LSB单位中的含义是LSB/g什么?
Anubis 2012年

陀螺仪似乎非常灵敏,因此当您的手会有点晃动(太多咖啡?:-)时,将其握在手中可能会产生旋转读数。LSB =最低有效位,我将其翻译为“计数”。它指示最小变化。
stevenvh 2012年

通常,这种设备的“原始”读数将包括偏移(偏置)和比例因子误差。最终,您将需要通过减去偏移值并乘以每个轴的比例因子调整值来校准这些误差。
戴夫特威德

数据表的链接已断开。您是否偶然知道该文档的新位置?
右腿

11

陀螺仪在三个相应的轴(分别为偏航,俯仰和横滚轴)上给出角速度(度/秒)的值。

但是,这些传感器首先给出的任何原始值都应通过缩放转换为合理的加速度或角速度值。

MPU-6050的InvenSense数据表说,对于不同范围的陀螺仪值,我们必须使用不同的比例因子。最后,我将解释如何使用这些比例因子。

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

同样,对于加速度计(给出x,y,z轴加速度,包括重力),单位为g(9.81s2)。

加速度计值的比例因子:

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

转换原始数据:

required_value=原始值适当的敏感性

例如,在第一个数据中,

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

加速度似乎限制在2g以内。因此,比例因子= 16384

暗示 一个X=1944年16384G

陀螺仪似乎处于极限 250ºs。因此,比例因子或灵敏度= 131

暗示 陀螺仪值=-34131dËG[RËËssËC

希望能有所帮助。:)


1
与接受的答案相比,我认为此答案提供了更好的解释。
chutsu

@ajmal我了解您所描述的传感器值。我还了解到,默认情况下,陀螺仪会有轻微的漂移。但是我不明白如何在现实世界中定位数据。我阅读了很多有关欧拉角,四等分的信息,但我不理解制图表达及其背后的数学之间的权衡。任何建议从哪里开始。
seetharaman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.