news 2026/10/23 4:09:38

平衡车主板 FOC 固件改造完整指南:解锁、刷写、调参一次搞定

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
平衡车主板 FOC 固件改造完整指南:解锁、刷写、调参一次搞定

平衡车主板 FOC 固件改造完整指南:解锁、刷写、调参一次搞定

【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC

起步一冲一冲、电机嗡嗡响?换一套 FOC 固件试试

如果你的平衡车起步顿挫、低速有嗡嗡声、爬坡没劲、松手后还滑老远,多半不是硬件坏了,而是原厂固件只用了最基础的换相控制(Commutation)来驱动电机——电流波形粗糙,噪声、发热和抖动自然偏高。hoverboard-firmware-hack-FOC 把磁场定向控制(Field Oriented Control,FOC)塞进了普通平衡车主板的 STM32 芯片里:电机电流被拆成"产磁力"和"产扭矩"两个分量分别闭环控制,相当于给电机装了一个精确的油门。改造之后,电机更安静、扭矩更平滑、耗电更低,还能通过弱磁控制(Field Weakening)把极速再往上顶一截。

下面用五步带你走完整个流程,全程只需要一块 ST-Link 和一颗平衡车主板。

项目速览:这套固件是什么、适合谁

先给结论:它不是替换你的主板,而是替换主板里的程序。硬件还是原来那块 STM32F103RCT6(部分车是 GD32F103RCT6,同样支持),变的是控制算法和输入方式。

项目说明
是什么运行在平衡车主板上的开源 FOC 无刷电机控制固件
解决什么换相控制的顿挫、噪声、效率低问题;顺带解锁串口/电位器/遥控等多种输入方式
控制方式换相(Commutation)、正弦(Sinusoidal)、FOC 三选一,FOC 下再分电压 / 转速 / 扭矩三种模式
适合谁想改造平衡车做代步小车、电动轮椅、卡丁车、机器人平台的 DIY 玩家
控制算法源码集中在 Src/BLDC_controller.c,电机参数在 Src/BLDC_controller_data.c

三种控制方式的直观对比(摘自 README.md):

控制方式效率平顺度弱磁提速一句话点评
换相(Commutation)一般一般不支持原厂默认,够用但粗糙
正弦(Sinusoidal)较好较好可用相位超前替代平滑升级的第一步
FOC优秀优秀支持(注入反向磁场分量)本次改造的目标

FOC 下还有三种细分模式,决定"你给它的指令是什么":

  • 电压模式(VLT_MODE):给电机恒定电压,响应快,适合机器人项目;
  • 转速模式(SPD_MODE):闭环锁转速,抗扰动,适合恒定速度巡航;
  • 扭矩模式(TRQ_MODE):给扭矩指令,松手时电机"滑行",人坐在车上代步最舒服。

动手前准备:工具与前置清单

开始前把下面这份清单备齐,避免刷到一半才发现缺东西:

类别需要准备的用途
硬件平衡车主板(STM32F103RCT6 / GD32F103RCT6)刷写目标
硬件ST-Link V2 下载器与主板通信、写入 Flash
硬件USB 转 TTL 模块(3.3V 电平)+ 串口工具可选,用于调试输出
软件STM32 ST-Link Utility(或 Keil 自带)解除读保护、擦除、烧录
软件PlatformIO(VS Code 插件)或 Keil uVision自行编译固件
环境电脑账户 / 仓库访问权限获取源码与构建产物

克隆源码(后续编译、查配置都会用到):

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

接线前先记住一件事:传感器线缆里的红色线是 15V 电源,串口子模块、USB 转 TTL 接进去都会烧。调试只接 GND 和 TX/RX,电源用模块自带的 3.3V。

核心流程:四步把 FOC 固件跑起来

第 1 步:接对线——认准 SWD 口和两根传感器线

刷写只走 SWD 口,对照主板引脚图确认位置:

ST-Link 引脚主板对应
SWDIOPA14
SWCLKPA13
GNDGND
3.3V3.3V(可选,多数情况不需要)

主板还引出两根 4 针传感器线(左线 USART2、右线 USART3),内含 GND 和 12/15V。未来接遥控器、串口、电位器都靠它们。

