hoverboard-firmware-hack-FOC 刷写完整指南把平衡车主板升级成磁场定向控制【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC给自制代步车接线那天电机一起转就发出嗡嗡的啸叫起步一抽一抽电量掉得飞快——罪魁祸首不是电机而是原厂固件最基础的换相Commutation驱动。这个项目 hoverboard-firmware-hack-FOC 做的事很直接把磁场定向控制FOC算法塞进平衡车主板的 STM32 芯片里让电流按磁力分量 扭矩分量两路闭环输出换来更低的噪声、更平滑的扭矩和更高的效率还能靠弱磁突破速度上限。换相驱动 vs FOC到底差在哪原厂逻辑相当于给三相线圈排了一个固定的通电顺序像老式电风扇的三档开关只有通/断档位之间硬切换电流毛刺大、铜损高。FOC 则更像调光器加闭环稳压器它实时算出转子位置把电流精确拆成正交的两路你可以从 0% 到 100% 无级调节扭矩电压或负载波动时控制器会自动补偿。对比项原厂换相Commutation正弦波SinusoidalFOC平顺度一般切换有冲击较好优秀扭矩连续效率一般较好优秀弱磁提速不支持需手动相移角支持可配上限松油门滑行自由滑行自由滑行扭矩模式下可选电子刹车定速巡航无无支持切 SPD_MODE控制方式在 配置头文件 里由CTRL_TYP_SEL切换COM_CTRL/SIN_CTRL/FOC_CTRLFOC 下再由CTRL_MOD_REQ选电压、转速、扭矩三种细分模式。刷写前备齐硬件、工具与认知类别清单硬件平衡车主板STM32F103RCT6部分板子是 GD32F103RCT6两者均支持、ST-Link V2、3.3V USB 转 TTL 模块调试串口用、万用表标定电压用软件PlatformIO 命令行工具或 Keil仓库带MDK-ARM/工程或 arm-none-eabi-gcc 仓库 MakefileST-Link Utility解锁/烧录认知原厂芯片通常开了读保护必须解锁主板引出的两根 4 针线是接侧板的内含 GND、15V、USART2/3是未来所有输入设备的接口串口号波特率统一 115200把仓库拉到本地后面所有操作都在这里进行git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC认识主板与接线找准 SWD 口和两条传感器线预期结果能指着板子说出 SWD 刷写口在哪、两根传感器线各是什么接线一次到位不烧东西。对照上图标注三组接口是你唯一需要关心的SWD 刷写口图中 SWD Programming 位置供电限 3.3V 30mA maxST-Link 接法如下。ST-Link 引脚主板对应SWDIOPA13SWCLKPA14GNDGND3.3V3.3V可选供电限 30mA左侧传感器线缆蓝色长线对应 USART2引脚为 PA2TX/ADC1、PA3RX/ADC2/PPM/iBUS外加 GND 和 15V。注意USART2 不耐 5V接 3.3V TTL 模块才不会出事。右侧传感器线缆短线对应 USART3引脚为 PB10TX/SCL、PB11RX/SDA这条线 5V 容忍还能当 I2C 用。⚠️ 两根线缆里的红色线是 15V 电源调试串口或接任何外设时千万不要碰它——接上 USB 转 TTL 的瞬间模块和主板都会直接报废配置注释 里反复强调了这点。解锁芯片读保护并写入 FOC 固件预期结果ST-Link Utility 能连上芯片Verification OK出现在屏幕上。解除读保护ST-Link Utility 中打开Target → Option Bytes...把 Read Out Protection 调到 Level 0 并 Apply。这一步会触发全片擦除属于正常现象。擦除芯片执行Target → Erase Chip把原厂程序彻底清空。写入固件点Program Verify选择编译好的.bin起始地址保持0x08000000等 Verification OK。固件怎么来两条路去项目的 CI 构建页面直接下载现成.bin示意如下或本地自己编译。本地编译用 PlatformIO 最省事在 构建配置 顶部解开你想要变体的注释例如default_envs VARIANT_ADC然后pio run # 编译产物在 build 目录 pio run -t upload # 通过 ST-Link 写入命令行党可以走仓库自带 Makefile需要arm-none-eabi-gcc和st-flashmake -e VARIANTVARIANT_ADC # 指定变体编译 make flash # 等价于 st-flash write 到 0x8000000 make unlock # 用 OpenOCD 解锁读保护免装 ST-Link Utility 烧录前确认芯片型号工程默认按 STM32F103xE128KB Flash配置GD32 同封装可直接通用若你的板子 Flash 容量不同链接脚本STM32F103RCTx_FLASH.ld需要相应核对。给固件匹配输入变体你的车怎么开就选哪个预期结果转动你的输入设备摇杆、电调、踏板电机平滑响应方向正确。固件内置 10 种输入变体README 里有完整说明。选型逻辑很简单——输入信号从哪来就选哪款变体输入方式适合场景VARIANT_ADC左线接两个电位器12bit ADC自制遥控、电动小车VARIANT_USART串口协议默认 USART3 右线Arduino/单片机、ROS 接入VARIANT_NUNCHUKWii 右线手柄I2C电动轮椅、单人代步车VARIANT_PPM/VARIANT_PWM/VARIANT_IBUS航模遥控PPM 求和 / PWM / FlySky iBUS遥控滑板、卡丁车VARIANT_HOVERCAR刹车 油门双踏板ADC踏板代步车VARIANT_HOVERBOARD保留双侧板通信原车结构平衡控制尚未实现VARIANT_TRANSPOTTER/VARIANT_SKATEBOARD游戏摇杆 / 航模 PWM对应改装形态选定后重新编译烧录即可。验证与修正打开调试串口Inc/config.h中启用DEBUG_SERIAL_USART2或DEBUG_SERIAL_USART3115200 波特率终端会持续滚动in1 / in2 / cmdL / cmdR / BatADC / BatV / TempADC / Temp一行数据——输入没变化先查in1/in2有输入但电机不动再查cmdL/cmdR。方向反了就打开INVERT_L_DIRECTION/INVERT_R_DIRECTION在对应变体配置段内重新烧录。串口控制的现成示例在 Arduino 工程可以直接抄进自己的控制端。调 FOC 参数与弱磁让极速再往上走一格预期结果电流与转速上限贴合你的电机弱磁开启后极速提升全程无过流、无异响。核心参数都集中在 配置头文件 的 MOTOR CONTROL 段参数默认值含义CTRL_MOD_REQVLT_MODE电压模式响应快适合机器人SPD_MODE定速巡航TRQ_MODE扭矩闭环人驾驶体验最好松手可自由滑行I_MOT_MAX15 A单电机最大电流扭矩上限由此决定别超过电机与电池余量I_DC_MAX17 A母线直流限流换相/正弦波模式生效经验值 I_MOT_MAX 2AN_MOT_MAX1000 rpm最高转速硬限制安全防线FIELD_WEAK_ENA0关闭弱磁总开关电机本体的标定参数极对数、绕组电感等定长定点数存储在 Src/BLDC_controller_data.c官方已给好一套校准值绝大多数主板开箱即用想深挖原理可对照 FOC 控制器源码。想突破极速时打开弱磁FIELD_WEAK_ENA置 1控制器会在输入目标从FIELD_WEAK_LO默认 750到FIELD_WEAK_HI默认 1000之间线性叠加一路反向 d 轴电流最高到FIELD_WEAK_MAX默认 5A作者实测 10A 可跑在 10 寸轮上。正弦波模式则对应PHASE_ADV_MAX默认 25°。三种典型的斜率取法⚠️ 弱磁是危险参数电机可能转得极快、功耗骤增还会触发电池 BMS 的过压保护。务必把车轮架起来、人离远点小步上调FIELD_WEAK_MAX验证。刷完不转按这张表排查现象可能原因处理ST-Link 报 Can not read memory / 无法连接读保护未解除先按上节把 RDP 降到 Level 0 再 Erase Chip电机抖动、尖叫电机参数不匹配极对数/电流/电感核对 BLDC_controller_data.c参考官方校准表微调输入完全无响应变体选错或接错线缆对照变体注释确认左线USART2/右线USART3并检查 TX/RX 是否交叉方向反了电机安装方向打开INVERT_L_DIRECTION/INVERT_R_DIRECTION一开机就掉电关机电池电压标定偏差看调试输出里BatADC第 5 项写入BAT_CALIB_ADC万用表实测电压 ×100 写入BAT_CALIB_REAL_VOLTAGE再核对BatV第 6 项电压 ×100串口输出乱码波特率错或 TX/RX 直连统一 115200TTL 模块 TX 对板子 RX、RX 对 TX只用 GND 数据两根线左线接 5V 设备后串口挂掉USART2 不耐 5V换 3.3V 电平的模块或改用右线 USART3安全清单与进阶玩法第一次通电的三个必须车轮架起、人站在 1 米外、手边有电源开关。改弱磁参数前算好电机与电池余量接串口永远绕开红色 15V 线调试串口和输入设备若共用一条线缆编译期就会报#error配置里有成对的互斥检查照提示改宏即可。刷好之后的可玩性其实才刚打开定速巡航启用CRUISE_CONTROL_SUPPORT加SUPPORT_BUTTONS_LEFT/RIGHT按键切入后自动切到SPD_MODE锁速再松油门也不会溜。电子刹车扭矩模式下启用ELECTRIC_BRAKE_ENABLE用ELECTRIC_BRAKE_MAX/ELECTRIC_BRAKE_THRES设定刹车力度松油门即缓刹下坡更稳。静态驻车STANDSTILL_HOLD_ENABLE让停稳后电机咬住位置斜坡不打滑。踏板代步车切到VARIANT_HOVERCAR双踏板控制油门刹车停稳时双击刹车踏板倒车MULTI_MODE_DRIVE还能用踏板组合在开机时选新手/进阶/老手三档电流与转速逐级放开。从能转起来到每一安培都花在刀刃上这块主板已经被你彻底改写了规则——剩下的就是上路 【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?