平衡车主板改造全攻略:hoverboard-firmware-hack-FOC固件上手指南
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
你的平衡车是不是总有这些毛病:起步一冲一冲、电机嗡嗡作响、爬坡明显没劲、松油门还会滑行很久?这不是车坏了,而是原厂固件只用了最基础的换相控制(Commutation)来驱动电机,电流"粗糙"、噪声和发热自然就高。本项目提供的hoverboard-firmware-hack-FOC固件,把磁场定向控制(FOC)算法塞进普通平衡车主板,让电机运行更安静、扭矩更平滑、能耗更低,还能解锁弱磁提速。
本文用"任务清单"的方式带你走完全流程:先看懂全局路线,再依次完成 4 个实操任务,最后附上排错锦囊与进阶玩法,新手也能照着做。
一、先建立全局认知:这套固件到底改了什么?
原厂固件的"换相控制"只是按固定顺序给三相线圈通电,简单但粗暴;而 FOC 把电机电流拆成"产生磁力"和"产生扭矩"两个分量分别闭环控制,相当于给电机装上了"精确的油门"。你可以这样对比三种控制方式:
| 控制方式 | 平顺度 | 效率 | 高速表现 | 适用场景 |
|---|---|---|---|---|
| 换相(Commutation) | 一般 | 一般 | 一般 | 原厂默认 |
| 正弦波(Sinusoidal) | 较好 | 较好 | 较好 | 初步升级 |
| FOC | 优秀 | 优秀 | 优秀(支持弱磁) | 追求体验 |
固件在Inc/config.h中通过CTRL_TYP_SEL参数切换三种控制方式,FOC 下还能选择电压、转速、扭矩三种细分模式。关键一步:先把仓库克隆到本地:
git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC整个刷写旅程可以浓缩为一条路线:识别板子 → 解锁芯片 → 烧录固件 → 选择控制变体 → 微调参数 → 上路测试。接下来我们逐个任务击破。
二、任务一:认出你的主板和每一根线
预期结果:能说清板子上 SWD 接口和两条传感器线缆的用途,避免接错烧板。
绝大多数平衡车主板的核心芯片是 STM32F103RCT6(部分为 GD32F103RCT6),下方引脚图已标注好刷写关键位置:
- SWD 刷写口:固件刷写必须从这里接入 ST-Link V2,接线关系如下:
| ST-Link 引脚 | 主板对应位置 |
|---|---|
| SWDIO | PA14 |
| SWCLK | PA13 |
| GND | GND |
| 3.3V | 3.3V(可选) |
- 左右两条传感器线缆:主板引出两根 4 针线,内含 GND、12/15V 以及 USART2(左线)和 USART3(右线),未来接遥控器、串口调试都要靠它们。
⚠️ 常见坑:线缆中的红色导线是 15V 电源线,串口调试或接传感器时千万不要用它,否则会烧毁 USB 转 TTL 模块甚至主控。
三、任务二:解锁芯片读保护,烧入固件
预期结果:ST-Link Utility 能正常连接,固件成功写入 Flash。
原厂主板大多开启了读保护(Read Out Protection),不解除就无法写入。整个流程就三步:
- 解除保护:连接 ST-Link 后,在 STM32 ST-Link Utility 里点击
Target → Option Bytes...,把 Read Out Protection 改为 Level 0 并 Apply; - 擦除芯片:选择
Target → Erase Chip,把原厂程序彻底清空; - 写入固件:点击
Program & Verify,选择编译好的.bin文件,起始地址保持0x08000000,等待 "Verification OK"。
固件从哪里来?两种方式任选:直接到项目的 Actions 构建页面下载现成产物(见下图),或在本机用 PlatformIO / Keil 自行编译。
💡 小提示:刷写前先确认你手里板子的芯片型号,
MDK-ARM/目录下的工程默认按 STM32F103xE 配置,不同容量芯片的烧录地址略有差异。
四、任务三:告诉固件"你打算怎么开这辆车"
预期结果:固件能识别你的输入设备,并正确响应油门和转向指令。
固件支持多达 10 种输入变体,你只需在platformio.ini或Inc/config.h里选中对应宏定义即可:
| 变体 | 输入方式 | 典型场景 |
|---|---|---|
| VARIANT_ADC | 两个电位器 | 自制遥控、电动小车 |
| VARIANT_USART | 串口指令 | Arduino/单片机控制 |
| VARIANT_NUNCHUK | Wii 手柄 | 电动轮椅、搬运车 |
| VARIANT_PPM / PWM / IBUS | RC 遥控器 | 遥控滑板、卡丁车 |
| VARIANT_HOVERCAR | 刹车/油门踏板 | 踏板改造车 |
| VARIANT_HOVERBOARD | 保留侧板通信 | 原车姿态控制(待完善) |
选择好变体后重新编译烧录,转动输入设备,电机应能随之平滑加减速。如果方向相反,可以在配置中打开INVERT_L_DIRECTION/INVERT_R_DIRECTION修正。
五、任务四:微调 FOC 参数,让电机又顺又稳
预期结果:电流、转速限制符合你的应用场景,电机无明显异响和过流报警。
打开Inc/config.h,重点调整三个参数:
CTRL_MOD_REQ:FOC 控制模式。机器人项目建议电压模式(VLT_MODE),追求稳定巡航用转速模式(SPD_MODE),人坐在上面代步用扭矩模式(TRQ_MODE);I_MOT_MAX:单电机最大电流(安培),直接决定扭矩上限,别超过电机与电池的承受范围;N_MOT_MAX:最大转速(rpm),限速保护的关键防线。
如果你想让极速再高一点,可以开启弱磁控制(Field Weakening)。它本质是向电机注入反向磁场分量,牺牲少量效率换取更高的转速上限,参数关系见下图:
⚠️ 弱磁调节有风险:电机可能转得飞快,功耗大幅上升并触发电池过压保护,请务必在安全环境(如架起车轮)下测试。
六、常见问题排查:刷完不转怎么办?
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| ST-Link 报 "Can not read memory" | 读保护未解除 | 按任务二先解除 RDP |
| 电机抖动或尖叫 | 控制方式/参数不匹配电机 | 确认极对数、电流参数,参考Src/BLDC_controller_data.c校准 |
| 输入无响应 | 变体选错或接线错线缆 | 核对所选变体对应的 USART2/USART3 线缆 |
| 开机后自动关机 | 电池电压校准不准 | 按config.h中 BAT 校准流程重新标定 |
调试时建议开启串口调试输出(DEBUG_SERIAL_USART2/3),波特率 115200,可在终端实时看到输入值、指令值和电池电压,很多问题一眼就能定位。
七、注意事项与进阶玩法
安全清单:刷写后第一次通电务必架起车轮;改弱磁参数前评估电机与电池余量;串口接线避开 15V 红线;调试串口与输入设备占用同一条线缆时需要互斥配置。
进阶玩法:开启CRUISE_CONTROL_SUPPORT实现巡航定速;在扭矩模式下启用ELECTRIC_BRAKE_ENABLE获得松油门自动缓刹;尝试 HOVERCAR 变体,用两个踏板配合"双击刹车倒车"实现卡丁车式驾驶。项目里Arduino/hoverserial/提供了现成的串口控制示例,可作为你接入其他平台(ROS 等)的起点。
固件的电机参数集中在Src/BLDC_controller_data.c,官方已内置一套校准好的默认值,绝大多数主板开箱即用。想深入理解 FOC 原理,可以结合Src/BLDC_controller.c的代码逐步研读——从"能转"到"懂原理",这才是 DIY 最大的乐趣。🚀
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考