MPU6050改变量程的问题 求助

2019-07-20 10:27发布

本帖最后由 DChipNau 于 2016-4-3 14:39 编辑

    最近用原子哥的MPU6050的程序,加速度计默认的量程是 2g,我想给他改成8g,我是这么改的:

    在MPU_Init函数里把:
    MPU_Set_Accel_Fsr(0);                                         
    改为了
    MPU_Set_Accel_Fsr(2);

    MPU6050的驱动中我只修改了这一处,我看了下MPU的数据手册,这么改应该没问题,但是采集到的数据依然是量程为2g的数据,难道是除了这一步还需要改变其他的吗?

    补上MPU_Set_Accel_Fsr函数:
    u8 MPU_Set_Accel_Fsr(u8 fsr)
   {
               return MPU_Write_Byte(MPU_ACCEL_CFG_REG,fsr<<3);
    }

    补上MPU_Init函数
    u8 MPU_Init(void)
    {
        u8 res;
        int i;
        IIC_Init();
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);         
       delay_ms(100);
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);         
        MPU_Set_Gyro_Fsr(3);                                       
        MPU_Set_Accel_Fsr(0);                                       
        MPU_Set_Rate(50);                                                
        MPU_Write_Byte(MPU_INT_EN_REG,0X00);        
        MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);        
        MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);        
        MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);        
        res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
        if(res==MPU_ADDR)//&#198;÷&#188;tID&#213;yè·
        {
                MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);        
                MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00);
                MPU_Set_Rate(50);                                                
         }else
        {        
                return res;
        }
        return 0;
    }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
DChipNau
1楼-- · 2019-07-20 12:33
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-20 14:52
数据一模一样???
DChipNau
3楼-- · 2019-07-20 16:18
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-20 17:11
DChipNau 发表于 2016-4-3 22:05
对的,因为把原始数据转化为有效数据的时候需要除精度,如果精度不随着量程做调整(比如2g和8g都用16384) ...

配置完以后,读寄存器试试,看看是否真的配置OK了。
DChipNau
5楼-- · 2019-07-20 18:40
本帖最后由 DChipNau 于 2016-4-3 22:58 编辑
正点原子 发表于 2016-4-3 22:23
配置完以后,读寄存器试试,看看是否真的配置OK了。

您好,我试了一下,当我对量程设置为0(2g)的时候,读出来确实为0,但是当我设置为1(4g),2(8g)的时候,读出来分别是0x08,0x10,之后我又试了3,4,5,6,发现寄存器读出来的数是我设置的数再左移三位??? 请问这种情况是MPU出问题了吗?
DChipNau
6楼-- · 2019-07-21 00:03
 精彩回答 2  元偷偷看……

一周热门 更多>