
软件设计部分
第一步读取MPU6050的数据
最近因为乱七八糟的事情特别多,天气又特别冷都不想把手拿出了~~所以更新特别特别慢,对不起各位了~~~
说正题,学会读取和分析MPU6050的数据也是比较重要的一步,读取的数据是否准确直接影响到后面算法,是否可以正确的判断出小车的实时状态
首先了解它的通信协议,MPU6050为I2C通信协议,然后了解它的数据结构,然后再仔细阅读并了解它的寄存器和寄存器相关的配置,这里我把写的初始化话函数加进来~~
void MPU6050_Init(void) //MPU6050初始化函数
{
I2C_WriteByteData(DEVICE_COM0,PWR_MGMT_1, 0x00); //解除休眠状态(电源管理模块)
I2C_WriteByteData(DEVICE_COM0,SMPLRT_DIV, 0x07); //陀螺仪&加速度计采样率,典型值:0x07(125Hz)
I2C_WriteByteData(DEVICE_COM0,CONFIG, 0x06); //低通滤波频率,典型值:0x06(5Hz)
I2C_WriteByteData(DEVICE_COM0,GYRO_CONFIG, 0x18); //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)(寄存器手册P14)
I2C_WriteByteData(DEVICE_COM0,ACCEL_CONFIG, 0x01); //加速计自检、测量范围及高通滤波频率(这个在寄存器上面没有看到详细介绍),
//典型值:0x01(不自检,2G,5Hz)
}
下面我会附上我程序,程序重点难点部分,基本上都有注释~~包括每一段是干什么用的。而且MPU6050的所有寄存器的映射都写出来了,而且基本上每一个都有相应的注释,所以那个MPU6050.H可以直接拿去用了。。。
因为不会写上位机(最近在学LabVIEW,准备用它来编上位机),所以读出的数据只能
用LCD1602来进行显示,所以只能看到读出的加速度和角速度的数据,不能看到数据具体的变化趋势,还有就是,在用程序对加速度计和陀螺仪数据融合后的效果是看不出的,如果用上位机就可以很清楚看到数据融合过程的效果~~
关于MPU6050的更多用法可以参加它的数据手册~~~比如直接以数字输出6 轴或9 轴的旋转矩阵、四元数(quaternion)、欧拉角格式(Euler Angle forma)的融合演算数据,这些就要使用到他的DMP功能了~数字运动处理(DMP: Digital Motion Processing)引擎可减少复杂的融合演算数据、感测器同步化、姿势感应等的负荷。。等等~~MPU6050的功能还是非常强大的~~
下面来两张图~~我用MPU6050里面的温度计,来采集温度值和某一个轴的加速度或者角速度值显示在LCD1602上面~~
以前做的一个日历采集的温度值:
MPU6050采集的温度值和一个轴的数据:
开发板~~~
附件资料~~~
MPU6050测试程序~~
下一次就是对算法进行分析和选取合适的算法~
对于角度数据的融合现在我所知道的一共有三种
第一种,互补滤波
第二种,飞思卡尔滤波(不知道它叫什么滤波,因为是在飞思卡尔小车程序里面看到的,暂时先这么叫吧~~)
第三种,卡尔曼滤波~~
我现在正在仔细看他们的理论~~~
如果有人还有更好的算法,或者有对这些算法特别了解的大神们,还望不吝赐教~~
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 |