mpu6050模块使用dmp输出角度时程序无规律中断-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3074|回复: 15

[已解决] mpu6050模块使用dmp输出角度时程序无规律中断

[复制链接]
发表于 2021-9-14 18:51 | 显示全部楼层 |阅读模式
本帖最后由 gggggh 于 2021-9-16 19:37 编辑

我使用mpu6050库的示例,利用dmp库输出角度信息并在串口查看,但偶尔会有程序卡死,停止输出角度的问题,且没有规律难以复现,有时候连续运行十几分钟都正常,有时候却只运行了几分钟程序就卡死,请问各位有没有遇到这种情况的?应该怎么解决呢?连线方面已经把6050的int也连到arduino的中断上了
发表于 2021-9-15 09:27 | 显示全部楼层
I2C确实容易出现死机的现象。建议设置看门狗计时器,定期将单片机复位
发表于 2021-9-15 10:44 | 显示全部楼层
你IIC数据线线接触不良,导致程序一直等待模块回应,
可以考虑使用看门狗,在程序跑飞的时候复位单片机
教程见:在Arduino中使用看门狗定时器
 楼主| 发表于 2021-9-15 21:39 | 显示全部楼层
frankhan747 发表于 2021-9-15 09:27
I2C确实容易出现死机的现象。建议设置看门狗计时器,定期将单片机复位

感谢指导,但是这个mpu6050使用之前要静置初始化一会,单片机复位会让6050重新进入初始化状态影响使用,请问有没有更好的方法呢?
 楼主| 发表于 2021-9-15 21:42 | 显示全部楼层
XlinliY.Zhang 发表于 2021-9-15 10:44
你IIC数据线线接触不良,导致程序一直等待模块回应,
可以考虑使用看门狗,在程序跑飞的时候复位单片机
教 ...

感谢指导,但是这个mpu6050使用之前要静置初始化一会,单片机复位会让6050重新进入初始化状态影响使用,请问有没有更好的方法呢?
我有两个mpu6050,一个用杜邦线连接到uno上,一个直接焊线到nano上,测试时都同样有这个问题,所以我暂时排除接触不良了
发表于 2021-9-16 00:23 | 显示全部楼层
本帖最后由 frankhan747 于 2021-9-16 00:25 编辑
gggggh 发表于 2021-9-15 21:39
感谢指导,但是这个mpu6050使用之前要静置初始化一会,单片机复位会让6050重新进入初始化状态影响使用, ...

除了看门狗,更好的方法就是舍弃I2C协议,换用更不容易死机的SPI协议。但是MPU6050不支持SPI,你需要MPU6000/MPU9250/LSM9DS1.
静置是为了采集陀螺仪读数从而推算Gyro Bias. 我印象中同一IMU的Gyro Bias通常会保持恒定,因此可以考虑专门测算一次然后记下来,以后就可以直接使用了
不过说来也奇怪,我也做过不少Atmega328p通过I2C与MPU6050通信的实验,几乎没有碰到过死机的情况
发表于 2021-9-16 08:41 | 显示全部楼层
gggggh 发表于 2021-9-15 21:42
感谢指导,但是这个mpu6050使用之前要静置初始化一会,单片机复位会让6050重新进入初始化状态影响使用, ...

使用串口版MPU6050

点评

感觉不是串口不串口的问题。I2C版用了这么久都没有出现大面积的故障。串口6050这个冤枉钱属实没必要花  发表于 2021-9-16 21:59
 楼主| 发表于 2021-9-16 09:53 来自手机 | 显示全部楼层
XlinliY.Zhang 发表于 2021-9-16 08:41
使用串口版MPU6050

好的,我去看看 感谢
 楼主| 发表于 2021-9-16 09:56 来自手机 | 显示全部楼层
frankhan747 发表于 2021-9-16 00:23
除了看门狗,更好的方法就是舍弃I2C协议,换用更不容易死机的SPI协议。但是MPU6050不支持SPI,你需要MPU60 ...

请问Gyro Bias是和初始位置有关的参数吗?现在初始化之后会以初始化时的姿态作为原始位置,也就是那个姿态下输出的角度是0度,如果固定Gyro Bias会不会影响初始位置呢?
 楼主| 发表于 2021-9-16 13:47 来自手机 | 显示全部楼层
frankhan747 发表于 2021-9-16 00:23
除了看门狗,更好的方法就是舍弃I2C协议,换用更不容易死机的SPI协议。但是MPU6050不支持SPI,你需要MPU60 ...

还有一个问题是在arduino上6050怎么跳过初始化阶段呢?网上的方法好像都是针对stm单片机的,程序不一样,我对比了很久也没有什么头绪,能指点一下吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 23:50 , Processed in 0.080349 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表