【分享帖】3510电机+820R电调兼容官方开源+自定义主控tips
8072
0
13
2016-05-29
首先,膜一波官方开源代码,我自己是写不出来的,队伍人少学校还坑不给报销官方采购发票,机械电控各种搞不定,感谢rm组委会提供了官方开源,ec60的驱动问题直接解决了,压力小了好多
我这边也没完全改好3510的兼容,也只是在桌子上空转,另外大家要注意一定要固定好3510电机,因为3510的电机是外转子。。。。。。前天就出现了3510电机调试过程中滚下桌子,拉着电调中心板梯形板自由落体,然后,梯形板烧了,队伍唯一的梯形板(确切的说是唯一可以给我用的梯形板,第一波采购的另外两块梯形板一块用在自定义步兵的云台上,另一块被调自定义步兵的大神第一次连6025就烧了。。。。。)
3510的的动力经过减速齿轮组再传输到出轴,所以3510和ec60在相同的工作情况下,电机转子旋转加速度和极限转速上,3510远大于ec60,也因为旋转加速度大,电机灵敏,所以PID的P值需要调小,官方开源原本的底盘P值是220,直接用在3510+820R的结果是电机狂抖,我这边修改到了50才勉强不抖,另外官方开源直接采用了只给P,而 I、D全为零,这也让我非常懵逼,不过这也解释了官方步兵在斜坡上没有刹车只是减速下滑的原因,我把I 和 D 值给上去,结果就是电机只能从转子那边拧动,出轴再也拧不动了,而且有了回位,虽然回位不一定准
但是如果调小了P值,代价也是惨烈的,推杆到顶转速实在是惨不忍睹,因此我直接把rc的摇杆输出系数从原来的0.075增加到0.75,转速提升好多,不过这个系数不能提升太多,太多了,会导致推杆到顶电机狂抖不止,或者推杆到顶没事,混控后叠加起来的那个轮子狂抖不止,但是队伍目前3510的底盘还没完成。。。。没有能测试的底盘没法评估效果(第四次报告至今未提交。。。。残念)
欢迎大家一起讨论,如何让官方开源兼容3510+820R,还是说官方的pid程序本身的问题,又或者官方开源的编码器旋转角度推出转速的控制方法有问题,需要使用820R电调的返回值第三第四字节的速度值?
tips:换了自己的单片机跑官方开源的同志们,即使使用的同是stm32f405,也要检查自己的板子晶振和官方梯形板晶振是否一样,官方使用的是25MHz晶振,而我这边的板子用的8MHz晶振,结果我就懵逼了,因为d-bus输入解码和can口输出都无效了,但是代码还是在跑,最后得益于看到bbs里其他同志的晶振问题,才想起来需要改时钟,
#define PLL_M 8
#define HSE_VALUE ((uint32_t)8000000)
修改以上define的值替换掉即可
我这边也没完全改好3510的兼容,也只是在桌子上空转,另外大家要注意一定要固定好3510电机,因为3510的电机是外转子。。。。。。前天就出现了3510电机调试过程中滚下桌子,拉着电调中心板梯形板自由落体,然后,梯形板烧了,队伍唯一的梯形板(确切的说是唯一可以给我用的梯形板,第一波采购的另外两块梯形板一块用在自定义步兵的云台上,另一块被调自定义步兵的大神第一次连6025就烧了。。。。。)
3510的的动力经过减速齿轮组再传输到出轴,所以3510和ec60在相同的工作情况下,电机转子旋转加速度和极限转速上,3510远大于ec60,也因为旋转加速度大,电机灵敏,所以PID的P值需要调小,官方开源原本的底盘P值是220,直接用在3510+820R的结果是电机狂抖,我这边修改到了50才勉强不抖,另外官方开源直接采用了只给P,而 I、D全为零,这也让我非常懵逼,不过这也解释了官方步兵在斜坡上没有刹车只是减速下滑的原因,我把I 和 D 值给上去,结果就是电机只能从转子那边拧动,出轴再也拧不动了,而且有了回位,虽然回位不一定准
但是如果调小了P值,代价也是惨烈的,推杆到顶转速实在是惨不忍睹,因此我直接把rc的摇杆输出系数从原来的0.075增加到0.75,转速提升好多,不过这个系数不能提升太多,太多了,会导致推杆到顶电机狂抖不止,或者推杆到顶没事,混控后叠加起来的那个轮子狂抖不止,但是队伍目前3510的底盘还没完成。。。。没有能测试的底盘没法评估效果(第四次报告至今未提交。。。。残念)
欢迎大家一起讨论,如何让官方开源兼容3510+820R,还是说官方的pid程序本身的问题,又或者官方开源的编码器旋转角度推出转速的控制方法有问题,需要使用820R电调的返回值第三第四字节的速度值?
tips:换了自己的单片机跑官方开源的同志们,即使使用的同是stm32f405,也要检查自己的板子晶振和官方梯形板晶振是否一样,官方使用的是25MHz晶振,而我这边的板子用的8MHz晶振,结果我就懵逼了,因为d-bus输入解码和can口输出都无效了,但是代码还是在跑,最后得益于看到bbs里其他同志的晶振问题,才想起来需要改时钟,
#define PLL_M 8
#define HSE_VALUE ((uint32_t)8000000)
修改以上define的值替换掉即可
文章标签