打印
[新手入门]

求教,关于烈火四轴的mpu6050零偏校正代码

[复制链接]
4607|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
charosen|  楼主 | 2017-2-28 20:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在mpu6050零偏校正代码中,acc的z轴数据为何要减去2048?


void MPU6050_Offset(void)
{
        if(ACC_Offset)
        {
                //¾²Ì¬Éú´æÆÚ£¬Ö»ÔÚº¯ÊýµÚÒ»´Îµ÷ÓÃʱ³õʼ»¯
                static int32_t ACC_X=0,ACC_Y=0,ACC_Z=0;//ÐèÒªÀÛ¼ÆÁãƯ£¬ËùÒÔ32룬·ÀÖ¹Òç³ö
                static uint8_t count_acc=0;
                if(count_acc == 0)
                {
                        offset_acc.x = 0;
                        offset_acc.y = 0;
                        offser_acc.z = 0;
                        ACC_X = 0;//¾²Ì¬±äÁ¿£¬ÐèÒªÊÖ¶¯»Ö¸´Îª0
                        ACC_Y = 0;
                        ACC_Z = 0;
                        count_acc = 1;
                        return;//?µÚÒ»´Î¼ÆËãÁãÆ«Ö»ÐèÒªÉèÖóõʼֵ¾Í¿ÉÒÔÍ˳öº¯ÊýÁË
                }
                else
                {
                        count_acc++;
                        ACC_X += acc.x;
                        ACC_Y += acc.y;
                        ACC_Z += acc.z;
                }
                if(count_acc == 251)//ÀÛ¼Æ250msµÄÁãµãƯÒÆÁ¿£¬Çóƽ¾ùÿ´Î²âÊý¾ÝµÄÁãƯ
                {
                        count_acc--;
                        offset_acc.x = ACC_X/count_acc;
                        offset_acc.y = ACC_Y/count_acc;
                        offset_acc.z = ACC_Z/count_acc-2048;//£¿
                        count_acc = 0;
                        ACC_Offset = 0;
                        EEPROM_SAVE_ACC_OFFSET();//УÕý½á¹û´æ·ÅÔÚflash»òeeprom
                       
                }
                LED3_ON;//»úÉíÖÜΧµÄÒ¹¼äµÆÁÁ
        }
       
        if(GYRO_Offset)//ͬÀí£¬¿´acc¶Î×¢ÊÍ
        {
                static int32_t GYRO_X=0,GYRO_Y=0,GYRO_Z=0;
                static uint8_t count_gyro=0;
                if(count_gyro)
                {
                        offset_gyro.x = 0;
                        offset_gyro.y = 0;
                        offset_gyro.z = 0;
                        GYRO_X = 0;
                        GYRO_Y = 0;
                        GYRO_Z = 0;
                        count_gyro = 1;
                        return;
                }
                else
                {
                        count_gyro++;
                        GYRO_X += gyro.x;
                        GYRO_Y += gyro.y;
                        GYRO_Z += gyro.z;
                       
                }
                if(count_gyro == 251)
                {
                        count_gyro--;
                        offset_gyro.x = GYRO_X/count_gyro;
                        offset_gyro.y = GYRO_Y/count_gyro;
                        offset_gyro.z = GYRO_Z/count_gyro;//?
                        count_gyro = 0;
                        GYRO_Offset = 0;
                       
                        EEPROM_SAVE_GYRO_OFFSER();
                }
                LED3_ON;
}

相关帖子

沙发
charosen|  楼主 | 2017-2-28 20:16 | 只看该作者
注释乱码了,抱歉

使用特权

评论回复
板凳
gaochy1126| | 2017-3-3 09:47 | 只看该作者
12位的数据。

使用特权

评论回复
地板
arao和xiaomi| | 2017-3-11 08:05 | 只看该作者
你好,零偏校正是干什么的呀?能够解释一下吗,谢谢

使用特权

评论回复
5
胖仔菌Luke| | 2017-3-19 23:09 | 只看该作者
arao和xiaomi 发表于 2017-3-11 08:05
你好,零偏校正是干什么的呀?能够解释一下吗,谢谢

看你传感器误差模型,如果有慢变的误差量,有的简化作为常值误差处理。加速度计和陀螺仪输出的信号会有一个慢变的常值误差,你自己试着写个驱动读出数据看看就明白了。

使用特权

评论回复
6
arao和xiaomi| | 2017-3-21 12:57 | 只看该作者
胖仔菌Luke 发表于 2017-3-19 23:09
看你传感器误差模型,如果有慢变的误差量,有的简化作为常值误差处理。加速度计和陀螺仪输出的信号会有一 ...

谢谢了,我试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