news 2026/10/23 2:05:05

平衡车为什么高速会啸叫?FOC固件 hoverboard-firmware-hack-FOC 完整解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
平衡车为什么高速会啸叫?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

你有没有遇到过这种情况:平衡车一蹬出去就嗡嗡作响,提速后噪音还一阵一阵地跳。这是梯形换相"一次倒相 60 度"驱动的固有结果。hoverboard-firmware-hack-FOC 是一套写给原厂主板的 FOC 固件,用场定向控制(Field Oriented Control)连续地控制无刷电机的相电流,平衡车改装不需要换任何硬件就能完成。

这是标准 8 寸平衡车拆出来的轮毂电机:外圈铜线是定子绕组,中间的 PCB 是提供角度信息的霍尔传感器板。FOC 固件不改动电机和主板的任何硬件,只改变相电流的驱动方式。

原厂的嗡嗡声从哪来

原厂固件走的是梯形换相:根据霍尔信号在 6 个固定导通状态里选一个,被选中的两相直接灌满电压,相电流接近方波。方波电流和旋转磁场对不齐,转矩被周期性地拉扯,这就是低速嗡声、高速啸叫的来源,也是顿挫感的物理原因。

换成 FOC 之后,电流相位平滑地跟踪转子,转矩不再一跳一跳。项目自带的对比表(README 中的 comparison table)里,梯形换相在效率和平顺度两栏都是最低档,且没有 field weakening 能力;FOC 各项基本拉满。这不是主观评价,是控制结构决定的:方波驱动本身就有转矩脉动,而连续电流矢量没有。

16 kHz 电流环在做什么

FOC 的数据流可以一句话概括:输入 = 电流采样 + 霍尔角度 → 处理 = 坐标变换 + 双轴 PI 电流环 → 输出 = 三相 PWM 占空比。

  • 输入:DMA 中断按 16 kHz 节拍触发,每次采两相相电流和直流母线电流,同时读 3 路霍尔信号,见Src/bldc.c。
  • 处理:调用BLDC_controller_step(Simulink 生成的控制器代码),先做 Clarke 变换,再 Park 变换把电流拆到转子坐标系的 Id/Iq 两轴,两个 PI 电流调节器各出一路电压指令,限幅后反变换回三相。
  • 输出:三个占空比直接写入定时器比较寄存器(LEFT_TIM_U/V/W),下一 PWM 周期桥臂立刻执行。

这张图把平衡车电机的结构摊开了看:27 槽 30 极、三相绕组星形连接,Hall A/B/C 相隔 120 度排布。固件里所有坐标变换的起点,就是这几路霍尔信号给出的转子角度。

三种控制模式怎么选

你得到:电机特性可以按使用场景切换——要恒定巡航就锁转速,要直接动力感就下扭矩指令,要快速响应就开电压模式,全程不换硬件。

靠什么实现:config.h里的CTRL_MOD_REQ一个参数切换,前提是CTRL_TYP_SEL设为 FOC:

  • VLT_MODE(电压模式):直接给电压指令,响应最快,适合机器人等需要快速启停的应用;
  • SPD_MODE(速度模式):闭环锁定目标 RPM,坡道等阻力扰动会被控制器自动补偿,适合恒速巡航;
  • TRQ_MODE(扭矩模式):直接给扭矩指令,目标为 0 时电机自由滑行,适合有人骑乘、松手即减速的场景。

注意:SPEED 和 TORQUE 两种模式是 FOC 独有,梯形换相和正弦控制都没有。

自带的保护机制有哪些

你得到:参数调得激进也不会炸管,过流和超速有两层兜底,电池和板温也有底线。

靠什么实现:

  • 第一层:I_MOT_MAX(默认 15 A)在控制器内部限制电机相电流,N_MOT_MAX(默认 1000 rpm)限制最高转速;
  • 第二层:直流母线电流超过I_DC_MAX时直接关闭 PWM 输出(current chopping),物理上断流;
  • 其余:电池欠压逐级报警直至关断(BAT_DEAD)、板载过温保护(需先校准传感器)、输入信号超时 20 个错误周期即紧急停机。

