《深入浅出MPU6050:基本原理、程序配置与实践》

一、MPU6050简介

1、内部主要结构:

陀螺仪、加速度计、数字运动处理器DMP(Digital Motion Processor)

PS: MPU6050还含有第二IIC接口,用于连接一个 第三方数字传感器AUXAUX_DA(eg.磁力计),就可以通过IIC接口输出完整的9轴信号。(否则只有6轴)。

2、连接接口:

(1)IIC接口:SCL、SDA

(2)供电接口:VCC、GND

(3)外部接口(不常用):AUX_CL、

3、姿态角

通过MPU6050读取加速度和角度的原始数据,DMP将原始角速度转化为四元数,进而完成欧拉角的计算。

 

(旋转方向通过右手螺旋定则判断)

欧拉角:俯仰角pitch、横滚角roll、航向角yaw

PS:只有确定了x-y-z的先后转换的六种组合顺序,才能确定欧拉角所指的姿态角是什么。

4、内部电路结构解析

 (1)16位ADC三轴加速度计:

三轴加速度计为每个轴使用单独的检测质量。

平坦放置时,x、y轴上为0g,z轴为1g

(2)16位ADC三轴陀螺仪:

当陀螺仪绕轴旋转时,模数转换器会对三个轴接受到的电压频率取样,陀螺仪传感器可以被解算为每秒±250,±500,±1000或±2000度(dps)。

 

二、程序配置

1、MPU6050初始化

(1)配置陀螺仪寄存器

用于设置陀螺仪的量程范围:(设置max值)

0,±250°/s;1,±500°/s;2,±1000°/s;3,±2000°/s;且陀螺仪的ADC为16位分辨率,可以此计算对应的灵敏度131、65.5、32.8、16.4LSB/(°/S)

(2)配置加速度计寄存器:(设置合适值)

用设置加速度计的量程范围:0,±2g;1,±4g;2,±8g;3,±16g;

对应的灵敏度为:16384、8192、4096、2048LSB/g

//初始化6050

unsgined char MPU6050_Init(void){
int i = 0;
IIC_Init();    //IIC初始化
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_PWR_MGMT1_REG,0X80);//复位
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_PWR_MGMT1_REG,0X00);//唤醒
i+ = MPU6050_Set_Gyro_Fsr(3);          //陀螺仪传感器,±2000dps
i+ = MPU6050_Set_Accel_Fsr(1);           //加速度传感器,±4g
i+ = MPU6050_Set_Rate(1000);                                 //设置采样率1000Hz
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_INT_EN_REG,0X00);   //关闭所有中断
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_CFG_REG,0x02);      //设置数字低通滤波器   98hz
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_USER_CTRL_REG,0X00);//I2C主模式关闭
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_FIFO_EN_REG,0X00);  //关闭FIFO
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_INTBP_CFG_REG,0X82);//INT引脚低电平有效,开启bypass模式
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_PWR_MGMT1_REG,0X01);//设置CLKSEL,PLL X轴为参考
i+ = MPU6050_Write_Byte(MPU6050_ADDR,MPU_PWR_MGMT2_REG,0X00);//加速度与陀螺仪都工作
i  = MPU6050_Read_Byte(MPU6050_ADDR,WHO_AM_I);     //读取MPU6500的ID
}

2、此外,还要配置IIC的初始化

void IIC_Init(void)

PIN_InitConfig(PD10,GPO,1,GPIO_Mode_Out_PP);

SDA_OUT;

IIC_SCL_H;

IIC_SDA_H;

IIC_Stop();

物联沃分享整理
物联沃-IOTWORD物联网 » 《深入浅出MPU6050:基本原理、程序配置与实践》

发表评论