资讯动态

如何把旧平衡车刷成 FOC 驱动平台?hoverboard-firmware-hack-FOC 完整指南

发布时间:2026/10/23 6:06:49 来源:尧图企业网站定制
如何把旧平衡车刷成 FOC 驱动平台hoverboard-firmware-hack-FOC 完整指南【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOChoverboard-firmware-hack-FOC 是一个面向普通平衡车主板的开源固件把出厂的换向commutation控制替换为场定向控制Field Oriented Control, FOC并直接复用主板上原有的两条侧板排线作为控制输入。刷上它之后同一块主板上的双轮电机可以以更平滑的转矩运行且电流、转速、输入信号都有硬件级的保护兜底。一句话定位它为旧平衡车做了什么FOC 场定向控制把三相电流分解为转矩与磁场两个分量分别闭环转矩输出比换向控制更平顺官方对比表中其效率与平稳性均为最高档README 中明确列出降低噪音与振动、提高电机效率三项收益。硬件零改动复用支持 STM32F103RCT6 与 GD32F103RCT6 主板的平衡车输入走原有的左右 4pin 侧板排线电位器、串口、Wii Nunchuk、PPM/PWM/iBUS 遥控、踏板都能接共 10 个现成变体。保护与可扩展单机电流、直流母线电流、转速均有上限默认 15A / 17A / 1000rpm输入连续出错 20 次自动紧急停机电池分级报警串口协议带帧头与校验和可直接挂 Arduino 或单片机做机器人控制。主板上两个 4pin 侧板接口引出 GND、12/15V 以及 USART2左长线与 USART3右短线两者都支持 UART、PWM、PPM、iBUS 输入USART2 还能当 12bit ADC 用USART3 可走 I2C。5 步刷机从 clone 到第一次点亮 ⚡前置条件一台一体主板非分体主板平衡车主控为 STM32F103RCT6 或 GD32F103RCT6ST-Link V2 仿真器焊接到主板 SWD 测试点见上图 PA14/PA13 位置PlatformIO 开发环境或 Keil MDK仓库内已提供MDK-ARM工程Linux 下也可用arm-none-eabi-gcc make3.3V USB 转串口模块可选用于调试波特率 115200最短起步步骤git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC打开 platformio.ini把要用的变体取消注释同一时间只选一个例如default_envs VARIANT_ADC。用 ST-Link 连接主板注意出厂固件通常对 MCU 加了锁需要先解锁并整片擦除才能写入新固件。PlatformIO 里执行上传upload_protocol stlink已在配置中写好make 用户则运行make -e VARIANTVARIANT_ADC编译、make flash写入make unlock可调用 OpenOCD 完成解锁。上电观察 LED 与蜂鸣器行为确认没有立刻进入保护状态。在 Inc/config.h 中打开对应的DEBUG_SERIAL_USART2/3用串口助手 115200 波特率查看输入值、指令输出、电池电压与板温。解锁成功的标志是内存读出全 F即整片已擦除之后才能正常烧录 FOC 固件。核心能力拆解三种控制类型、三种 FOC 驱动模式FOC 直接作用于轮毂电机的三相绕组配合霍尔信号做位置/速度反馈。控制类型由CTRL_TYP_SEL选择COM_CTRL换向出厂方式、SIN_CTRL正弦波、FOC_CTRL默认。选 FOC 后再由CTRL_MOD_REQ决定驱动模式| 模式 | 行为 | 官方推荐场景 | | -- | -- | -- | |VLT_MODE电压 | 按输入施加恒定电压响应最快 | 机器人、要求电机快速跟手的场合 | |SPD_MODE速度 | 闭环追目标 RPM可抵抗负载扰动 | 机器人、恒速应用 | |TRQ_MODE转矩 | 按输入追转矩目标目标为 0 时电机自由滑行 | 有人乘坐的大多数场景 |README 的横向对比表还给出了各模式的静止保持与自由滑行能力差异速度模式静止保持最好转矩模式支持自由滑行二者均只存在于 FOC 控制类型下。10 个输入变体同一块主板不同玩法 在 platformio.ini 中选一个环境即可每个变体的接线与默认参数都已在 Inc/config.h 中配好VARIANT_ADC两个电位器接左侧排线支持长按电源键自动校准 ADC 上下限VARIANT_USART串口协议控制仓库提供 Arduino 示例 Arduino/hoverserial/hoverserial.ino适合接 Arduino/单片机做上位机VARIANT_NUNCHUKWii Nunchuk 单手控制油门、刹车、转向曾是电动扶手椅常用方案VARIANT_PPM / VARIANT_PWM / VARIANT_IBUS三种遥控信号协议iBUS 对应 Flysky 协议VARIANT_HOVERCAR油门 刹车双踏板静止时双击刹车进入倒车VARIANT_HOVERBOARD读取两块侧板数据注意其自平衡控制器目前仍是 TODO 状态VARIANT_TRANSPOTTER平衡车货运小车TranspOtter方案VARIANT_SKATEBOARDPWM 遥控驱动的电动滑板默认启用转矩模式VARIANT_HOVERCAR还内置了三级驾驶模式MULTI_MODE_DRIVE上电时根据刹车/油门踏板组合切换初级模式限 4A、30rpm中级限 8A、80rpm高级模式放开到 15A、1000rpm 全参数适合给不同水平的乘客限功率。场削弱把最高速度再往上顶场削弱默认关闭。开启后它在FIELD_WEAK_LO默认 750到FIELD_WEAK_HI默认 1000的输入区间内线性增加解磁电流直到FIELD_WEAK_MAX默认 5A注释标注 10 寸轮上实测过 10A从而突破电机反电动势造成的转速上限。串口控制与在线调试串口协议以0xABCD为帧头带校验和与失步重同步能力README 有专门的可靠性演示视频指令内容为左右各一路 -1000~1000 的转向/速度值。调试侧提供两档开关DEBUG_SERIAL_USARTx输出单行 ASCII 状态输入、指令、电池 ADC 与校准电压、温度DEBUG_SERIAL_PROTOCOL则允许从串口直接改参数、打印指定信号详见 Src/comms.c 中的用户命令定义。此外还支持在右侧排线挂 I2C 转接的 16x2 字符 LCD 显示状态。配置与定制最常动的 4 个参数所有参数集中在 Inc/config.h电机标定参数在 Src/BLDC_controller_data.c定点数格式。新手只需关注前 4 项#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] 转速上限电流与转速上限I_MOT_MAX、I_DC_MAX、N_MOT_MAX所有 FOC 模式都强制执行是机器人应用的安全底线。注释建议I_DC_MAX I_MOT_MAX 2A超出母线电流时触发斩波保护。电池校准BAT_CALIB_REAL_VOLTAGE/BAT_CALIB_ADC默认按 10 串电池校准后 LED 会在 3.60V/cell 轻蜂鸣、3.50V/cell 快蜂鸣、3.37V/cell 自动断电。场削弱FIELD_WEAK_ENA/FIELD_WEAK_MAX/FIELD_WEAK_LO/FIELD_WEAK_HI想提速再动动之前先读完下一节。辅助功能开关STANDSTILL_HOLD_ENABLE到位锁止适配电机停位保持、ELECTRIC_BRAKE_ENABLE转矩模式下松开油门时施加电子刹车、CRUISE_CONTROL_SUPPORT按键切换定速巡航激活时自动切到速度模式锁住当前转速。避坑与安全清单 ⚠️电平左侧排线USART2不耐 5V接 Arduino 5V 逻辑会损坏引脚右侧排线USART3才 5V 耐受两根排线的红线是 12/15V 电源调试接线时不要碰。场削弱风险README 明确警告重新标定场削弱时电机可能转得极快功耗会大幅上升并可能触发 BMS 过压保护务必做好安全防护再试。温度保护要先校准板载温度传感器未校准时误差可达 45°CTEMP_WARNING_ENABLE/TEMP_POWEROFF_ENABLE注释里写着未校准不要启用。输入超时保护连续TIMEOUT默认 20次错误/缺失输入指令会自动紧急停机ADC 输入另有ADC_PROTECT_TIMEOUT阈值保护接线松脱或悬空不会让电机乱跑。分体主板不适用本仓库只支持一体主板分体主板splitboard用户应找专门的 Gen2 项目。VARIANT_HOVERBOARD 别当成品通信已完成但自平衡控制器还是 TODO刷了它不代表车子能自己站稳。烧录前必须解锁擦除直接写不进去或行为异常时先执行make unlock。生态与扩展仓库之外的配套控制器设计仓库FOC 控制器的 Simulink 模型与参数表在同作者仓库 bldc-motor-control-FOC另有一个无需安装 Matlab 的网页版控制器预览页FOC Webview。Fixed-Point Viewer把定点数参数还原成浮点值的调参小工具配合BLDC_controller_data.c使用。Web 串口控制 / 在线编译器社区提供了网页版串口遥控界面和免本地环境的在线编译服务刷机前先在线验证配置很顺手。衍生固件AT32F403RCT6 主板版本、分体主板 Gen2 版本以及 hoverboard-breakout 扩展板把侧板信号引出为标准接口。整机项目ROS 驱动、Android 遥控 Apphoverdroid需 USB 连接、Bobbycar、轮椅控制等README 的 Projects and Links 一节列了全部名字。社区原 Telegram 群已关闭消息含 5 年以上的历史与图片已迁移到 Matrix 群组可在 README 中获取入口。官方文档docs/ 目录内有 STM32F103/GD32F103 数据手册、参考手册、STM32 电机控制 SDK 资料以及两块逆向出的主板原理图 PDF。适合谁按场景选变体和模式机器人 / 底盘开发者选VARIANT_USARTVLT_MODE用串口直接下发左右轮指令响应最快需要精确恒速则换SPD_MODE。卡丁车 / 载人载具VARIANT_HOVERCAR 三级驾驶模式VLT_MODE保证松油门不滑行也可开电子刹车。电动滑板玩家VARIANT_SKATEBOARD默认TRQ_MODE油门归零时自然滑行脚感最接近滑板。轮椅 / 单手载具VARIANT_NUNCHUK一个手柄管油门、刹车、转向。纯想体验 FOC 效果VARIANT_ADC两根电位器最省事长按电源键即可完成校准。模式选择一句话要响应快选电压要稳速选速度要人坐得舒服选转矩。下一步clone 仓库后从 README.md 的 Wiki 链接Getting Started / Troubleshooting看完整接线图先刷VARIANT_ADC跑通全链路再按你的场景切换变体遇到问题直接进 Matrix 社区提问。【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