在准备RoboMaster对抗赛的过程中,遇到了一些奇奇怪怪的问题,所以将其总结并记录下来,用来警戒后学者重蹈覆辙。
1、问题的发现
在准备RM2020赛季的备赛过程中,我们遇到了一个非常奇怪的问题,RM的开发A版(stm32f407)挂载了底盘机器人的四个底盘电机3508和两个云台电机6020、6623,这6个电机连接在can1上,can2上挂载了一个2006电机后,出现开发A板过热现象,在更改换了新的开发A版后,还是出现了A版过热现象,在取下can2后 ,板子就不发烫了。
经实际测量,在供电后,五分钟内,A版的晶振和背面温度异常升高,可达60°以上,开发A版的两侧GND 外接引脚异常的发烫,稍有不慎,便可造成皮肤烫伤。
2、问题的分析
此等不寻常的发热问题引起了我和队友的密切关注,因为大疆的开发A版在挂载十几个电机后,正常的A版它的温度并不会上升太多,略微10°范围内变化。可这次的发热,发烫,远远高于板子的正常温度,部分杜邦线已经被高温熔化,沾黏在一起,极易出现未知问题。
我和队友们分析,这次异常的温度可能是由于电机接线、A版设计结构所引起的。
3、问题的解决
解决方法1:RM的开发A版(stm32f407)挂载了底盘机器人的四个底盘电机3508和两个云台电机6020、6623,这6个电机连接在can1上,can2上挂载了一个2006电机后,遥控器接收不到任何的数据,进行st-link仿真也得不到任何的数值,进行中断点判断,定位到问题是在一个can2函数卡死。注释改函数后,遥控器可以接收到数据,底盘云台且受遥控控制。
实际状况: 具体的原因是因为大疆的A版上边虽然有四个CAN2接口,但第一个can2接口不能接收can的数据的,因为连基本的线序顺序都不一样。在更换到第二个can2接口后,遥控器不用注释掉卡死函数也能接收到数据了。
解决方法2:挂在上开发A版的6623电机,是很容易损坏的,6623是款内嵌编码器的电机,但6623电机的稳定性远远差于6020电机,控制电机的稳定性,一般使用pid调节,即(p和d就够了),在实际pid调参过程中,p和d调节的已经很完美,但依旧不能避免6623电机由于自身颤抖所带来测量角度的误差,或许这便是大疆公司着重推出6020电机的原因吧。
实际状况: 在去掉can1线版上挂载的6023电机后,实测是可以进行工作的,云台恢复了正常。
解决方法3:开发A版的can2接口是4pin的,即can_h,can_l,5v,gnd,但can的接口是2pin,只有can_h,can_l,上届的学长为了使得中心版(2pin接口)兼容can2,直接粗暴的剪断了can2的5v和gnd线,但这两者的线路却短路接在了一起,造成板子直接gnd被强行输入了5v电压,这便是开发A版异常发热原因之三。
实际状况: 在更换了can2的4pin转2pin的接头后,程序就可以完美的跑起来了。
4、总结
以上的三个问题综合导致了开发A版异常发热,下图是在未找到问题之前,咨询大疆技术的一些对话,希望能够给大家一点解决问题的启示吧。