如何使用RS485通信协议连接DFRobot M0601电机
在本全面教程中,您将学习如何使用RS485通信协议连接DFRobot M0601电机(AGV直驱轮毂电机)。我们将逐步指导您通过原始十六进制命令测试电机,使用Python脚本实现自动化运动控制,并最终通过MotorLink——一款直观的基于浏览器的数字孪生应用——进行远程控制。
MotorLinkLinkLink 网页应用
MotorLink 是一款免费的基于浏览器的控制应用程序,旨在简化与 M0601 电机的接口操作。它通过 Web Serial API 自动处理所有 RS4855 协议复杂性,无需安装软件或后端系统。
主要特点:
•数字孪生可视化:实时同步电机运动状态于屏幕。
•全电机控制:通过直观的滑块和预设值,实现速度、电流和位置回路模式的调节。
•实时遥测与图表:实时监控速度、电流、位置和温度。
•高级工具:集成身份管理器、原始十六进制编辑器以及通信数据包日志。
材料
•1x M0601
•1x Rainbowlink
1. 发动机概述
M0601 是 DFRobot FIT10422 系列的一款高性能直驱轮毂电机。它基于集成式 FOC(场向控制)伺服架构,将外转子无刷电机、编码器和伺服驱动器集成于一个紧凑的单元中,无需外部减速器,可直接为车轮提供平稳、低噪音的扭矩输出。
与传统的齿轮电机不同,M0601采用直驱技术,即轮子作为转子。这使其具备以下优势:
•无背隙,机械损耗接近零
•超低噪音(适合室内环境)
•低转速下平稳的扭矩,无卡滞现象
•最高可达500Hz的精确闭环控制
通信完全通过RS485实现,采用紧凑的10字节帧协议,可轻松通过USB转RS485适配器与任何微控制器、单板计算机或PC集成。
2. 版本 — — 左对右对
M0601 提供两种镜像版本,以适配不同的底盘和机器人设计:
注意:橡胶轮胎具有方向性花纹。如需更换轮胎角度,请拆下前部黑色盖板上的3×M2.5×8六角螺丝,取下盖板,取出轮胎,将其旋转至正确方向后重新安装。
两个版本在机械和电气上完全相同,仅轮胎安装方向不同。通过速度/电流值的符号,可使任一电机朝任意方向旋转。
3. 规格
4. 应用
M0601结合了直驱、RS485多点控制以及三种控制模式,非常适合以下用途:
•移动机器人——AGV驱动轮、差速驱动和全向平台
•平衡机器人——用于自平衡系统的精确速度控制
•机器人关节——采用电流环模式的力矩控制机械臂和机械腿
•服务机器人——室内配送、酒店服务、安保巡逻机器人
•健身器材 — — — 带扭矩反馈的智能阻力轮
•相机滑块/云台 — — 可重复角度控制的定位回路
工业自动化——共享RS485总线上的输送机驱动轮
5. 引脚布局与接线
电机有两个电缆连接器:
•信号电缆(4针JST连接器)
•电源线(2针连接器)
6. 通过RS485接口通信
RS485是一种差分双线总线。多个电机可以共享同一对A/B,每个电机具有唯一的地址(ID 0x01–0xFE)。
连接图
关键规则
•A/B极性很重要。如果电机无反应,请将橙色和白色互换。
•棕色线必须连接到GND,它是RS485信号的接地参考。如果将其悬空,则会导致通信错误,尤其是在长距离电缆上更为明显。
•18V电源与RS485逻辑独立。即使RS485通信正常,电机在无电源的情况下也不会转动。
•设置或查询ID时,总线上的电机仅有一个——地址冲突会导致响应混乱。
•对于长度超过1米的电缆,应在总线远端的A和B之间加一个120Ω的终端电阻。
7. 与 RainbowLinkLink 接口(TEL0185)
DFRobot RainbowLink(TEL0185)是一款支持RS485、RS232和TTL的4通道USB多协议转换器,通过单一USB连接即可实现多种通信协议。它是M0601型号推荐的PC接口设备。
逐步设置
步骤1:安装驱动程序
RainbowLink 使用 CH34333 芯片组。请从 DFRobotobot 维基或直接从 WCH 下载 CH34333 驱动程序:CH34333 驱动下载
步骤2:连接电线
•橙色(B−)→ RS485通道的终端
•白色(A+)→ RS485通道的B端子
•黑(GND)→ GNDND 接口
•棕色(RESV)→→ 地线端子(推荐)
如果电机无响应,请将橙色与白色互换——电机上的A/B标识相对于某些转换器是反向的。
步骤3:识别COM端口
通过USB插入RainbowLink后:
•Windows:打开设备管理器 → → → 端口(COM 和 LPT)→→ 记录 COM COM 号(例如 COM13)
•Linux/Mac:运行 ls /dev/tty*,查找 /dev/ttyUSB0 或类似路径
步骤4:串行设置
步骤5:使用Hercules进行快速测试
打开 Hercules 设置工具 → 串行选项卡 → → 配置上方设置 → → 点击打开。在“发送”框中,勾选 HEX,输入下方的 ID 查询帧,然后点击发送:
接收窗口中的响应确认电机已正确接线并通电。
8. 通信协议
所有电机通信均采用10字节帧,波特率115200 bps,8N1,半双工RS485。
发送帧结构(驱动命令)
CRC-8/MAXIMIMIM 算法
多项式:xx⁸ + x x⁵ + x x⁴ + 1(反向表示:0x8C)
您也可以在 crccalc.com 上验证帧——选择 CRC-8/MAXIM。
控制模式:
在切换到位置环模式之前,电机转速必须低于10 RPM。
民意调查要求
该电机采用轮询协议。单次指令无法维持运动,主机必须以≥20ms的间隔(建议50Hz)反复发送驱动指令。发送0 RPM或刹车帧将使电机停止运行。
9. 已验证的命令参考
以下所有帧均已通过CRC-8/MAXIM验证。
模式切换:
切换至速度循环
发送3–5次,未收到反馈。
切换至当前回路
发送3–5次,未收到反馈。
切换至位置回路
速度必须先小于10转/分钟。
实用命令:
反馈查询
返回10字节的状态帧。
刹车(速度模式)
电制动。
ID查询(广播)
仅限巴士单电机。
将电机ID设置为0x01
发送5次,每辆巴士上一台电机。
转速循环(-3300 至 +33000 转/分钟)
当前环路(-327677 到 +32767)
位置循环(0–32767 = 0°–360°)
10. 反馈帧解码
电机通过一个10字节的帧对驱动指令和反馈查询作出响应。
协议1:驱动命令响应
协议2:反馈查询响应
错误代码位掩码
示例:0x22 = 0b00100010 → → 相位过流 + + 过流同时激活。
11. 保护规则
在保护事件发生时,电机停止响应驱动指令。反馈帧中的错误代码字节指示了当前激活的保护类型。
12. Python 代码示例
要求:在运行这些脚本之前,请先安装 pyserial。使用 pip pip 安装 pyserial
请在每个脚本的顶部修改 COM_PORT_PORT 变量,以匹配您的系统。
12.1 发动机扫描
该脚本执行两阶段扫描,以发现RS485总线上所有的M0601电机。
它是如何工作的:
第一阶段 — — 广播查询:发送特殊ID查询帧C8 64 00 ... DE,所有电机同时响应。如果仅连接一个电机,则可立即获得结果。
第二阶段 — — 全部扫描:遍历从 0x011 到 0xFE 的所有可能地址,向每个地址发送反馈查询并等待响应。此步骤可检测到之前被更改了默认ID的电机。
脚本在最后打印一份清晰的摘要,列出所有检测到的ID,并明确告知你在其他脚本中应将MOTOR_ID设置为哪个值。
12.2 电机运行
该脚本通过键盘交互演示了三种控制模式,是测试电机行为最完整的起点。
它是如何工作的:
启动时,它会打开串行端口并发送ID查询,以确认电机已上线。
默认情况下切换为速度循环模式(电机的出厂默认设置)。
轮询循环在后台以50Hz频率运行,持续发送当前的命令帧。这是必要的,因为M0601使用的是轮询协议——它无法通过单一命令维持运动。
键盘输入会改变当前的命令、模式,或停止电机运行。轮询循环会在下一次迭代中立即接收到新的命令,且不会中断。
12.3 电机ID更改
该脚本可安全地更改RS485总线上电机的ID地址。
它是如何工作的:
首先查询总线以确认是否存在恰好一个电机,并读取其当前ID。
然后它会连续发送5次ID设置帧(AA 55 53 [NEW_ID] 00 00 00 00 00 00)——电机需要连续5个相同的帧,才能将新的ID写入非易失性存储器。
设置完成后,会立即发送ID查询以验证新ID是否有效。
在此操作期间,必须只连接一个电机到总线。如果存在多个电机,则它们都会获得相同的新的ID,并在总线上发生冲突。
12.4 电机参数监控
该脚本持续轮询电机的反馈帧,并打印一个实时终端仪表盘,显示所有实时参数:速度、电流、位置、绕组温度和故障状态。
它是如何工作的:
以可配置的间隔(默认200ms)发送协议-2反馈查询帧(01 74 00 ... 04)。
解析每个10字节的响应,提取以下信息:模式、扭矩电流(INT16 → → 安培)、速度(INT16 → → → 转每分钟)、绕组温度(°C)、角度位置(U8 → → 度数)以及错误代码位掩码。
将错误位掩码解码为命名故障描述。
打印一个不断更新的单行仪表板,该仪表板会自动覆盖终端中的内容。
将所有读数记录到CSV文件中,以便后续分析。
示例终端输出:
示例 CSV 输出:
13. MotorLink — — — 网络控制应用
手动处理原始的RS485十六进制数据帧容易出错且效率低下。为了解决这一问题,MotorLink被开发成一款免费、基于浏览器的应用程序,可自动处理所有协议复杂性。
兼容电机
工作原理
MotorLinkLink 完全在浏览器中运行,使用 Web Serial API 实现——无需安装,无需后端,除了 USB-RS485 适配器驱动程序外,无需其他驱动。
本文编译自hackster.io





