给平衡车换上 FOC 大脑:从原理到刷机的完整指南
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
骑平衡车时,电机那阵"嗞嗞"的噪音、低速时的顿挫和起步迟滞,多半来自原厂固件的六步换相控制。开源项目 hoverboard-firmware-hack-FOC 直接把这套逻辑换成 FOC(Field Oriented Control,场定向控制)固件,刷进平衡车主板后,噪音、线性度和续航都能得到改善。
📦 项目速览
hoverboard-firmware-hack-FOC 是平衡车主板(STM32F103/GD32F103 级别)上的开源 FOC 固件:它替换原厂换相逻辑,降低噪音与振动、让扭矩输出更平滑、电机效率更高从而降低能耗,还能通过场削弱拉高极速上限。下方是作者用两块平衡车主板搭的自平衡 hovercar,展示了刷写后的典型用法:
⚙️ FOC 换相,差在哪
原厂控制可以类比成"看灯换挡":三个霍尔传感器每转 60° 翻一次状态,MCU 就把电流切到下一组绕组。六步一拍,电流方向是方波,每次切换都带着"咯噔"一下的冲击,噪音和抖动的根源就在这里。
FOC 的思路是"方向盘":霍尔信号加上三相电流采样,让控制器算出转子的实时角度,每一拍都让定子电流矢量顺着转子方向平滑转动,输出接近正弦波。可感知的变化是:噪音明显变小、震动变柔,低速起步不再一顿一顿,同样的电量跑得更远。
图中参数直接来自仓库文档:平衡车电机是 27 槽、30 极(27N30P),KV 值 15.98 rpm/V,三个 Hall 传感器(Hall A/B/C)负责角度反馈,三相绕组(Phase A/B/C)共用一个接地点,也就是星形(Y)连接。FOC 控制器就是围绕这组硬件参数调出来的,这也是刷写前要先核对电机规格的原因。
🎛️ 功能矩阵:三种控制模式怎么选
| 功能 | 说明 | 适合谁 / 解决什么 |
|---|---|---|
| 电压模式 VLT_MODE | 控制器直接输出恒定电压 | 需要最快响应速度的机器人或实验类车体 |
| 速度模式 SPD_MODE | 闭环追踪 RPM 目标,自动抵抗阻力等扰动 | 需要恒定转速巡航的代步场景 |
| 扭矩模式 TRQ_MODE | 直接追踪扭矩目标,目标为 0 时电机自由滑行 | 作者推荐多数载人平衡车应用使用 |
| 参数自定义 | CTRL_TYP_SEL选控制类型,CTRL_MOD_REQ选 FOC 模式;电机参数集中在BLDC_controller_data.c(定点数表示) | 按自己电机规格细调,做出个性化手感 |
| 保护机制 | FOC 三种模式都内置最大转速与最大电流限制;板载温度警告/断电需先校准后再开启 | 过流、超速和过热场景下的安全兜底 |
🔌 主板硬件与刷机条件
- 主板主控通常是 STM32F103RCT6,部分主板用 GD32F103RCT6,两者固件都支持——先确认自己的型号。
- 主板原本接两条 4 针排线到左右边板,分别引出 GND、12/15V 和 USART2/USART3。两个串口都支持 UART、PWM、PPM、iBUS 输入;USART2 还能当 12bit ADC 用,USART3 可切 I2C。注意:右侧排线的 USART3 耐 5V,左侧排线的 USART2不耐 5V,接外部设备别接反。
- 刷写走 STM32 标准烧录器接口,按 wiki 的解锁与刷写流程操作即可。
🚀 场削弱如何拉高极速
普通 FOC 有个上限:转速升到反电动势接近电池电压时,电机就"跑不动了"。场削弱(field weakening)会在高速区注入反向的 d 轴电流,抵消转子的一部分磁场,让电机突破这个电压极限继续升转速——平衡车能明显跑出比原厂更高的极速。
它默认是关闭的,适合追求极速的玩家。开启需要在config.h里设FIELD_WEAK_ENA = 1,再用FIELD_WEAK_LO、FIELD_WEAK_HI、FIELD_WEAK_MAX标定介入区间(图中画了几种不同的标定曲线)。仓库原文特别提醒:重标定场削弱务必做好安全措施,电机转速会非常惊人,功耗骤增,可能触发 BMS 过压保护。
🛠️ 平衡车 FOC 固件上手四步
- 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC - 确认主板可刷写:STM32F103RCT6 或 GD32F103RCT6 均支持;刷前按 wiki 流程解锁并备份原固件。
- 按电机规格调参:
config.h里选CTRL_TYP_SEL与CTRL_MOD_REQ,BLDC_controller_data.c里按自己电机核对参数(定点数格式,可用仓库提到的 Fixed-Point Viewer 换算)。 - 编译刷写:仓库提供 Makefile 与 platformio.ini,编译后经烧录器写入;刷完用串口调试查看电池电压、板温等状态量。
docs/ 目录存放反向工程的主板原理图、STM32/GD32 数据手册与参考手册,以及一张用 VESC 工具测得的电机参数截图,可作为核对电机规格的参考:
适合想给平衡车主板刷 FOC 固件、追求低噪平稳输出、更长续航或更高极速,并能动手接烧录器的人。刷机步骤、故障排除和边板兼容性都在仓库 wiki 与 docs/ 里。
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考