这一步的判断标准:对照引脚图能准确指出 SWDIO、SWCLK、GND 三个焊点,并且能分清哪根是红(15V)线。

第 2 步:写入固件——解除读保护,三步进 Flash

原厂芯片普遍开了读保护(Read Out Protection),不解除的话 ST-Link Utility 会直接报 "Can not read memory",这是新手最高频的卡点:

按顺序做三件事:

  1. 解除保护:Target → Option Bytes...,把 Read Out Protection 改为 Level 0,Apply 并等待芯片复位;
  2. 整片擦除:Target → Erase Chip,把原厂程序彻底清掉;
  3. 写入固件:Program & Verify,选择编译好的.bin文件,起始地址保持0x08000000,直到看到 Verification OK。

固件从哪来?两条路任选其一:

  • 到项目的 Actions 构建页面直接下载现成的构建产物(打包好的固件文件):

  • 或者本地自行编译:在 platformio.ini 里取消对应变体的default_envs注释后执行pio run,或用 Keil 打开 MDK-ARM/ 下的工程(默认按 STM32F103xE 配置)。

这一步的判断标准:ST-Link Utility 日志从 "Can not read memory" 变为连接成功、擦除成功、校验通过(Verification OK)。

第 3 步:配置输入——告诉固件"你怎么开这辆车"

固件支持 10 种输入变体,选择方式是在 platformio.ini 中启用对应env(或在 Keil 的 Target 下拉菜单里切换),只选一个:

变体输入方式典型玩法
VARIANT_ADC两个电位器自制遥控、电动小车
VARIANT_USART串口协议用 Arduino / 单片机远程下发指令
VARIANT_NUNCHUKWii 震动棒电动轮椅、搬运车单手操控
VARIANT_PPM / PWM / IBUSRC 遥控器遥控滑板、卡丁车
VARIANT_HOVERCAR刹车 + 油门踏板踏板卡丁车(双击刹车倒车)
VARIANT_SKATEBOARDRC 遥控(PWM)遥控电动滑板
VARIANT_HOVERBOARD保留侧板通信原车结构(平衡控制仍在完善中)
VARIANT_TRANSPOTTER方向盘 / 手柄TranspOtter 代步系统

选定变体后重新编译烧录。以 VARIANT_ADC 为例,把两个电位器接到左传感器线(只用 0~3.3V 和 GND),长按电源键 5 秒进入自动校准,来回转动电位器让固件记录上下限。

这一步的判断标准:通电后转动输入设备,两个电机随指令平滑加减速;方向反了就在 Inc/config.h 中打开INVERT_L_DIRECTION/INVERT_R_DIRECTION再刷一次。

第 4 步:调参——让电流与转速匹配你的场景

打开 Inc/config.h,重点盯住四个宏:

参数默认值作用
CTRL_TYP_SELFOC_CTRL控制方式:换相 / 正弦 / FOC
CTRL_MOD_REQVLT_MODEFOC 细分模式:电压 / 转速 / 扭矩
I_MOT_MAX15 A单电机最大电流,决定扭矩上限
N_MOT_MAX1000 rpm最大转速,超速保护的关键

选型建议:机器人平台用电压模式;恒定速度巡航用转速模式;人坐在上面代步用扭矩模式。改电流上限前先确认电机和电池铭牌上的承受能力,不要拍脑袋往大了调。

想要更高极速可以启用弱磁:把FIELD_WEAK_ENA置 1,并理解FIELD_WEAK_LO/FIELD_WEAK_HI/FIELD_WEAK_MAX三个阈值的关系——从 LO 开始线性介入,到 HI 达到最大注入量:

弱磁会让电机转得飞快,功耗随之大幅上升,甚至触发电池 BMS 的过压保护。请务必把车轮架起来测试,人不要靠近旋转面。

这一步的判断标准:满油门下电流不超过I_MOT_MAX、转速不超过N_MOT_MAX,电机无异响、主板不烫手。

验证·排错·进阶:确认结果对不对,再往深走

如何验证刷写成功

