平衡车之mpu6050调试及问题总结



这里重点讲解AD0的作用,I2C通讯中从机是要有地址的,以区别多个从机。当AD0管脚接低电平的时候,从机地址是0x68。从MPU6050的寄存器中我们可以得到答案,MPU6050作为一个IIC从机设备的时候,有8位地址,高7位的地址是固定的,就是WHOAMI寄存器的默认——0x68,最低的一位是由AD0的连线决定的。
AD0接GND时候,高8位的最后一位是0 所以整个iic从几地址就是0x68
AD1接VCC时候, 高8位的最后一位是1 所以整个iic从几地址就是0x69
读取原始数据这个过程中一个很重要的思路就是一步一步,确保每步都对之后就很容易读出正确的数据



其实正点原子的和平衡车之家的程序都设置了INT平时为高电平 平衡车之家没有关闭中断,并且设置了INT引脚为B5 低电平触发中断。而正点原子的直接在mpu6050初始化的时候就关闭了中断
INT引脚触发中断设置:
在mpu6050.c中
#define DEFAULT_MPU_HZ (200)//外部中断时间200 改小时间变大
这个是fifo更新速率,而INT中断就是fifo更新的时候触发中断


介绍的比较好,对于我当时研究DMP库起了很大作用。






重点: 1.一直出现mpu_set_sensor complete .....问题的原因:
(1) 供电不稳定
(2)iic引脚接错了 sda和scl
(3)接mpu6050的杜邦线一定要短并且要可靠 用胶枪粘住避免松动

2.卡尔曼,互补滤波打印出来角度值变化很慢愿原因:
当这个获取角度函数是在main中的时候就会出现这种情况,当获取角度值放在5ms定是中断里面的时候角度值变化正常,,,,我估计原因是获取角度函数如果放在转函数while(1)中和printf一起时候,printf在发送数据时候耗时很长,导致mpu6050采集时间很慢,而放在定时器中断mpu6050就可以很稳定的时间进行实时采集。。。。。DMP不存在这个情况,放在主函数和printf共存的时候也可以正常显示角度。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值