mpu6050模块使用dmp输出角度时程序无规律中断-Arduino中文社区 - Powered by Discuz!
查看: 307|回复: 15

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

[复制链接]

该用户从未签到

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

我使用mpu6050库的示例,利用dmp库输出角度信息并在串口查看,但偶尔会有程序卡死,停止输出角度的问题,且没有规律难以复现,有时候连续运行十几分钟都正常,有时候却只运行了几分钟程序就卡死,请问各位有没有遇到这种情况的?应该怎么解决呢?连线方面已经把6050的int也连到arduino的中断上了

签到天数: 62 天

[LV.6]常住居民II

发表于 2021-9-15 09:27 | 显示全部楼层
I2C确实容易出现死机的现象。建议设置看门狗计时器,定期将单片机复位

签到天数: 68 天

[LV.6]常住居民II

发表于 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上,测试时都同样有这个问题,所以我暂时排除接触不良了

签到天数: 62 天

[LV.6]常住居民II

发表于 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通信的实验,几乎没有碰到过死机的情况

签到天数: 68 天

[LV.6]常住居民II

发表于 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单片机的,程序不一样,我对比了很久也没有什么头绪,能指点一下吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

继电器断开瞬间esp32重启或者网络断开
继电器断开瞬间esp32重启
主要模块: 芯片ESP32-WROOM-32D 供电用的220V转5V模块,700mA 网络LAN8720A模块 继电
【Arduino】168种传感器系列实验(171)---HLK-V20离线语音模块
【Arduino】168种传感器系
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
【Arduino】168种传感器系列实验(181)---1.3寸OLED液晶屏模块
【Arduino】168种传感器系
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
大佬们,帮帮忙
大佬们,帮帮忙
为什么我写的子程序,单独使用运行没问题,两个程序合起来就只会运行一个程序
OLED 128*64自制可达10000000个选项的菜单(已更新)
OLED 128*64自制可达10000
OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表