MPU6050中加速度计的校准

2019-08-19 16:44发布

各位高手,大家好,小弟最近在用MPU6050时遇到了个问题:传感器在水平放置时,Z轴输出的数据只有大约+0.5G左右,翻过来,理论上应该是-1G,但实际大约是-1.5G左右,其他两个X,Y轴输出正常,这是传感器坏了,还是MPU6050的加速度计没有校准?关于陀螺仪的校准,我觉得比较简单:在传感器静止不动时,测出陀螺仪各轴的偏移值,保存,以后每次的测量数据减去这个偏移值就行了。加速度计如果是没校准的话,该如何校准,期待各位的帮助。还有个问题就是关于ADC的输出值:MPU6050中每个轴的ADC是16位的,假设加速度计的量程是±2g,ADC的16位数据中,最高位为符号位,剩下的15位为数值位,2的15次方为32768,也就是当测量的加速度为2g时,输出值为32768,测量的加速度1g时,输出值为16384,这验证了数据手册上的传感器分辨率16,384  LSB/g,我现在的问题是,量程选为2G,静止时Z轴输出的数据才3000+,翻转180°,输出数据-10000+,而X,Y轴的输出原始数据范围是±6000左右,目前卡在这里,求各位大神帮帮忙~~
下面是测试时的图片:



再来张四轴的图片,希望DIY的飞控能早日搞起:



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
39条回答
戴上耳机听歌
2019-08-21 02:05
我在国外的MWC上也看到了同样的问题:
void ACC_init () {
  i2c_writeReg(MPU6050_ADDRESS, 0x1C, 0x10);             //ACCEL_CONFIG  -- AFS_SEL=2 (Full Scale = +/-8G)  ; ACCELL_HPF=0   //note something is wrong in the spec.
  //note: something seems to be wrong in the spec here. With AFS=2 1G = 4096 but according to my measurement: 1G=2048 (and 2048/8 = 256)
  //confirmed here: http://www.multiwii.com/forum/vi ... &start=10#p7480
  #if defined(FREEIMUv04)
    acc_1G = 255;
  #else
    acc_1G = 512;
  #endif

这是MWC开源飞控作者的代码,他的加速度计的量程选择的是+-8g,理论上1G对应的ADC输出值为4096,但他实际的测量输出值也只有2048,跟我的问题基本上一样。现在我只能这么理解了:加速度的ADC为15位或者是国外所说的“I have found that the MPU-6050 accelerometer sensitivity is half that stated in the datasheet for all ranges; ie 1g output is ~1024, ~2048, ~4096 and ~8192 for ranges 16, 8, 4 and 2 g respectively.”

一周热门 更多>