上次做了电机脉冲的采集,这回做MPU6050的数据读取。
本以为MPU6050数据读取是个难点,特地挑了个好日子专门研究,在看过MPU6050的手册后,发现起始只要会了IIC的协议。MPU6050的数据读取就不是个问题,还好在之前跟着郭天祥老师的视频写了一回IIC的协议,这回操作起来就顺手的多了
MPU6050采用IIC协议通讯,集成3轴陀螺仪和3轴加速度传感器,温度传感器,IIC地址1位可设置
小车主板的IIC地址为0xd0,
SCL接P4^6 SDA接P4^5
在对MPU6050进行操作的时候需要将这两个引脚的模式设置一下,我在开始的时候没有设置,导致我都会来的都是FF,在这里我们将这引脚模式设为弱上拉模式,
然后将IIC初始化,如果没有写过IIC,先去写一下IIC会好一点,
对MPU6050初始化
就是对MPU的几个寄存器写数据
void MPU6050_init() //MPU6050地址 0xd0
{
IIC_Write(0xd0,PWR_MGMT_1,0x00); //解除休眠状态
IIC_Write(0xd0,SMPLRT_DIV,0x07); // //陀螺仪采样率,典型值:0x07(125Hz)
IIC_Write(0xd0,CONFIG,0x04); //低通滤波频率,典型值:0x06(5Hz)
IIC_Write(0xd0,GYRO_CONFIG,0x18); //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
IIC_Write(0xd0,ACCEL_CONFIG,0x01); //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
}
初始化可参考MPU6050的手册,我参考的是战舰 V3开发板附带的资料
在初始化过后就可以读取数据了,读取数据就是从MPU6050的寄存器里读一个数据,数据都是由高八位和低八位寄存器组成
用IIC读数据的方法,按照这些寄存器的地址去读,就可以读出来了
MPU6050中还有一个叫做DMP的姿态结算的东西
按照上述办法读取回来的是原始数据不是角度,需要进行姿态解算,具体我还未理解,接下来做整体对接的时候就要看数据的处理了,很烦的东西啊,还要分析什么加速度,平行四边形分析法,一下就把我带回了高中时候啊,
下面附上我参考的资料和我自己写的程序
11,ATK-MPU6050六轴传感器模块.zip
(15.32 MB, 下载次数: 46)
MPU6050.zip
(50.02 KB, 下载次数: 30)
|