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

电器工程 Arduino 加速度计 陀螺仪
2022-01-13 00:42:42

我最近购买了这款 MPU6050 GY-521 分线板使用官方arduino.cc提供的这个 Arduino 草图在我的Arduino Mega上进行了尝试。( MPU-6050 数据表, InvenSence (producer) Page )

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

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 模块有经验。请给我一个起点。我不知道如何使用该模块... :(

非常感谢任何帮助。谢谢 !

2个回答

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

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

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 (\$ \large 9.81 \frac{m}{\text{s}^2} \$)。

加速度计值的比例因子:

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

转换原始数据:

\$ \大 \text{required_value} = \frac{\text{raw_value}}{\text{proper_sensitivity}} \$

例如,在第一个数据中,你得到了

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

加速度好像在2g的极限。所以,比例因子 = 16384

暗示 \$ \大 ax=\frac{1944}{16384} g \$

陀螺仪似乎在 \$ \Large \frac{250º}{\text{s}} \$ 的限制内。因此,比例因子或灵敏度 = 131

暗示 \$ \Large \text{gyro_value}=\frac{-34}{131} \frac{degrees}{sec} \$

希望有帮助。:)

加速度计读数似乎是有道理的。数据表第 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 次。