ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从解锁到 FOC 参数初调:hoverboard-firmware-hack-FOC 平衡车固件刷写完整新手指南

从解锁到 FOC 参数初调:hoverboard-firmware-hack-FOC 平衡车固件刷写完整新手指南

从解锁到 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 UtilityST 官方刷写工具
软件串口助手任意终端,用于上电验证
文件固件 .bin / .hex项目构建产物获取,或自行编译

想自己编译就 clone 一次仓库:

git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC

在 platformio.ini 里选中与你的板子对应的 variant,构建出 .bin 即可;不想编译就直接用构建产物里的固件。

平衡车 STM32 读保护怎么解除:原厂为什么锁住它

原车主板出厂就开着 MCU 的 Read Out Protection,目的是防止固件被反编译。对刷写软件来说,锁住的症状是:目标能连上,但内存读不出来。

解除动作是一次性的"改选项字节 + 整片擦除":

  1. ST-Link 接好,打开STM32 ST-Link Utility,点Connect按钮;
  2. 弹出 "Can not read memory! Disable Read Out Protection and retry." 警告时,这就是锁的信号,点OK;

  1. 菜单Target→Option Bytes...,把Read Out Protection改成Level 0,点Apply;
  2. 菜单Target→Erase Chip,等 "Memory erased" 提示;
  3. 再点一次Connect,底部日志出现 Connected to target、内存区全为 0xFF,即解除成功。

擦除就是全片清空,连接稳定了再做;解锁完尽快刷固件,别长期裸奔。

ST-Link 怎么接线并用 SWD 刷写平衡车主板:四根线别接反

主板上有 4 针 SWD 口,引脚对应关系参考主板引脚标注图:

ST-Link 侧主板侧接错的后果
SWCLK(PA13)SWCLK报找不到目标,无损伤
SWDIO(PA14)SWDIO同上,重插即可
GNDGND不接则读取电平不稳
3.3V3.3V(可选)别错接 5V!会烧 SWD 脚

⚠️ 最容易翻车的就是把 5V 灌进 3.3V 线。拿不准就干脆不接电源——主板自己有电池供电,ST-Link 只需提供信号。

接好线后按"擦除 → 烧写 → 校验"闭环走:

  1. Target→Erase Chip,清空原厂固件;
  2. 点Program & Verify:选中 .bin 文件,地址保持0x08000000,点Start;
  3. 出现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),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进