把闲置平衡车改造成安静的FOC电机平台hoverboard-firmware-hack-FOC上手指南【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC把 ST-Link 夹到老平衡车主板上刷入新固件再拧动油门——两个电机平稳地转了起来噪音降成一阵嗡嗡声原来那种“电钻感”消失了。hoverboard-firmware-hack-FOC 是一个面向平衡车的开源固件它把场定向控制FOC写进原厂 STM32F103 主板并附带适配不同输入方式的多个控制变体。平衡车FOC固件解决的问题原厂平衡车固件用换向方式驱动电机三相绕组按六步顺序切换起步顿挫、高速时噪声明显转速上限也被反电动势早早封顶。刷入这套固件之后同一对电机改用 FOC 驱动转矩输出变得连续平滑噪声和振动都降了下来还多了场削弱field weakening这个手段把最高转速再往上推。固件同时保留了实用保护单电机限流、电池低压报警与欠压断电、主板过热检测和输入信号超时急停改车时不用自己从头造这些轮子。平衡车FOC固件的典型应用场景踏板、遥控与串口踏板卡丁车选VARIANT_HOVERCAR把刹车和油门两个电位器踏板接到左侧传感器排线就能坐在车上用脚控制加减速。静止状态下双击刹车踏板可以挂倒车还有一套多档驾驶模式新手/进阶/高手在开机时由踏板组合选择限定了各自的最高转速和电流。遥控滑板与RC车辆VARIANT_SKATEBOARD配合 RC 接收机的 PWM 信号也有VARIANT_PPM、VARIANT_IBUS对应不同协议站在板上用遥控器控制方向和速度。该变体默认使用扭矩模式松手后电机接近自由滑行脚感更接近真滑板。单手代步工具VARIANT_NUNCHUK用 Wii 体感手柄做单手输入摇杆管油门和转向常被用在电动轮椅和运货车这类单人低速代步车上。串口控制的机器人底盘VARIANT_USART把主板变成一块“双轮电机驱动板”串口发一条命令就能设定左右轮转速仓库里还附了 Arduino 示例工程Arduino/hoverserial/树莓派、单片机都能接。动手前需要准备什么一块基于 STM32F103RCT6 或 GD32F103RCT6 的平衡车主板拆轮即可取用ST-Link V2 编程器接主板上标注 SWD 的四个焊点PA13/PA14/GND/3.3V3.3V 的 USB 转串口模块用于串口调试非必需但强烈建议电脑装好 PlatformIOVS Code 插件或 Keil MDK 任一开发环境按所选变体准备输入设备踏板、RC 接收机或 Nunchuk 等最快跑通路径刷固件并验证下面这条路线目标是十分钟内让电机转起来不碰任何高级选项。git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC cd hoverboard-firmware-hack-FOC pio run -e VARIANT_ADC pio run -e VARIANT_ADC -t upload在platformio.ini里把default_envs指向一个变体新手推荐VARIANT_ADC两个电位器当输入最直观。先用 ST-Link Utility 解锁 MCU原厂芯片开了读保护不做这一步无法烧录具体操作见 docs/pictures/wiki_unlock/ 里的截图。pio run -e VARIANT_ADC编译-t upload烧录再断开电池重新上电。用 3.3V 串口模块接右侧排线只用 GND 和 RX 两根线115200 波特率打开串口监视器看到in1 / cmdL / cmdR一行行刷出来说明固件已经跑起来了。FOC原理速览换向控制像用拨档杆一档一档往前顶每一步都有明显推力切换。FOC 则把三相电流拆成两个互不相干的量——转矩分量顶多猛和励磁分量磁场多强每个 PWM 周期根据霍尔传感器读出的转子角度重新算一遍三相电流电机就被连续地“推”在最优方向上。开关动作隐藏在 16kHz 的 PWM 里所以听上去只是一片均匀的嗡嗡声。#define CTRL_TYP_SEL FOC_CTRL // 控制方式FOC #define CTRL_MOD_REQ VLT_MODE // 控制模式电压/速度/扭矩 #define I_MOT_MAX 15 // 单电机限流 [A] #define N_MOT_MAX 1000 // 单电机限速 [rpm]config.h配置与进阶调参所有用户可见的参数集中在Inc/config.h按变体和功能分块改完重编即可。值得先动的三个地方CTRL_TYP_SEL/CTRL_MOD_REQ决定控制方式和模式。载人应用建议扭矩模式TRQ_MODE松手接近滑行需要恒速的场合用SPD_MODE响应优先用VLT_MODE。I_MOT_MAX/N_MOT_MAX单电机电流与转速上限是安全边界第一次刷车不要动熟悉手感后再按电机实际能力收紧或放开。FIELD_WEAK_ENA/FIELD_WEAK_LO/FIELD_WEAK_HI场削弱开关和起效区间能抬高极速但代价是转速更高、耗电量更大可能触发电池 BMS 的过压保护——调它之前务必做好电机脱轮测试的准备。更深一层的电机本体参数电感、电阻、磁链等以定点数存放在Src/BLDC_controller_data.c出厂已校准好想微调需要用定点数查看工具换算仓库 README 里附了工具链接。常见坑与排错现象ST-Link 报Read Out Protection is activated烧录失败。原因原厂给 STM32F103 开了读保护RDP任何调试器都读不到芯片。解决ST-Link Utility 里 Target → Option Bytes 关闭 RDP再执行 Erase Chip 全片擦除然后重新烧录。现象刷完后电机转向反了。原因左右电机的绕线方向与固件默认假设不一致。解决在Inc/config.h对应变体段落里定义INVERT_L_DIRECTION或INVERT_R_DIRECTION翻转单个电机方向。现象串口调试时收不到数据甚至烧坏 USB 转串口模块。原因传感器排线里的红细线是 15V 电源而非 3.3V且左侧排线的 USART2 不耐 5V。解决只接 GND 和 RX 两根线适配器选 3.3V 电平型号右侧排线USART3支持 5V 容忍接 5V 模块问题较小。现象编译直接报错Variant not defined。原因PlatformIO、Keil 和控制台 make 三种方式选变体的入口不同漏选就会触发Inc/config.h里的编译期检查。解决在platformio.ini取消注释default_envs或在 Keil 的目标下拉菜单里选对变体。社区与生态扩展仓库 README 的 Projects 部分维护着一份生态清单Web 串口控制页面、ROS 驱动、在线编译器、分体主板固件和平衡车扩展板等改车前值得扫一遍。项目讨论社区从 Telegram 迁移到了 Matrix 群历史消息也一并导入了。固件本身以 Pull Request 方式接受贡献编译问题也可以直接在仓库里提 issue。不管目标是卡丁车、遥控板还是机器人底盘这套固件要解决的都是同一件事让原厂平衡车的电机以更平滑的方式被驱动。如果手边正好有闲置车和一支 ST-Link最快的第一步就是克隆仓库按上面的最小路线刷一个VARIANT_ADC版本先确认主板和电机都活着再谈其余配置。【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考