☰
把平衡车主板改成FOC磁场定向控制:从解锁到调参的完整指南
2026/10/23 4:48:33 网站建设 项目流程

把平衡车主板改成FOC磁场定向控制:从解锁到调参的完整指南

【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC

电机嗡嗡响、起步一冲一冲、松了油门还滑出去老远——这些现象的根源,是原厂固件只用最粗糙的换相控制(按顺序给三相线圈通电)驱动电机。hoverboard-firmware-hack-FOC 固件把磁场定向控制(Field Oriented Control,FOC,把电流拆成两个分量分别闭环)搬进普通平衡车主板,让电机转得更安静、扭矩更平滑,还能用弱磁控制把极速再往上顶一截。

原理速览:FOC 比原厂换相多做了什么

控制方式工作原理平顺度你能得到什么
换相COM_CTRL按序给三相线圈通电一般原厂行为,振动与噪声大
正弦波SIN_CTRL注入正弦电流较好更平顺,但无矢量解耦
FOCFOC_CTRL磁通/扭矩分量各自闭环优秀平滑输出 + 弱磁提速 + 自由滑行

一句话理解:FOC 相当于给电机装了一只"电子油门","磁场多强"和"扭矩多大"各走一条闭环链路。固件里通过 Inc/config.h 的CTRL_TYP_SEL在这三种方式间切换,FOC 下再用CTRL_MOD_REQ细分电压、转速、扭矩三个模式。

动手前先拿到代码:

git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC

开工前确认:刷写前你要备齐的 5 样东西

  • 主芯片型号:多数主板是 STM32F103RCT6,少数为 GD32F103RCT6,两者都受支持,但 Flash 容量不同会影响烧录地址
  • ST-Link V2 加 4 根杜邦线:SWD 刷写的唯一通道
  • USB 转 TTL 串口模块:串口调试与 USART 变体控制都要靠它
  • PlatformIO 或 Keil MDK:仓库自带platformio.ini与 MDK-ARM/ 两套工程
  • 可安全通电的电机与电池:第一次上电必须架起车轮

阶段一:认出主板上的 SWD 刷写点和两条传感器线

完成标准:你能在板上指出 SWD 四个焊点的位置,并分清左右两条 4 针线各接什么。

SWD 接线对应:PA14(SWDIO)、PA13(SWCLK)、GND、3.3V(限 3.3V/10mA,可选供电)。两条侧板线各引出 GND、12/15V 以及 USART2(左线)或 USART3(右线),均可承载 UART、PWM、PPM、iBUS 输入,左线 USART2 还能当 12bit ADC 用,右线容忍 5V 电平、左线不能。

⚠️ 线束里的红导线是 15V 电源,接 USB-TTL 模块或任何 5V 逻辑设备前务必避开,否则会直接烧毁模块甚至主控。

引脚认对了,下一步刷写才能不烧板。

阶段二:解锁 MCU 读保护,烧入编译好的 .bin

完成标准:ST-Link Utility 里 Program & Verify 后出现 "Verification OK"。

原厂主板大多开启了读保护(芯片出厂锁),不解除的话 ST-Link 只报 "Can not read memory",拒绝任何写入:

操作分三步:在 STM32 ST-Link Utility 里Target → Option Bytes...,把 Read Out Protection 改为 Level 0 并 Apply(此步会自动全片擦除);再Target → Erase Chip清空原厂程序;最后Program & Verify,选编译产物.bin,起始地址保持0x08000000。

.bin从哪里来?两条路:直接从仓库 Actions 构建页下载现成产物,或本机编译:

pio run -e VARIANT_ADC # 指定变体编译,产物在 .pio/build/ 下

MDK-ARM/工程默认按 STM32F103xE 配置,如果你的芯片容量不同,需核对链接地址是否一致。刷写完成后板子即可上电,但接下来要告诉它"你打算怎么开车"。

阶段三:选对输入变体与 FOC 控制模式

完成标准:编译烧录目标变体后,转动输入设备,电机平顺正转、无抖动。

固件内置 10 种变体(输入方式的编译模板),在 platformio.ini 里启用对应环境即可:

变体输入方式典型场景
VARIANT_ADC/VARIANT_USART电位器 / 串口指令自制小车、Arduino 上位控制
VARIANT_NUNCHUKWii 手柄电动轮椅、搬运车
VARIANT_PPM/PWM/IBUSRC 遥控器遥控滑板、卡丁车
VARIANT_HOVERCAR刹车/油门双踏板踏板改造车

