hoverboard-firmware-hack-FOC 使用指南:让平衡车电机更安静、更快、更省电的 FOC 驱动
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
hoverboard-firmware-hack-FOC 是面向原装平衡车主板(STM32F103 系列)的开源固件,用场定向控制(FOC)替换原车的方波换向。它面向想把平衡车电机用到机器人、代步车或滑板车上的 DIY 用户:噪音更低、扭矩输出更平滑,并可用场削弱扩大最高转速。
问题与定位
如果你尝试过把平衡车电机拆出来装到小车平台上,多半会遇到这些现象:启动时电机发出嗡嗡的低频嗡鸣,油门加大时转速呈一段一段地爬升;载重后功耗比预期更高。根源在于原厂固件的六步方波换向——三相电流每 60° 切换一次,切换点之间扭矩明显跌落,纹波就表现为噪音和顿挫。
这个项目直接在主板上重写程序,用同一颗芯片跑通场定向驱动闭环(部分主板为 GD32F103,同样受支持),不外加驱动板,沿用原有的相电流采样与霍尔信号。
⚙️ 技术原理:用类比讲清楚
电机为 27 槽 30 极结构,转子上装三个霍尔传感器上报位置,A/B/C 三相绕组星形连接。固件要做的事,就是在每个瞬间算出"每一相该流多大的电流"。
它做了什么:把 60° 一跳换成沿磁场方向的连续推进
可以类比推秋千:换向像每隔一段时间猛推一把,推完人先惯性滑行、再被下一次推力打乱节奏,速度忽快忽慢、声响也糙。FOC 则像一直用手顺着人前进的方向持续推,力量连续、不做无用功。电气上对应的是把电流分解为产生转矩的分量和产生磁场的分量,转矩与给定值近似成正比。
它怎么做到:霍尔采样、定点运算与三种控制模式
控制器用霍尔读数估算转子角度,再结合电流反馈,在定时器中断里算出三相 PWM。为节省 CPU,参数全部以定点数存放,集中在 BLDC_controller_data.c 文件中。控制类型(换向 / 正弦 / FOC)与 FOC 下的电压(VLT_MODE)、速度(SPD_MODE)、扭矩(TRQ_MODE)三种模式,在 Inc/config.h 的CTRL_TYP_SEL与CTRL_MOD_REQ中选择;其中速度与扭矩模式仅在 FOC 下可用。
它带来什么变化:从嗡嗡声到平稳运转
相比换向控制,FOC 的效率与平顺性都更好,扭矩模式还具备自由滑行能力——输入目标为 0 时电机直接溜车,空载时更省电。默认限制为单电机 15 A、1000 rpm(I_MOT_MAX/N_MOT_MAX),另有最大转速与最大电流保护,这对需要安全基线的载物或载人场景很重要。
功能与场景
代步车:踏板控速
HOVERCAR 变体把两台电机接到刹车与油门踏板上,静止时双击刹车可切换倒车。电动椅、花园车这类低速载人平台刷完即可驾驶,踏板行程直接对应电机输出。
遥控平台:RC 信号驱动平衡车电机
PPM、PWM、iBUS 变体分别接入左或右侧边板线缆,遥控器即可接管转向与速度。社区常见组合是滑板车底盘加遥控器、选扭矩模式,摇杆输入直接映射为电机扭矩需求,跟手且响应快。
高转速需求:场削弱扩转速上限
电机原厂转速上限受反电动势约束。启用场削弱(FIELD_WEAK_ENA置 1)后,D 轴电流抵消部分磁场,使转速突破原上限:从FIELD_WEAK_LO(默认 750)开始线性增大,到FIELD_WEAK_HI(默认 1000)达到你设定的FIELD_WEAK_MAX(默认 5 A)。
机器人:串口指令驱动双轮
USART 变体通过串口协议控制双轮,仓库根目录 Arduino/hoverserial 下附了配套 Arduino 示例程序,方便先做差速运动测试再接入上位机。
🛠️ 上手路径
- 备齐硬件:ST-Link 调试器、平衡车主板,确认 MCU 为 STM32F103RCT6 或 GD32F103RCT6。
- 克隆代码:
git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC - 在仓库根目录 platformio.ini 中解开所需 env 的注释(如
default_envs = VARIANT_HOVERCAR),并把monitor_port改成本机串口。 - 编译烧录:
pio run -e VARIANT_HOVERCAR,env 已配置 stlink 上传协议。 - 刷写后先以默认参数试车,再按电机规格调整
N_MOT_MAX、I_MOT_MAX等限值。
常见坑与排查
- 首次用 ST-Link 连接时若弹出 "Can not read memory",说明芯片开了读保护,需先按仓库 wiki 的 unlock 流程解锁再烧录:
- 左侧传感器线缆(USART2)不耐受 5 V,勿直接接 5 V 电平设备。
- 两侧边板需另行刷写对应 hacked 版本;split board 类型主板不在本仓库支持范围。
- 启用场削弱后功耗上升明显,可能触发 BMS 过压保护,先在低输入档试车再逐步调高阈值。
边界与注意
HOVERBOARD 双轮变体的平衡控制尚未实现,该固件不能直接用于骑行;AT32 主板对应另一个 fork,本仓库只覆盖 STM32F103 与 GD32F103。电机参数为定点数,初学者不建议改动 BLDC_controller_data.c,直接使用作者已标定好的版本即可。启用场削弱时要留意转速上限(10 英寸轮上测试过 10 A)与电池保护阈值,测试时让车轮离地。
结尾
这套固件让拆机平衡车电机成为安静、平稳且可标定上限的驱动单元。仓库地址(仅用于 clone):https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC。延伸阅读可先看 docs/literature/ 目录下的 STM32F103、GD32F103 数据手册与主板原理图,算法设计细节可在 README 指向的 FOC 控制器项目中查阅。
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考