|
|
最近开始想做自己的自平衡车, 需要的东西都买回来了, 尝试一件件都加起来进行测试.
首先测试了 电机的模块及电机操作都正常, 之後测试了 mpu6050 (i2c 非串口版) 可作长时期操作.
但当我把 电机开动了, 并执行 mpu6050 的测试时, 走了不久就会当机.
测试了很多次, 用了不同的库, 结果都是一样.
加入不同的 debug code, 发觉当电机开动时, 有机会出现 i2c read timeout, 之後当进行 Wire.endTransmission 时, 就会当了. Wire 的库看不懂, debug 亦停在这里了.
初时以为是在运作工改变速度由驱动模块引起, 所以把电机有关的程序全部移除, 只馀下在 setup() 中开动了电机. 进入 loop 之後就再没有电机相关的程序, 只番下电机在转动. 但结果都是一样, 只要电机在转, 读取 mpu6050 不久就会当机.
为了进一步测试是否程式出错, 我尝试把电机的电源拔掉, 用相同的程式执行, 电机当然不会转, 而程式亦可以一直执行而不会当机.
我不相信电机的转动会影响 mpu6050 运作, 否则大家的平衡车都会有相同问题, 但现在我的情形, 就是电机跟 mpu6050 不能共存.
想请教一下大家, 电机的转动, 是否会影响 i2c 的运作? 如果在 Wire.endTransmission 时当机, 有什麽方法可解决? |
|