最快的方式是开调试串口:在 Inc/config.h 中启用DEBUG_SERIAL_USART2或DEBUG_SERIAL_USART3,用 3.3V USB 转 TTL 接对应传感器线(GND + RX),115200 波特率。终端会持续滚动一行数据:

in1:345 in2:1337 cmdL:0 cmdR:0 BatADC:0 BatV:0 TempADC:0 Temp:0

转动输入设备时in1/in2变化、cmdL/cmdR跟随变化,说明输入链路通了;BatV应与你万用表测到的电池电压(×100)大致一致。

常见问题速查

现象可能原因处理办法
ST-Link 报 "Can not read memory"读保护没解除回到第 2 步先解除 RDP 再擦除
电机抖动、尖叫控制方式或参数不匹配电机核对极对数与电流参数,参考 Src/BLDC_controller_data.c 校准
输入完全无响应变体选错、接错左右线缆对照所选变体确认指令走的是 USART2 还是 USART3
一开机就自动关机电池电压校准值偏差按 Inc/config.h 中 BATTERY 注释流程重新标定BAT_CALIB_ADC
电机转反方向相序或方向宏未设置打开对应INVERT_*_DIRECTION重新烧录

安全底线

  • 第一次通电测试务必架起车轮,确认转向和制动符合预期再落地;
  • 串口线只碰 GND 和 TX/RX,永远别碰红线(15V);
  • 调试串口与输入设备共用同一条线缆时会互相冲突,只能二选一,配置里也有对应互斥检查(编译期直接报错);
  • 弱磁参数任何改动都放在台架环境进行。

进阶玩法

  • 开启CRUISE_CONTROL_SUPPORT,用一个按钮实现巡航定速,松手自动回到设定速度;

  • 扭矩模式下启用ELECTRIC_BRAKE_ENABLE,松油门不再滑行而是缓刹停住;

  • 尝试 VARIANT_HOVERCAR:刹车 + 油门双踏板,"双击刹车倒车",做一台真正的卡丁车:

  • 想接入 Arduino、ROS 等平台,直接参考 Arduino/hoverserial/ 里的串口控制示例;

  • 想弄懂原理,从 Src/BLDC_controller.c 读起,配合 docs/literature/ 里备好的 STM32 数据手册与电机控制资料,再拆一台电机看看绕组长什么样:

从"能转"到"懂原理",这一步改造的成本不高,回报却是一台安静、顺滑、可控性拉满的电动平台——准备好 ST-Link,今天就动手吧。

【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 4:09:31

如何运行Taxi回归测试?cocotb、pytest与Verilator完整工作流解析

硬件开发网络嵌入式 【免费下载链接】taxi AXI, AXI stream, Ethernet, and PCIe components in System Verilog 项目地址: https://gitcode.com/gh_mirrors/taxi7/taxi 点击查看 免费下载 Taxi 是一个用 System Verilog 编写的 AXI、AXI stream、Ethernet 与 PCIe…

作者头像 李华
网站建设 2026/10/23 4:08:54

Slither 与 Manticore 从零到报告:智能合约测试覆盖率避坑记

Slither 与 Manticore 从零到报告:智能合约测试覆盖率避坑记 【免费下载链接】publications Publications from Trail of Bits 项目地址: https://gitcode.com/GitHub_Trending/pu/publications 2016 年 The DAO 被一个重入漏洞掏空,事后复盘发现…

作者头像 李华
网站建设 2026/10/23 4:07:56

YimMenuV2:GTA 5增强版修改菜单,5步从零跑起来

YimMenuV2:GTA 5增强版修改菜单,5步从零跑起来 【免费下载链接】YimMenuV2 Experimental menu for GTA 5: Enhanced 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenuV2 GTA 5增强版默认启用 BattlEye 反作弊,多数旧菜单无法…

作者头像 李华
网站建设 2026/10/23 4:07:22

从一条命令到四类求解器:HiGHS 优化求解器的落地路径

从一条命令到四类求解器:HiGHS 优化求解器的落地路径 【免费下载链接】HiGHS Linear optimization software 项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS HiGHS 是一款面向大规模稀疏模型的高性能优化求解器,MIT 协议开源&#xff0…

作者头像 李华