给老平衡车刷上 FOC 固件:实测低噪顺滑驾驶与完整烧录流程
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
hoverboard-firmware-hack-FOC 是一个面向常见双轮平衡车主板的平衡车 FOC 固件项目:用场定向控制替换原厂六步换向,让电机噪音更低、加速更顺,还能把速度上限再往外推一段。适合手里有旧平衡车、愿意接几根线并刷一次固件的你。
改装后的踏板小车
它到底改了什么
| 维度 | 原厂六步换向 | FOC 控制 |
|---|---|---|
| 噪音 | 低速咔哒声明显,高速尖锐 | 电流轨迹平滑,明显更安静 |
| 振动 | 转矩步进大,车身抖动感强 | 转矩脉动小,起步平稳 |
| 效率 | 电流利用率一般 | 转矩始终沿最优磁场方向产生,能耗更低 |
| 最高转速 | 受反电动势限制 | 可启用场削弱继续扩展 |
| 控制模式 | 仅换向 | 电压 / 速度 / 扭矩三模式可选 |
📐 原理只讲 FOC 这一条线:它不再直接对三相电流做开关切换,而是先根据相电流估计出转子位置,再把电流拆到两条虚拟轴上,d 轴管磁场、q 轴管转矩,每个 PWM 周期分别调整这两轴。电机因此始终以产生目标转矩所需的最小电流工作,噪音和振动的来源在根上被削弱,速度模式与扭矩模式的闭环控制也是建立在这套坐标系之上。
平衡车电机内部结构
先确认你的设备能不能用
🔧 这套固件只针对带两根 4pin 侧板线的主板方案,动手前先对三件事:
- 主控芯片:STM32F103RCT6(多数原厂主板)或 GD32F103RCT6(部分主板),两颗芯片的规格书都在 docs/literature 里
- 板型:一体式主板,左右侧板各一根 4pin 线,引出 GND、12/15V 与 USART2/3,这两根线是外接输入设备的唯一出入口
- 电池:常规为 10S 48V 标称,更换电池后要把
BAT_CELLS参数同步改掉
30 秒判断法:打开外壳,看主板中央大芯片的丝印,型号命中上面两个之一即可用;新型分体式主板(Gen2)不属于本固件范围。引脚细节可对照 逆向主板原理图。
主板引脚图
ADC 电位器、串口、Wii Nunchuk、PPM/PWM 遥控、iBUS 等多种输入接法都写在 Inc/config.h 对应 VARIANT 段落里,接线前翻到对应小节即可。
选一条路开始
🛠️ 先定输入设备,再挑 variant,第一次建议走最稳的组合:
- 想要油门、刹车双踏板的小车 → 选
VARIANT_HOVERCAR配置,双击刹车倒车,内置新手到高级三档驾驶模式
踏板小车实拍
- 想要给油就走、松油门滑行的自然感 → 选
VARIANT_SKATEBOARD配置,默认扭矩模式,遥控负责速度与转向 - 想用 Arduino 或树莓派通过串口接管两个电机 → 选
VARIANT_USART配置,串口协议在 README 中,示例工程在仓库内 - 想单手控制轮椅或载物车 → 选
VARIANT_NUNCHUK配置,Nunchuk 摇杆同时负责油门、刹车与转向
编译、烧录、第一次启动
⚡ 选完 variant 后,完整流程就四步:
- 拉取源码:
git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC cd hoverboard-firmware-hack-FOC- 选编译变体,这一步决定固件按哪种输入设备编译,在 platformio.ini 里放开对应注释:
default_envs = VARIANT_HOVERCAR- 烧录。ST-Link V2 接到主板 SWD 口,这条命令同时完成编译与写入(上传通道已固定为 stlink):
pio run -t upload部分出厂主板带读保护,首次连接 ST-Link Utility 会提示无法读取内存,需先解除 RDP 再继续。
ST-Link 解锁界面
- 首次启动。第一次试车建议先拆掉一侧轮子或把车固定住;接上输入后按电源键,主板完成上电锁定,ADC 变体长按电源键并对电位器来回扫动一次即可自动校准行程。轻推油门时,电机应平稳安静地转起来,没有原厂咔哒声;输入信号缺失时固件会直接进紧急停机。
安全红线
保护项与对应宏都在 Inc/config.h 中:
- 单电机限流:
I_MOT_MAX - 直流母线总限流:
I_DC_MAX - 电机限速:
N_MOT_MAX - 电池低压报警与关机:
BAT_DEAD - 主板过温关机:
TEMP_POWEROFF_ENABLE(需先完成温度校准) - 输入命令超时紧急停机:
TIMEOUT
调整场削弱等高速相关参数可能让电机高速运转并触发 BMS 过压保护,操作前先读完 README 中的对应警告段落。
项目之外
项目由社区持续维护,Web 串口控制、在线编译器、ROS 驱动、平衡车扩展板等周边扩展都汇总在 README.md 的 Projects and Links 一节,不装本地环境也能直接下载编译好的固件包。FOC 控制器里可调的电机参数集中在 Src/BLDC_controller_data.c,均为定点数,用 README 提到的定点数查看工具对照着改最直观。走串口控制路线的话,Arduino/hoverserial 里的示例工程可以直接当发送端参考。
第一个具体动作:打开 Inc/config.h,把BAT_CALIB_REAL_VOLTAGE的 3970 改成你万用表实测电压乘以 100 的值,然后pio run -t upload重新编译烧录,电池电压读数准了,后面的分级报警才谈得上可信。
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考