用 field weakening 拉高极速

你得到:不换电机、不换驱动板,把极速上限往上顶一截。

靠什么实现:电机转速升高时反电动势吃掉了大部分母线电压,电压不够用。开启FIELD_WEAK_ENA后,当输入目标超过FIELD_WEAK_LO,固件在 d 轴注入去磁电流,随输入线性增大到FIELD_WEAK_HI处达到FIELD_WEAK_MAX(默认 5 A,10 寸轮实测到 10 A),压低反电动势、腾出电压裕量。

三条曲线对应不同的 Lo/Hi 标定:左边从低输入就开始削弱(最激进),右边接近满输入才启用(最保守)。

注意:项目方明确警告,重新标定 field weakening 时电机可能转得极快,功耗大幅上升,可能触发电池 BMS 的过压保护。务必有人看管、低速环境里做。

平衡车改装上手三步:刷 FOC 固件

准备什么

  • 一块标准平衡车主板:STM32F103RCT6 或兼容的 GD32F103RCT6,两种都支持;
  • 一个 ST-Link(项目 PlatformIO 配置里upload_protocol就是stlink),或者直接用仓库自带的 Keil 工程(MDK-ARM 目录)。

这是原厂主板的引脚图:右侧标有 SWD 刷写口(SWCLK/SWIO,只允许 3.3 V),电机相电流采样、霍尔接口也都有标注,改线时可以直接对照。

怎么刷

  1. 获取源码:git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
  2. 选输入 variant:在 platformio.ini 中放开对应[env:...](电位器 ADC、串口 USART、遥控器 PPM/PWM/iBUS、踏板 HOVERCAR 等),Keil 用户则在 Target 下拉框里选;
  3. pio run -t upload写入,上电后电机即按默认配置以 FOC 电压模式运行。

怎么调

  • 编译期:改 Inc/config.h 里的CTRL_TYP_SEL(默认已是 FOC)、CTRL_MOD_REQ、I_MOT_MAX、N_MOT_MAX、FIELD_WEAK_ENA;
  • 运行期:接串口协议可在线读改参数,Src/comms.c 里有完整的参数表(I_MOT_MAX、N_MOT_MAX、CTRL_MOD 等)。建议先用串口终端把参数验证到合理,再固化进 config.h 重新编译。

适合谁,不适合谁

这是一套少数能直接刷进原厂平衡车主板、控制环完整、保护齐备、参数支持运行期在线读写的 FOC 固件,适合做 hovercar、电动滑板、TranspOtter 这类平衡车改装项目,也适合想低成本摸一遍无刷电机闭环控制的人。不适合两类人:想"刷完直接当普通平衡车骑"的人——VARIANT_HOVERBOARDvariant 的平衡控制环目前尚未实现;以及不愿意自己刷机和调参的人。

【免费下载链接】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 2:02:56

QtHttpServer安装配置:SSL证书、CMake与ctest避坑

简介:面向Qt开发者的HTTP/HTTPS服务端学习与集成素材,围绕QtHttpServer库提供可直接查阅和编译的源码、示例测试用例及HTTPS所需SSL证书与密钥文件,帮助需要在Qt应用中嵌入API接口、静态资源服务或安全Web服务的开发者降低选型与上手成本。压…

作者头像 李华
网站建设 2026/10/23 2:02:28

WeChatMsg 微信聊天记录导出:离线导出成 HTML、Word、CSV 永久保存

WeChatMsg 微信聊天记录导出:离线导出成 HTML、Word、CSV 永久保存 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…

作者头像 李华
网站建设 2026/10/23 2:00:58

Rime 输入法不知道用哪个?awesome-rime 一份列表帮你挑好

Rime 输入法不知道用哪个?awesome-rime 一份列表帮你挑好 【免费下载链接】awesome-rime A curated list of Rime IME schemata and configs | Rime 輸入方案和配置列表 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-rime 听说过 Rime&#xf…

作者头像 李华