由于robomaster机甲大师赛,我们队里需要造一台轮腿步兵,关节电机和轮毂电机都选用了宇树的电机,关节电机使用了宇树a1电机,轮毂电机使用了8010电机。但是在使用的过程中,我发现,宇树官方的驱动在接收宇树电机反馈回来的数据会有很大程度上的丢包,用示波器测返回回来的RS485波形也是很杂的,并且宇树电机的官方驱动也是比较贵的,故自研了一个丢包率小,高效,且成本比宇树官方驱动小很多的RS485驱动。本次博客既是记录学习过程,也是分享出来与大家一起交流学习。
首先,高速485芯片有许多中选择,比如说sp3485,max3485这两款都是可以支持的10Mbps的波特率,我选择的是上海川土微公司的cs48520s芯片,它最高可支持20Mbps的波特率。选择这个芯片有以下两个原因,其一是供电可直接兼容C板的5V供电,无需5V转3.3V供电,其二是经过与其他两个芯片的对比测试,我发现这个芯片在驱动宇树电机的波形更加稳定好看,没有那么多的杂波。
原理图如下图所示
上图中,R4作为上拉电阻,阻值为360Ω,R5为下拉电阻,阻值为360Ω,C2做为滤波电容,为芯片滤除高频信号。R6做为终端电阻,阻值为120Ω。
驱动宇树a1和8010电机时候,DE和RE可以连接在一起,要确保DE和RE都能在推挽模式下都能输出5V左右的高电平,否则就会出现反馈回来的波形不正常的情况,如下图所示。
因为我踩这个坑踩了好久,那时候用C板的可配置io口里面的I2C部分io口进行驱动,它内部似乎有上拉电阻,导致不能正确下拉低电平出现以上这种情况。
PCB画的太丑了还是不放了,实物图如下图所示
最后放一下实物效果图吧,是可以稳定发送和接收宇树电机的数据的
最后附上配套的驱动代码,实现平台为大疆C板,内含宇树a1和宇树8010电机。
宇树电机驱动代码: 宇树电机驱动代码,实现平台为大疆C板https://gitee.com/jsoahxao/yushu-motor-driver-code.git
最后,本自研驱动已正常使用两个月了,目前没发现什么大问题。我的联系方式q:2816517837.希望各位大佬轻点拷打,狗头保命。