变体定了,再回 Inc/config.h 选控制模式:

  • VLT_MODE电压模式:恒定电压输出、响应最快,适合机器人和急停需求高的场景;
  • SPD_MODE转速模式:闭环锁住目标 rpm,抗负载扰动,适合定速巡航;
  • TRQ_MODE扭矩模式:以扭矩为目标,目标为 0 时电机自由滑行,人坐在车上代步首选,HOVERCAR / SKATEBOARD 变体也默认走这条路。

若电机转向反了,打开INVERT_L_DIRECTION/INVERT_R_DIRECTION修正即可。变体与模式都对之后,最后一步是给它定下安全边界。

阶段四:限流、限速,并决定要不要弱磁提速

完成标准:满油门无过流报警,电机噪声明显降低、扭矩线性。

Inc/config.h里三个参数最常用:

  • I_MOT_MAX:单电机最大电流(安培),默认 15A,直接决定扭矩上限,按电机与电池承受范围设,别盲目拉满;
  • N_MOT_MAX:最大转速(rpm),默认 1000,是限速保护的最后一道防线;
  • FIELD_WEAK_ENA:弱磁控制(注入反向磁场分量,用一点效率换更高转速上限),默认 0 关闭。

开启后,弱磁量在FIELD_WEAK_LO与FIELD_WEAK_HI之间从 0 线性升到FIELD_WEAK_MAX。电机参数集在 Src/BLDC_controller_data.c 里,用定点数表示,仓库已内置一套校准好的默认值,开箱即可用。

⚠️ 重新校准弱磁有风险:电机可能转得极快,功耗飙升并触发 BMS 过压保护,务必在架起车轮的安全环境里测试。

验证与调优:怎么判断 FOC 真的生效了

架起车轮通电后做三项检查:

  • 缓慢加大输入:电机应无"咔咔"声地平滑升速,这是与换相控制最直观的区别;
  • 打开DEBUG_SERIAL_USART2或DEBUG_SERIAL_USART3(115200 波特率),终端里能实时看到输入值、指令值与电池电压;注意调试串口和输入设备在同一条线上互斥,只能二选一;
  • 松开输入:扭矩模式应自由滑行、电压/转速模式应减速,行为不符说明模式选错了。

三个常调参数的方向:I_MOT_MAX宁小勿大,多数原厂电机 10–15A 起步;N_MOT_MAX比目标极速至少留一成余量;弱磁区间先抬高FIELD_WEAK_HI再逐步下移FIELD_WEAK_LO,一次只动一格。另外若开机后异常自动关机,多半是电池电压标定偏差,按config.h中的 BAT 校准流程重新标定即可。

💡 变体、模式、串口输出都集中在Inc/config.h,改动后必须重新编译烧录才会生效。

故障速查:刷写后的高频翻车点

现象可能原因处理方式
ST-Link 报 "Can not read memory"读保护未解除Option Bytes 里先把 RDP 设为 Level 0,再擦除烧录
电机抖动或尖叫控制方式或电机参数不匹配确认 FOC 模式已启用,核对Src/BLDC_controller_data.c参数
输入无响应变体选错或接错线缆核对变体与输入设备,确认接的是左/右哪条传感器线
松油门不滑行不在扭矩模式或没开电刹ELECTRIC_BRAKE_ENABLE仅在 TRQ_MODE 下生效,两者需配套

进阶入口:三个能改变驾驶手感的开关

  • 巡航定速:在 Inc/config.h 打开CRUISE_CONTROL_SUPPORT,用侧板按键或刹车踏板激活与退出;
  • 电制动:扭矩模式下启用ELECTRIC_BRAKE_ENABLE,松油门自动缓刹,强度由ELECTRIC_BRAKE_MAX调节;
  • 串口上位控制:Arduino/hoverserial/hoverserial.ino 是现成示例,把它改一改就是接入 ROS 等平台的起点。

想彻底弄懂电流环与坐标变换为什么能让电机"转得丝滑",直接读 Src/BLDC_controller.c 的核心源码,配合 Src/BLDC_controller_data.c 的定点参数逐段对照——当你能解释清原理,你的下一台车就没有玄学了。

【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询