1. 开源电机控制器是什么:伺服驱动开源到电路板级
工业伺服驱动器一套几千到几万,内部是"电流环 + 速度环 + 位置环"三闭环,控制内核就是本站反复讲的 FOC(磁场定向控制)。开源电机控制器把这三层全部摊开:硬件(PCB 设计、功率级器件选型)、固件(FOC 算法、控制环、通信协议)、工具链(配置 GUI、命令行、Python 库)至少有一层开源,任你读源码、改参数、甚至改板子。
| 层次 | 开源控制器里有什么 | 对应本站内容 |
|---|---|---|
| 硬件 | 功率板原理图/PCB:三相桥、栅极驱动、电流采样、电源管理、编码器接口 | SVPWM 篇、Clarke/Park 篇 |
| 固件 | FOC 电流环、速度环、位置环、轨迹规划、自整定、通信协议栈 | 三闭环整定篇、扰动观测篇 |
| 工具链 | 配置 GUI / Web 界面 / Python 与 ROS 库 / 调试命令行 | 本站交互工具的工程化版本 |
它和 OpenArm 篇的达妙电机模组是两种路线:达妙把"驱动器 + 电机 + 编码器"焊成一个关节单元,省心但不可拆解;开源控制器让你自选电机(普通 BLDC / PMSM / 无人机电机),自己焊功率级、自己刷固件——适合做研究、定制关节和吃透 FOC 工程实现。
2. 四大主流项目:一张表先看全
| 项目 | 背景 | 定位 | 开源程度 | 典型价格 |
|---|---|---|---|---|
| ODrive | Oskar Weigl 发起(GitHub: madcowswe),2016 年起源于个人项目 | 高性能伺服:扭矩/速度/位置/轨迹四模式 | 早期 v3.x 硬件+固件全开源;新一代(Pro/S1/Micro)固件闭源(NDA) | Micro 约 $30 起;S1 约 $100;Pro 约 $200+ |
| VESC | Benjamin Vedder,2011 年起源于电动滑板 ESC | 大功率电动交通 + 通用 FOC 驱动 | 固件开源(VESC Tool 生态);经典硬件开源,商用产品线部分闭源 | 约 $100–500 |
| SimpleFOC | 社区驱动,Arduino 生态发源 | 极简 FOC 库:学习、快速原型、教学 | 库与示例全开源;配套小板开源 | 库免费;板约 $10–30 |
| Moteus | mjbots(Josh Pieper),MIT Mini Cheetah 控制器同功能等级 | 模块化伺服关节:集成磁编码器 + CAN-FD | 固件 + PCB 全部 Apache 2.0 开源 | c1 约 $69;r4 约 $94;n1 开发者套件 |
ODrive 官网曾写"硬件软件全部开源,欢迎任何人加入"。但 2022 年后,Pro/S1/Micro 的固件源码不再公开,只有旧款 v3.x(已 NRND 停产)固件保持开源。选型前务必核实目标型号当前的开源状态——"开源项目"不等于"永远开源"。
3. 硬件架构:一块开源控制器里有什么
不管哪家,开源控制器的硬件骨架几乎相同,和站内 SVPWM/Clarke-Park 理论一一对应:
| 模块 | 典型器件 | 职责 |
|---|---|---|
| 主控 MCU | STM32G4 / STM32F4 / ESP32 | 跑 FOC 算法与通信协议;G4 系带硬件浮点与高分辨率定时器 |
| 栅极驱动 | DRV8301/8302、TMC 系列、自举半桥 | 把 MCU 的 PWM 逻辑信号放大成功率管栅极驱动 |
| 三相全桥 | MOSFET(如 IRFS7530)/ 智能功率模块 | 把母线直流斩成三相正弦(SVPWM),直接决定电流能力 |
| 电流采样 | 低侧采样电阻 / 相位采样 + 运放 | 把相电流送进 ADC,构成 FOC 电流环反馈(本站 Clarke/Park 的输入) |
| 编码器接口 | SPI 磁编码器 / 增量 ABZ / 霍尔 / 无感反电动势 | 转子位置与速度反馈,决定 FOC 能否闭环 |
| 通信 | USB / UART / CAN / CAN-FD / RS485 | 与上位机交换指令与状态(对齐站内 CANopen/EtherCAT 专题) |
| 电源管理 | DC-DC 降压(3.3V/5V/12V 逻辑轨)、制动电阻 | 宽压输入(如 12–58V),再生制动泄放 |
读一块开源控制器的原理图,等于把本站 FOC 理论课从公式落到实物:Clarke/Park 变换要电流采样和编码器角度,SVPWM 要三相桥和栅极驱动,三闭环要电流环带宽设计——开源硬件是最好的"拆解标本"。
4. 规格对比:选型先看这四张表
| 型号 | 电压范围 | 连续电流 | 峰值电流 | 通信 | 亮点 |
|---|---|---|---|---|---|
| ODrive Micro | ≤ 28V | 3.5A | 7A | USB / UART | 入门最便宜,单轴 |
| ODrive S1 | 12–48V(50.5V 最大) | 40A(加散热片) | 80A | USB / UART / STEP-DIR / 模拟 / PWM / CAN | 隔离 IO,位置/速度/扭矩/轨迹全模式 |
| ODrive Pro | 15–58V | 70A | 120A | CAN-FD(隔离)/ USB / UART | 3000W 连续 / 5kW 峰值,板载绝对磁编码器,再生制动 |
| VESC Classic+ 100V | 12–100V(22S) | 300A | 400A | USB-C / CAN / UART | 相位侧电流采样,30–50kHz PWM |
| VESC Maxim 150V | 最高 150V | 250A | 400A | USB-C / CAN / Wi-Fi/BT(ESP32) | 30kW,板载 IMU 与 1GB 存储,灌封防水 |
| Moteus c1 | 10–51V | 5A / 14A | — | CAN-FD / UART / I2C | $69,集成绝对磁编码器,STM32G4 170MHz |
| Moteus r4 / n1 | 8–44V / 最高 44V | 12A(约 38V 400W) | 1000W(n1) | CAN-FD / UART | 模块化伺服,15–30kHz 控制环 |
SimpleFOC 不是一块板,而是一个库 + 硬件生态:官方推荐搭配 Arduino/STM32/ESP32 任意主控 + 任意开源驱动板(SimpleFOC Mini、MicroDriver 等),代码层控制闭环,功率层自由组合——学习性价比最高(驱动板约 $10–50)。
5. 固件与控制环:开源固件里的 FOC 工程
四个项目的固件代表了 FOC 工程实现的四种风格:
| 项目 | 控制环结构 | 特色 | 固件状态 |
|---|---|---|---|
| ODrive | 电流环 + 速度环 + 位置环 + 轨迹规划 | 模型前馈(model-based feedforward)、自动整定、自整定堵转/开环标定 | v3.x 固件 0.5.x 开源(不再维护);Pro/S1/Micro 闭源 |
| VESC | FOC 电流环 + 速度/位置环 | 无感 FOC(反电动势观测)、参数整定向导、遥测与日志 | 固件开源,VESC Tool 生态活跃 |
| SimpleFOC | 电流环 + 速度环 + 位置环(库级 API) | 三行初始化出闭环,跨 BLDC/步进、多编码器/驱动组合 | 库与示例全开源,中文资料完善 |
| Moteus | 15–30kHz 电流环 + 位置/速度/扭矩 + 限速限加速轨迹 | CAN-FD 5Mbps 协议,集成磁编码器即插即用 | 固件 + PCB 全部 Apache 2.0 |
想学 FOC 工程实现:先读 SimpleFOC(代码最短、分层清晰:Motor / Inverter / Encoder / Sensor);想要高性能参考:读 ODrive v3.x 固件 0.5.x(经典三闭环 + 前馈,社区资料最多)或 Moteus(STM32G4 + CAN-FD,现代架构)。VESC 固件适合研究无感 FOC 与工程化鲁棒性。
6. 交互演示:开源控制器选型助手
按你的场景、电压、电流与开源要求,快速得到推荐(规则基于上文规格表,示意性质):
7. 可编译最小闭环代码(SimpleFOC)
下面是 SimpleFOC 的最小 FOC 闭环:Arduino/STM32/ESP32 皆可,配套任意开源 BLDC 驱动板 + 磁编码器(如 AS5600)。装好 SimpleFOC 库(Arduino 库管理器搜索 "SimpleFOC")即可直接编译——这是站内 FOC 理论从公式到 30 行代码的最短路径:
配套的配置侧示例(ODrive 命令行风格,用 odrivetool 或 Python 库同样可完成):
8. 怎么选:决策流程与避坑
- 先定功率,再定项目:相电流 × 电压 = 功率需求。学习/小关节(<40A、<58V)在 ODrive、Moteus、SimpleFOC 里选;电动载具与高功率(100A+ 或 100V+)基本只剩 VESC 系。
- 再定开源底线:要改固件/复现研究 → Moteus(全开源)或 SimpleFOC + 自组硬件;只要功能 → ODrive Pro(性能强但固件闭源)。
- 编码器优先考虑集成方案:机器人关节强烈建议 Moteus / ODrive Pro 这类集成绝对磁编码器的控制器——上电即知绝对位置,省掉装编码器与找零位的麻烦(对齐站内磁编码器校准篇)。
- 留足散热余量:所有标称连续电流都依赖散热条件(如 ODrive S1 的 40A 需加散热片),实际降额 30–50% 设计。
1. 相电流 ≠ 母线电流:VESC 表里的"300A 连续"是相位电流,母线电流由调制深度决定(低转速高扭矩时母线电流可小于相电流)。选电源按母线电流算,别按相电流。
2. 大功率配小电感电机 → 电流纹波爆炸:母线电压越高,对电机相电感下限要求越高,否则电流环震荡甚至炸管。高电压平台优先选大电感电机或加外部电感。
3. 别拿实验室电源直接跑再生制动:再生电流会灌回电源(如 ODrive 会再生制动),普通开关电源扛不住,需接电池或制动电阻,否则"一刹车电源和驱动一起上天"。
9. 参考资源与站内衔接
- ODrive 官网与 ODrive 文档:Pro/S1/Micro 规格与 Web GUI。
- VESC Project与 VESC Labs:固件、VESC Tool 与全系控制器对比。
- SimpleFOC 官方文档:库、驱动板清单与中文资料(社区维护)。
- mjbots与 moteus 文档:固件与 PCB 全部 Apache 2.0 开源(GitHub: mjbots/moteus)。
- 站内衔接:Clarke/Park 变换篇、SVPWM 篇、三闭环整定篇(这些开源控制器的内核)、磁编码器校准篇、CANopen 专题、EtherCAT 专题(总线通信层)、OpenArm 篇(达妙 QDD 集成模组对照)。