移动机器人多类型电机混合控制系统架构深度解析
摘要:在机器人、AGV、智能小车项目中,经常同时用到直流减速电机、PWM 舵机、串口总线舵机、步进电机四类执行器件。本文基于一张完整系统框图,逐层拆解主控 CPU、电机控制 MCU、驱动层、电机本体、机械负载的完整链路,理清信号流向、闭环反馈、接口差异,剖析工程上的痛点与选型取舍。
整体架构总览
整套系统采用两级异构控制架构:
- 上层主控 CPU:业务决策、运动规划、算法处理。对外提供 USB / 串口、TTL 串口、CAN 总线、以太网接口;下发运动指令,不直接操作底层 PWM、IO。
- 下层电机控制 MCU(亚博扩展卡这类 STM32 子板):作为运动从机,接收上层指令,完成底层外设驱动、PID 闭环、编码器计数、定时器 PWM 生成。
- 功率驱动层:AM2857 直流驱动、DRV8825 步进驱动、舵机内置驱动,完成弱电信号到功率电流转换。
- 执行机构层:带编码器 GB37‑520 直流减速电机、普通 PWM 舵机、串口总线舵机、带编码器步进电机。
- 机械负载层:齿轮减速机构、轮子、机械臂关节等。
plaintext
主控CPU(规划) → 通信接口 → 电机控制MCU(底层实时控制) → 功率驱动芯片 → 电机本体 → 减速机构 → 机械负载 ↖──────编码器/电位器反馈───────┘核心设计思想:软硬分离。上层专注业务逻辑,底层 MCU 接管高实时性硬件,避免主控 CPU 被 PWM、编码器中断、PID 占用大量算力;同时统一对外通信接口,上层不用关心不同电机硬件差异。
分模块链路详解
1. 直流减速电机链路(JGB37‑520 + AM2857)
这是麦克纳姆轮 / 差分底盘的动力来源
- 指令下发:主控 CPU 通过 USB / 串口下发目标速度;
- 电机控制 MCU 侧
- PWM 定时器:输出两路 PWM(MxA、MxB)给到 AM2857,PWM 占空比控制输出平均电压,从而控制电机转速;两路 PWM 电平组合控制电机正反转。
- 硬件定时器编码器接口(计数器模块):接收电机编码器 A/B 相脉冲
HxA HxB,硬件自动计数,获得电机实际转速、转动方向。
- 驱动芯片 AM2857:H 桥功率芯片,把 3.3V 逻辑 PWM 信号转换成 12V 电机功率输出 Mx+、Mx‑。
- 电机本体:GB37‑520 直流减速电机,自带霍尔编码器;编码器将电机转速反馈回 MCU 计数器。
- 机械:齿轮减速箱输出动力,驱动车轮。
✅闭环逻辑: MCU 读取编码器得到真实转速,和目标转速做 PID 运算,修改 PWM 占空比,实现电机速度闭环。
关键点:编码器采集的是电机高速转子转速,不是轮子输出轴转速,程序需要乘以减速比换算底盘实际运动速度。
工程坑:AM2857 没有硬件电流采样;无法硬件限制输出电流,过流保护需要软件手段。
2. 传统 PWM 舵机链路(SG90/YB‑SG90)
普通模拟 PWM 舵机,常用于机械臂关节、云台。
- 指令下发:主控通过 TTL 串口下发目标角度。
- 电机控制 MCU:PWM 定时器输出 50Hz PWM 信号,占空比对应舵机目标角度。
标准 SG90:0.5ms‑2.5ms 高电平对应 0‑180°。
- 舵机内部集成完整子系统
- 板载 MCU 控制器、功率驱动器;
- 直流电机 + 减速齿轮;
- 电位器做位置反馈。
- 闭环完全在舵机板内完成:电位器实时采集输出轴角度,板载 MCU 调节电机,到达目标角度就停机。
⚠️重要特点:
- 对外只有PWM 输入控制线,没有向外反馈引脚。
- MCU 只能下发目标角度,无法直接读取舵机当前真实角度;外部拿不到电位器信号。
- 堵转、温度、实际位置,外部系统无从感知。
3. 串口总线舵机链路
相比 PWM 舵机最大升级:双向通信。
- 指令下发:主控 TTL 串口 → MCU;MCU 通过半双工 UART 总线和舵机通信。
半双工 UART:同一根总线,既发命令给舵机,又接收舵机回传数据,TX/RX 经过收发使能 EN 控制总线方向。
- 舵机内部:内置 MCU、驱动电机、反馈元件(电位器 / 编码器)。
- 双向反馈:
- MCU 发送数据包设置目标角度;
- 舵机回传:当前角度、温度、电压、堵转状态。
✅优势:
- 一条总线挂载多个舵机,节省 IO;
- 可以读取真实关节状态,实现上层闭环; ❌劣势:半双工总线需要处理收发切换,通信存在延时。
对比 PWM 舵机:PWM 舵机只有单向控制;串口舵机实现控制 + 状态回传。
4. 两相四线步进电机链路 DRV8825 驱动
适合需要精准定位,不需要高速闭环的场景。
- 指令下发:上层下发目标步数。
- 电机 MCU
- DIR 引脚:方向信号;
- 细分引脚:设置驱动芯片细分(1/8、1/16 细分);
- PWM 定时器输出 STEP 脉冲,每一个脉冲电机转动一步。
- 计数器:读取步进电机外置编码器 A/B 相。
注意:绝大多数步进电机是开环工作;本框图方案增加外置编码器,做成闭环步进,用来检测丢步。
- DRV8825 功率驱动,12V 功率输出 A+ A‑ B+ B‑驱动两相四线步进电机。
- 电机输出经过齿轮减速,带动机械负载;编码器反馈回 MCU 检测是否发生丢步。
开环步进:
只发脉冲,不知道电机有没有转;
闭环步进:增加编码器,如果脉冲输出很多,编码器计数没跟上,判定丢步,可以做补偿。
通信接口对比(主控 CPU ↔ 电机 MCU)
表格
| 接口 | 用途 | 特点 |
|---|---|---|
| USB / 串口 | 调试、普通机器人小车 | 简单,速率中等,适合小车运动指令 |
| TTL 串口 | 舵机指令、简单控制 | 接线少,半双工容易冲突 |
| CAN 总线 | 工业 AGV、多节点底盘 | 抗干扰强,多设备,高实时 |
| 以太网 | 大型机器人,ROS 平台 | 大数据量,高带宽 |
ROS2 机器人常见方案:RDK X5 作为主控 CPU,通过 USB 连接 STM32 电机 MCU,下发Vx Vy ω运动指令;STM32 完成全部电机底层闭环。
四类电机关键特性对比
表格
| 电机类型 | 控制信号 | 反馈来源 | 闭环位置在哪里 | 典型用途 |
|---|---|---|---|---|
| 直流减速电机 (AM2857) | PWM 占空比 + 方向 | 霍尔编码器 | 下层 MCU 软件 PID | 麦克纳姆轮底盘动力 |
| PWM 模拟舵机 | 50Hz PWM 占空比 | 板载电位器 | 舵机板内闭环,外部无反馈 | 简单云台、简易机械臂 |
| 串口总线舵机 | 半双工 UART 数据包 | 电位器 / 板载编码器 | 舵机本地闭环,可回传状态 | 多自由度机械臂 |
| 闭环步进电机 | STEP+DIR + 细分 | 外置编码器 | MCU 检测丢步补偿 | 精准定位机构 |
工程实践中的痛点总结
PWM 舵机无外部反馈风险你下发 90° 目标,舵机可能被外力卡住不动,上位机完全不知道,机械臂会发生碰撞。高精度项目优先选串口舵机。
直流电机编码器的换算编码器采集电机高速轴脉冲,必须除以减速比,才能得到输出轮子真实位置;很多新手直接用原始 CNT 计数,速度位置全部算错。
半双工串口舵机总线坑点EN 收发使能时序处理不好,会丢包、乱码;发送完指令需要切换接收模式读取舵机返回数据。
步进电机开环丢步普通步进没有编码器,过载直接丢步,位置错乱;对位置可靠性有要求,增加外置编码器做闭环步进。
两级架构的实时性边界主控 CPU(比如 RDK X5)运行 ROS,是非实时系统;运动控制全部下沉到 STM32 电机 MCU。不要在主控做电机 PID,主控只下发目标速度 / 角度。
功率与信号地共地编码器、舵机信号地必须和功率驱动共地,否则会出现编码器乱跳,舵机抖动。
架构选型思考:什么时候用这套两级架构?
✅适合:
- ROS 机器人,AI 主控 + 运动子板;
- 一套系统同时混合直流电机、舵机、步进电机;
- 上层算法复杂,不想被底层电机中断抢占资源。
❌不适合:简单单电机项目,直接单 MCU 即可,两级架构增加硬件复杂度。
总结
这张框图完整展示了机器人里多电机混合控制系统的标准工程实现范式:
上层做决策规划,下层 MCU 做实时硬件驱动与闭环;不同电机拥有完全不同的反馈模型:有的反馈信号回到 MCU,有的闭环完全在器件内部;有的只能单向控制,有的支持双向状态回读。
做机器人开发,不能只看“怎么发指令让电机动起来”,更要理清:反馈信号走到哪里,闭环在哪里执行,故障状态能不能被上层感知。这是区分玩具级项目和工程级机器人的关键点