小米CyberGear关节电机教程
摘要:本文分享了使用小米CyberGear电机(售价499元)替代步进电机+减速器的经验。主要内容包括:1.固件升级教程(V1.2.1.5);2.CAN通讯调试要点(默认ID为7F,CAN波特率1M);3.STM32F1控制示例;4.多电机使用时终端电阻匹配方案
笔者之前做比赛时利用小米的CyberGear电机代替步进电机+减速器,感觉效果挺不错,该电机采用P+PI+PI三环控制、Can通讯、Can终端电阻为240欧,小米商城售价499。

1、小米官方说明书、上位机等资料
链接:百度网盘 请输入提取码
2、电机固件升级教程
版本号1.2.1.5增加可读参数,修复漏帧问题,增加修改波特率功能,如若不需要这些功能,可以不升级。
(1)找到电机问题汇总/维特固件资源/USB_CAN/ UART-CAN上位机/ CanMiniIMU.exe

(2)接上CAN转USB模块(官方推荐yourcee的模块,但我感觉应该其他牌子的都行),电机上电

打开维特的上位机软件,自动连接后选固件升级,选择对应串口,默认波特率,升级固件选择MCU_Motor_APP_V1.2.1.5_20231122.bin



点击升级即可,等待完成即可。
3、基于CAN转USB设备调试教程
CAN通讯具体消息结构与类型参考官方说明书。
以位置模式为例,控制一般流程为:电机失能→设置机械零点→位置模式→设置最大速度→电机使能→目标位置1→目标位置…
部分指令的示例:
值得注意的点:
(1)电机默认ID为7F,修改电机ID后需要重新上电
(2)小米电机采用CAN拓展帧格式,帧ID部分很容易写错,尤其许多通信类型需要设置来源ID(主设备)与目标ID(从设备)的情况,主设备ID最好不要和在线的从设备ID相同,否则会触发心跳等别的指令。

(3)尽量不要利用上位机去修改串口的波特率(默认是115200),容易翻车。电机默认CAN的波特率为1M,想要修改CAN波特率为500K或其他的,尽量使用USB转CAN的上位机直接发指令,感觉小米提供的上位机都不太好用。笔者这里使用的是意优的Canable模块,上位机类似串口助手,比较直观,适合调试。
4、基于STM32F1单片机控制简单示例
小米电机端似乎设置了自动重发的功能,具体表现为如若不接受电机上线的报文,就会将CAN占满,测量电机CAN的阻值会从240欧变为0欧。所以在STM32这边最好将CAN接收打开(可以不处理接收到的消息),且把自动重发关了。具体缘由因为已经过了一年多了,忘记是触发了心跳之类的还是这个重发导致的阻值为0。

简单的示例程序:


5、关于多个电机同时使用终端电阻不匹配的问题
小米电机终端电阻为240欧,由于高速CAN通讯需要匹配通讯回路等效电阻为60欧,也就是说如果同时使用4个小米电机,终端电阻4个240欧并联刚好60欧,如果使用更多电机呢?这里提供两个解决方案:
(1)拆开电机,找到CAN通讯的240欧终端电阻,拆掉电阻。

(2)利用CAN_Bridge,拓扑控制环路
笔者同时使用了5个电机,选购了科美的CAN_Bridge2,一进一出版本。将电机1、2、3、4与网桥Can1组成回路1,将电机5、开发板(240欧)与网桥CAN2(120欧)组成回路。CAN_Bridge设置为转发模式,即可实现两个回路通信,还可以设置ID映射等等。

6、结语
离当时使用电机已经过去1年多了,部分细节已经记不清了,仅供参考。附当时比赛的图


更多推荐




所有评论(0)