开源平衡车FOC固件刷写与调参完整指南【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOChoverboard-firmware-hack-FOC 是一款面向市售平衡车的开源 FOC 控制固件项目它基于 STM32F103 主控芯片运行场定向控制替代原有换向控制通过 SWD 接口刷入主控板可降低电机噪音并提升效率与扭矩平滑度。项目定位适合谁不适合谁它面向已经拥有平衡车主控板、希望复用电机与电源硬件制作电动滑板、平衡车汽车hovercar、轮椅驱动或机器人平台的用户项目提供现成的 FOC 控制器代码、校准好的电机参数与多种输入变体硬件不动只需刷写。它不适合只想保留原有两轮自平衡功能的人VARIANT_HOVERBOARD 的平衡控制器尚未实现也不适合 splitboard 拆分主板型号没用过 ST-Link 的读者建议先在备用板上练习刷写。原理速览FOC 与传统换向的区别传统换向控制像继电器开关电流被切成六个扇区轮流接通转子每转过一个位置就切换一组功率开关。简单但粗糙低速时扭矩有明显的“分段感”并伴随噪音与振动。FOC 则更像方向盘它实时计算转子电角度始终朝最有利的旋转方向注入电流幅值按扭矩需求设定因此扭矩连续且安静。代价是更高的算力需求这也正是本项目用定时器中断配合 ADC 电流采样跑高频控制回路的原因。硬件准备与 SWD 接线方法芯片STM32F103RCT6 或兼容的 GD32F103RCT632KB 闪存通常已焊在主板上。烧录ST-Link 或兼容器接 SWD 接口PA13SWDIO、PA14SWCLK加地线。编译PlatformIO推荐见 platformio.ini或 MDK-ARMMDK-ARM/。输入两个电位器ADC、串口协议右线 USART3示例见 Arduino/hoverserial/、Wii Nunchuk、RC 遥控 PPM/PWM/iBUS 或两个踏板。注意左线USART2不耐 5V不要直连 5V 信号。引脚定义见下图。变体切换方法与 FOC 控制模式速查变体决定输入从哪里读取在 platformio.ini 中取消注释对应的default_envs行即可变体输入源典型用途VARIANT_ADC两个电位器左线台架调试、简单调速VARIANT_USART串口协议右线 USART3外部 MCU 或 PC 控制VARIANT_NUNCHUKWii Nunchuk单手油门 转向VARIANT_PPM / PWMRC 遥控信号遥控车、电动滑板VARIANT_IBUSFlysky iBUS左线飞斯开遥控器VARIANT_HOVERCAR油门 刹车双踏板hovercar 汽车式操控VARIANT_HOVERBOARD原厂侧板数据保留原厂平衡车形态VARIANT_TRANSPOTTER运输项目平衡车运输平台VARIANT_SKATEBOARDRC 遥控 PWM右线电动滑板控制类型在 Inc/config.h 中设置CTRL_TYP_SEL选择换向 / 正弦 / FOCFOC 下再用CTRL_MOD_REQ选三种模式模式参数特点适用场景电压模式VLT_MODE恒定电压响应最快需要快速响应的机器人速度模式SPD_MODE闭环转速跟踪、抗负载扰动恒速工况扭矩模式TRQ_MODE扭矩精确0 扭矩时自由滑行载人骑行、轮椅刷写与调参流程从编译到校准环境安装 PlatformIO IDE或 VS Code PlatformIO 扩展。取码git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC。选变体在 platformio.ini 取消注释对应行按需修改 Inc/config.h 的CTRL_TYP_SEL/CTRL_MOD_REQ。编译PlatformIO 构建生成固件上传方式 stlink。烧录SWD 接 ST-Link 后上传若报内存读取失败先解锁见下方避坑清单。调参电机参数在 Src/BLDC_controller_data.c已附校准好的默认值电机不同可用 VESC 工具先检测参数再对照。FOC 效果收益与适用边界相比换向控制FOC 模式噪音与振动更小扭矩输出连续、无“分段感”相同功率下效率更高电池设备直接体现为续航增加。弱磁Field Weakening可把最高转速推到额定值以上在config.h将FIELD_WEAK_ENA置 1FIELD_WEAK_LO到FIELD_WEAK_HI之间去磁电流从 0 线性升至FIELD_WEAK_MAX。边界在于开启弱磁后功耗显著增加可能触发 BMS 过压保护电机也可能达到很高速务必做好安全措施再校准。参数需按自己的电机先校准直接套用默认值控制效果不佳。避坑清单从刷写失败到电机失控最常见的刷写失败是 ST-Link Utility 报出的读保护报 Can not read memory → MCU 读保护RDP未解除 → 按 wiki 的 unlock MCU 流程解除保护后重新刷写。刷完主板无反应或电机不转 → 变体选错或输入未接 → 对照上表确认输入口与传感器线缆连接HOVERBOARD 变体还需先刷侧板。接信号后疑似短路或无响应 → 5V 信号直连左线 → USART2 不耐 5V改用右线USART3耐 5V或 3.3V 信号。开弱磁后 BMS 跳闸或转速失控 →FIELD_WEAK_HI设得过低或校准区间过宽 → 保持FIELD_WEAK_HI≤ 1500、FIELD_WEAK_LO≤ 1000先低速校准并及时断电。电流异常或响应迟钝 → 电机规格不同却用默认参数 → 用 VESC 工具重测电气参数并更新BLDC_controller_data.c。零速时希望保持位置但电机滑行 → 扭矩模式 0 扭矩默认自由滑行 → 在config.h启用STANDSTILL_HOLD_ENABLE或ELECTRIC_BRAKE_ENABLE。文档、模块与社区入口docs/STM32F103/GD32F103 数据手册、ST 电机控制 SDK、逆向主板原理图docs/20150722_hoverboard_sch.pdf、电机结构图与参数截图。Inc/config.h控制类型、控制模式、弱磁等全局参数。Src/控制器与输入逻辑其中BLDC_controller.c为 FOC 核心comms.c为输入解析。社区官方 Matrix 群README 中有加入链接已导入原 Telegram 群 5 年以上历史ROS 驱动、Android 遥控应用hoverdroid等衍生项目见 README 的 Projects and Links 一节。建议先用 VARIANT_ADC 或 VARIANT_USART 在台架上跑通刷写流程用默认参数验证电机响应后再逐步启用弱磁等功能遇到问题可在仓库提 issue 或到 Matrix 群提问。【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考