stm32驱动mpu6050、mpu6500、mpu9250心得

浅谈自己使用mpu陀螺仪的一些心得。

mpu6050/mpu6500驱动

在这里插入图片描述
这里是用的原子哥的用虚拟IIC驱动mpu6050代码,之前我一直是用硬件IIC驱动,但是听大神说虚拟IIC比硬件IIC要稳定,尝试之后发现确实比较稳定。而且个人觉得由于虚拟IIC可以在任意IO口开设,所以相较于硬件IIC更加方便。
在这里插入图片描述
另外贴出我使用MPU9250的驱动程序,也是使用了原子哥的,MPU9250是集合了MPU6500和磁力计AK8963为一体的传感器。值得注意的一点是,MPU9250初始化完成后,需要重新设置量程参数,不然会造成初始化失败。

使用dmp进行姿态解算

陀螺仪例如mpu6050用本身自带的dmp进行姿态解算的使用的比较广泛,原子哥也有详细的教程。这里贴出来的也是原子哥的代码。但是个人多次的情况来看,dmp有两个缺点:
1.dmp容易损坏。因为dmp很容易受到高温的影响,例如我需要用热熔胶固定陀螺仪,会导致dmp损坏,多表现为dmp的自检无法通过。
在这里插入图片描述
在这里插入图片描述
会发现自检函数会一直报错
2.dmp不稳定。此处不稳定并不是指dmp解算出来的数值不稳定,而是dmp会容易受到外界因素的干扰,例如温度,气压等等。(无事实根据,个人经验猜测),因为我多次去往外地比赛,在家还好好工作的dmp到了比赛的城市就失效了,自检始终无法通过,最后不得不放弃,全程手动操控小车。

不使用dmp

那么mpu可以离开dmp工作吗?当然完全可以!我们做到代替dmp的滤波和姿态解算,我使用的是无人机飞控常使用的butterworth滤波,先将原始数据进行滤波,再进行姿态解算。
在这里插入图片描述
在这里插入图片描述
获取原始数据之后,进行滤波得到滤波后的角速度,再转换为角度制的值,这里得到的角速度数据是可以直接使用的。
butterworth滤波设计方法贴出大神:http://blog.csdn.net/u011992534/article/details/73743955

  • 15
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值