平衡车加速嗡嗡响?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)替换了标准平衡车主板固件,让电机安静、平滑地转动,还能靠场削弱打开高速区间。
原理速览:FOC 不只是换相更准
换相控制像一脚一脚猛踩油门,每踩一下电机就"踉跄"一次;FOC 更像细腻的脚法。固件实时采三相电流,配合霍尔信号估算转子角度,让电流沿转矩最大的方向旋转。你不用记公式,只要明白:电机收到的是平滑的圆推,而不是一段一段的踢,嗡嗡声就是从这些踢里来的。
核心能力拆解
三种控制模式共用一张参数表
解决什么:你可能想要像自行车那样"给多少力走多少"(扭矩),想要定速巡航(速度),或者要响应快的电压控制(机器人底盘),原固件都不给。怎么做:在 Inc/config.h 里把CTRL_TYP_SEL设为FOC_CTRL,再用CTRL_MOD_REQ在电压、速度、扭矩三种模式间切换,速度模式和扭矩模式都是闭环控制,扭矩目标为 0 时电机还能自由滑转。数值锚点:README 的对比表里,FOC 扭矩模式的平顺性评价最高,默认限速 1000 rpm。
#define CTRL_TYP_SEL FOC_CTRL // FOC 控制 #define CTRL_MOD_REQ VLT_MODE // 电压/速度/扭矩 #define N_MOT_MAX 1000 // rpm 上限场削弱:从反电动势那里"借"转速
解决什么:转速越高反电动势越大,电压给满了也推不动,电机到了速度"天花板"。怎么做:场削弱故意注入 D 轴负电流抵消一部分励磁,让电机转得更快。默认关闭,启用要设FIELD_WEAK_ENA = 1,削弱电流从FIELD_WEAK_LO(750)起线性爬升,到FIELD_WEAK_HI(1000)达到最大。数值锚点:默认FIELD_WEAK_MAX为 5A,作者实测 10 英寸轮下 10A 也成立。
16 kHz PWM 与定点电流环
解决什么:主控芯片是 Cortex-M3(STM32F103RCT6,部分主板为 GD32F103RCT6),资源有限,电流环必须跑得省。怎么做:控制环跟随PWM_FREQ16000Hz 的 PWM 周期调度,PI 参数全部以定点形式存放在 Src/BLDC_controller_data.c,CPU 占用低。数值锚点:单轮电流限I_MOT_MAX15A,直流母线限I_DC_MAX17A。
🔧 从零到跑起来
- 硬件:主板上两根 4 针侧板排线分别引出 GND、12/15V 和一路 USART,先选一种输入方式,比如左线接两个电位器跑 VARIANT_ADC。
- 编译:打开 platformio.ini,取消你需要的 variant 的
default_envs注释,PlatformIO 直接构建即可;根目录 Makefile 和 MDK-ARM 下的 Keil 工程也能用。 - 烧录:接上 ST-Link,用配置里的 stlink 上传协议写入,记得把
monitor_port改成你本机的实际串口。 - 验证:打开 DEBUG_SERIAL(3.3V 电平、115200 波特率),上电后串口监视器里能持续看到输入值和左右输出指令;遇到问题先翻项目 Wiki 的 Getting Started 和 Troubleshooting 章节。
跑起来之后
- 噪音:一段段的踢变成平滑的圆推,匀速低速时最明显——以前贴脸听的嗡嗡声基本听不见了。README 顶部放了换相 vs FOC 的对比视频,可以对照感受。
- 振动:转矩不再逐段抖,轮子转得绵。对平衡车来说,就是脚底下那种低频顿挫感基本消失。
- 效率:电流始终沿着转矩方向走,浪费少。README 宣称效率提升、能耗降低,具体续航增幅以仓库文档和自测为准。
安全红线与进阶玩法
内置保护(都在 Inc/config.h 里):
- 单轮电流限
I_MOT_MAX15A,超过I_DC_MAX17A 触发母线电流削波 - 电机最高转速
N_MOT_MAX1000 rpm - 电池低压:3.60 V/cell 蜂鸣提醒,低于 3.37 V/cell 自动断电
- 主控芯片过温:60.0°C 报警、65.0°C 断电(默认关闭,需两点标定后再启用)
两个进阶方向:
- 场削弱:打开
FIELD_WEAK_ENA并调整 Lo/Hi 阈值。README 有明确警告——电机可能转得非常快,功耗骤增可能触发 BMS 过压保护,动手前先读 README 的 Field Weakening 一节。 - 调参:速度/扭矩环的 PI 增益在
Src/BLDC_controller_data.c,改之前先读 config.h 里 MOTOR CONTROL 参数块和 README 的对比表,定点值换算可以用 Fixed-Point Viewer 工具。
下一步建议:从 https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC clone 下来,先按 VARIANT_ADC + 电位器这条路把"从零到跑起来"走通,跑顺之后再去碰扭矩模式和场削弱。
【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考