从解锁到 FOC 参数初调:hoverboard-firmware-hack-FOC 平衡车固件刷写完整新手指南
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
原厂平衡车固件用的是换相控制,用一段时间后你会发现:轮子停着会自己漂移、踏板响应慢半拍、声音糙,而控制参数全部封在厂商二进制里,碰都碰不到。hoverboard-firmware-hack-FOC 就是为平衡车主板实现的 FOC 磁场定向控制开源固件,电机换成正弦波换相,刷完以后关键参数全部以明文写在 Inc/config.h 里。这篇文章带你把固件刷进主板,并做完第一轮参数配置。
为什么选 FOC:原厂平衡车固件的三个硬伤
- 换相控制相当于按"每转 6 步"切换三相电,扭矩是脉动的,震动和噪音基本逃不掉;
- 骑一段时间轮位漂了,踏板发闷,没有参数可调;
- 电流、转速等没有独立的保护层级。
FOC 把这三条全解决:靠霍尔加电流反馈估算转子位置,按正弦波换相,并提供VOLTAGE MODE、SPEED MODE、TORQUE MODE三种模式,都在 Inc/config.h 里选。
平衡车固件刷写前要备齐哪些物料
| 类别 | 项目 | 说明 |
|---|---|---|
| 硬件 | STM32F103 主板 | 原厂板多为 STM32F103RCT6,部分 GD32F103,都支持 |
| 硬件 | ST-Link V2 编程器 | V3 也行,装好 USB 驱动 |
| 硬件 | 4 根杜邦线 | 接 SWD 口,接线表在后面 |
| 软件 | STM32 ST-Link Utility | ST 官方刷写工具 |
| 软件 | 串口助手 | 任意终端,用于上电验证 |
| 文件 | 固件 .bin / .hex | 项目构建产物获取,或自行编译 |
想自己编译就 clone 一次仓库:
git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC在 platformio.ini 里选中与你的板子对应的 variant,构建出 .bin 即可;不想编译就直接用构建产物里的固件。
平衡车 STM32 读保护怎么解除:原厂为什么锁住它
原车主板出厂就开着 MCU 的 Read Out Protection,目的是防止固件被反编译。对刷写软件来说,锁住的症状是:目标能连上,但内存读不出来。
解除动作是一次性的"改选项字节 + 整片擦除":
- ST-Link 接好,打开STM32 ST-Link Utility,点Connect按钮;
- 弹出 "Can not read memory! Disable Read Out Protection and retry." 警告时,这就是锁的信号,点OK;
- 菜单Target→Option Bytes...,把Read Out Protection改成Level 0,点Apply;
- 菜单Target→Erase Chip,等 "Memory erased" 提示;
- 再点一次Connect,底部日志出现 Connected to target、内存区全为 0xFF,即解除成功。
擦除就是全片清空,连接稳定了再做;解锁完尽快刷固件,别长期裸奔。
ST-Link 怎么接线并用 SWD 刷写平衡车主板:四根线别接反
主板上有 4 针 SWD 口,引脚对应关系参考主板引脚标注图:
| ST-Link 侧 | 主板侧 | 接错的后果 |
|---|---|---|
| SWCLK(PA13) | SWCLK | 报找不到目标,无损伤 |
| SWDIO(PA14) | SWDIO | 同上,重插即可 |
| GND | GND | 不接则读取电平不稳 |
| 3.3V | 3.3V(可选) | 别错接 5V!会烧 SWD 脚 |
⚠️ 最容易翻车的就是把 5V 灌进 3.3V 线。拿不准就干脆不接电源——主板自己有电池供电,ST-Link 只需提供信号。
接好线后按"擦除 → 烧写 → 校验"闭环走:
- Target→Erase Chip,清空原厂固件;
- 点Program & Verify:选中 .bin 文件,地址保持0x08000000,点Start;
- 出现Verification OK后关电、拔 ST-Link,进入上电验证。
平衡车 FOC 参数如何初调:上电后按现象闭环调
初调就是"看现象 → 改一个参数 → 再看现象"的循环,不是一次性批量改。
第 1 步 上电观察:短按电源键开机,听启动声音。正常是柔和的低鸣、指示灯状态稳定;发出"咔"的异响立即断电。
第 2 步 确认控制模式:Inc/config.h 里CTRL_TYP_SEL默认FOC_CTRL,CTRL_MOD_REQ默认VLT_MODE。载人场景推荐TRQ_MODE(力矩模式)——输入为 0 时电机自由滑行,收油手感最自然。
第 3 步 改一个参数,验一个现象:
- 起步太冲 → 调低I_MOT_MAX(单电机电流上限,默认 15 A),重刷感受踏板响应;
- 极速不够 → 调低N_MOT_MAX(转速上限,默认 1000 rpm),验证限速是否生效;
- 电机极对数拿不准 → 电机本体参数以定点数存放在 Src/BLDC_controller_data.c,对照绕组图自己数极数核对:
第 4 步 串口观察:USB-TTL 接主板调试串口,115200 波特率、8N1。调试输出里有 ADC 值、电池电压等,与万用表对一眼,就知道电压读数准不准。
每轮只改一个参数,改完就重刷验证。这样组合出了问题,能立刻定位到你刚动的那一项。
平衡车固件刷写常见问题 FAQ
- "Can not read memory" 或连不上:先查 GND 是否接好、ST-Link 供电是否正常,换个 USB 口;仍读不到就回解锁流程重做一遍选项字节。
- Program & Verify 报地址不符:地址改0x08000000;再确认选中的文件确实是 .bin/.hex。
- 刷完电机锁死不转或狂转:先断电拔电池。大概率是极对数或相序配置有误,另外检查 variant 选择——VARIANT_HOVERBOARD 等变体的输入定义不同,选错就容易出这个问题。
- 指示灯闪红灯马上关机:多为输入保护触发——开机时没有有效信号,或电池节数BAT_CELLS配错(常见板子是 10S),优先查这两处。
- GD32F103 版主板能刷吗:固件对 STM32F103 与 GD32F103 都做了兼容,解锁和刷写流程一致。
进阶改参数去哪里:config.h 与电机数据文件
初调通过之后,深入调参就集中在两个文件:
- Inc/config.h:variant 选择(
VARIANT_前缀宏)、CTRL_TYP_SEL、CTRL_MOD_REQ、输入标定、弱磁FIELD_WEAK_ENA等; - Src/BLDC_controller_data.c:电机本体的定点参数(极对数、反电动势等),README 里有对应标定工具的说明。
原厂主板原理图放在 docs/20150722_hoverboard_sch.pdf,后面想加踏板或遥控输入时查引脚用得上。参数修改请保持"改一个、刷一次、验一次"的节奏,别一把梭。
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考