极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 52361|回复: 13

MPU6050中加速度计的校准

[复制链接]
发表于 2013-8-10 20:30:00 | 显示全部楼层 |阅读模式
各位高手,大家好,小弟最近在用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左右,目前卡在这里,求各位大神帮帮忙~~
下面是测试时的图片:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-8-10 20:55:07 | 显示全部楼层
楼主比俺走得远一些,俺刚才把数据读上来,数据的物理含义,一个都还不清楚呢
回复 支持 反对

使用道具 举报

发表于 2013-8-11 08:14:53 | 显示全部楼层
给你说个最简单的校准方法,把mwc的程序烧进去,然后用它的上位机一键校准,效果很好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-11 10:43:06 | 显示全部楼层
唉,等了这么久也没人回贴。我在国外的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.”论坛有大婶遇到过这个问题没啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-11 10:50:16 | 显示全部楼层
firedphoenix 发表于 2013-8-10 20:55
楼主比俺走得远一些,俺刚才把数据读上来,数据的物理含义,一个都还不清楚呢

慢慢来,一起学习~~~~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-11 10:50:32 | 显示全部楼层
tinymilk 发表于 2013-8-11 08:14
给你说个最简单的校准方法,把mwc的程序烧进去,然后用它的上位机一键校准,效果很好

我去研究下MWC的代码
回复 支持 反对

使用道具 举报

发表于 2013-8-11 13:43:12 | 显示全部楼层
很想买一块楼主那显示器,和下面那块板子,主要是显示器周围没有设置的功能那种图标,楼主记得告诉我哈,一直想买个显示器用来做实验用
回复 支持 反对

使用道具 举报

发表于 2013-8-12 17:49:55 | 显示全部楼层
也在为加速度的校准头疼
回复 支持 反对

使用道具 举报

发表于 2014-1-25 19:30:27 | 显示全部楼层
ianon 发表于 2013-8-12 17:49
也在为加速度的校准头疼

我也是,毕业设计跟加速度计校准有关求相关的帖子
回复 支持 反对

使用道具 举报

发表于 2014-3-3 11:07:54 来自手机 | 显示全部楼层
我也是迷迷糊糊的状态,不知道陀螺仪芯片型号一样不,我那个好像记得说z轴是和xy轴共用2个寄存器,每边各取4位。是不是计算上有问题啊?看楼主的描述好像有点复合这个状况
回复 支持 反对

使用道具 举报

发表于 2014-3-3 13:38:54 | 显示全部楼层
请看
http://arduino.googlecode.com/files/arduino-1.0.5-windows.zip

上面源码的相关文章 http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=803115&highlight=
回复 支持 反对

使用道具 举报

发表于 2015-8-21 21:29:19 | 显示全部楼层
应该就是没校准了,估计是贴得不好导致偏差这么大,0.5g+1.5g就是2g了,需要加上0.5g的偏差,对应的MPU6050的寄存器为0x06-0x0B,写入进去就可以硬件校准了。应该是这样了,陀螺仪温飘也是写进0x13-0x18中。
回复 支持 反对

使用道具 举报

发表于 2015-8-21 21:36:31 | 显示全部楼层
应该就是没校准了,估计是贴得不好导致偏差这么大,0.5g+1.5g就是2g了,需要加上0.5g的偏差,对应的MPU6050的寄存器为0x06-0x0B,写入进去就可以硬件校准了。应该是这样了,陀螺仪温飘也是写进0x13-0x18中。BGC云台的做法是一面或6面校准,一面应该就是当另两个轴的值最小时(可认为重力的分量都落在第三轴上)然后取其距离1g或-1g的差值作为偏差,6面的话应该就是取最大和最小的平均了。一般来说,z轴的偏差会比其他轴大,所以多数是只校正z轴的。个人见解,不喜勿喷。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 17:17 , Processed in 0.067350 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表