平衡车电机吵、起步冲?换掉原厂固件上FOC,hoverboard-firmware-hack-FOC 一次刷写搞定
平衡车电机吵、起步冲换掉原厂固件上FOChoverboard-firmware-hack-FOC 一次刷写搞定【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC起步一冲一冲、电机嗡嗡响、松了油门还滑出去老远hoverboard-firmware-hack-FOC 把 FOC 固件刷进原厂主板这次平衡车固件刷写一次搞定电机马上变得安静又顺滑。它到底比原厂强在哪平衡车 FOC 固件控制原理一句话FOC磁场定向控制把电机电流拆成建磁力和出扭矩两份分别闭环控制相当于给电机装了一个能精确踩下去的油门而不是原厂那种档把式切换。原厂固件用的是换相Commutation控制按固定顺序给三相线圈通电简单粗暴电流粗糙、噪声和发热大起步自然一顿一顿。正弦波控制好一档电流波形变成正弦但扭矩仍不可控FOC 更进一步——先估计转子位置再沿正确角度给电流同样几安培能发出更大扭矩噪声更小、能耗更低还能靠弱磁把速度上限抬高。驱动方式脚感耗电速度上限一句话概括换相一般偏高有限原厂默认电流粗糙、噪音大正弦波较顺较低一般升级跳板没有精确扭矩闭环FOC顺滑最低可再抬高电流双闭环安静省电支持弱磁电机参数集中在 Src/BLDC_controller_data.c官方已内置一套校准好的默认值大多数主板开箱即用想啃原理可以看 Src/BLDC_controller.c 里的完整实现。git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC动手前要备好什么STM32 平衡车刷写硬件清单与 SWD 接线先确认芯片绝大多数主板是 STM32F103RCT6部分是 GD32F103RCT6固件两者都支持。硬件清单就三样ST-Link V2刷写/调试工具USB 接电脑左右两条传感器 4 针线主板上现成的各含 GND、12/15V 和 USART2左线或 USART3右线后面接输入设备、串口调试全靠它们可选3.3V USB 转 TTL 模块只接串口调试时用。主板原理图等参考资料在 docs/ 目录。ST-Link 接主板右侧的 SWD 刷写口接线对照如下ST-Link 引脚主板接点SWDIOPA14SWCLKPA13GNDGND3.3V3.3V可选电流不超过 30mA⚠️ 传感器线里的红线是 15V 电源线。接串口调试或任何传感器时别碰它——15V 打进 USB 转 TTL 模块模块当场烧毁还可能拖垮主控。怎么把芯片变成可写状态并刷入固件ST-Link 刷写平衡车三步走原厂芯片开了读保护RDP直接写不进去。三步做完全程在 ST-Link Utility 里操作两分钟搞定。解除保护点Target → Option Bytes...把 Read Out Protection 改成 Level 0点 Apply。成功后芯片会自动清空一次进入可写状态。整片擦除点Target → Erase Chip等擦除完成提示。写入固件点Program Verify选中.bin文件起始地址保持0x08000000进度条跑完看到 Verification OK 就算成功。.bin从哪来两条路到项目的 Actions 构建页下载现成产物在 Artifacts 处下载或用 PlatformIO / Keil 本地编译MDK-ARM/下的 Keil 工程默认按 STM32F103xE 配置芯片容量不同烧录地址会略有差异。 ST-Link 报 Can not read memory 或根本连不上九成是 PA13 / PA14 接反了或没插紧先重新核对接线再怀疑芯片。怎么让固件适配你的玩法平衡车 FOC 参数怎么调固件支持 10 种输入变体在 platformio.ini 或 Inc/config.h 里选一种一次只能开一个变体输入来源典型场景VARIANT_ADC两个电位器自制遥控、电动小车VARIANT_USART串口指令Arduino 等单片机二次开发参考 Arduino/hoverserial/ 示例VARIANT_NUNCHUKWii 手柄电动轮椅一类单手操作VARIANT_PPM/VARIANT_PWM/VARIANT_IBUSRC 遥控器遥控滑板、卡丁车VARIANT_HOVERCAR刹车油门踏板踏板改造车原地双击刹车可倒车VARIANT_HOVERBOARD原侧板通信恢复原车姿态控制平衡算法还在完善中选好变体重编刷入转一下输入设备电机应平滑加减速方向反了就在 Inc/config.h 里打开INVERT_L_DIRECTION/INVERT_R_DIRECTION反转。FOC 三个关键参数各管一件事CTRL_TYP_SEL控制方式。COM_CTRL/SIN_CTRL/FOC_CTRL三档默认 FOCFOC 下再用CTRL_MOD_REQ选细分模式——VLT_MODE电压模式响应快适合机器人、SPD_MODE转速模式定速巡航、TRQ_MODE扭矩模式松油门即滑行适合载人代步I_MOT_MAX单电机电流上限默认 15A直接定死扭矩天花板别超过电机和电池的承受范围N_MOT_MAX电机转速上限默认 1000rpm限速保护的关键防线。想再快一点就开弱磁Field Weakening给电机注入反向磁场分量拿一点效率换更高的转速上限。FIELD_WEAK_ENA默认 0设 1 启用FIELD_WEAK_MAX定最大注入多少反向电流FIELD_WEAK_LO/FIELD_WEAK_HI定从哪段输入区间开始介入、到多少拉满⚠️ 调弱磁时车轮会转得飞快功耗大幅上升可能触发电池 BMS 过压保护。测试前务必把车轮架离地面。刷完不转、异响怎么办故障排查与串口调试刷完的毛病基本逃不出这四类对照表格处理现象大概率原因怎么处理ST-Link 报 Can not read memory读保护没解除按上一节走解 RDP → 整片擦除 → 重新写入电机抖动或尖叫控制方式或电流参数与电机不匹配核对CTRL_TYP_SEL和I_MOT_MAX对照 Src/BLDC_controller_data.c 里的校准参数输入无响应变体选错或插错线缆核对变体对应线缆USART2 走左线USART3 走右线开机后自动关机电池电压校准漂移按 Inc/config.h 注释重新标定BAT_CALIB_ADC/BAT_CALIB_REAL_VOLTAGE四样都对不上就开串口调试取消注释DEBUG_SERIAL_USART2左线或DEBUG_SERIAL_USART3右线串口终端波特率设 115200能实时看到输入值 in1/in2、输出指令 cmdL/cmdR、电池电压和芯片温度多数问题一眼定位。刷完第一次通电一定架起车轮再试。调弱磁或电流参数前先评估电机和电池的余量。串口、传感器接线永远避开 15V 红线。跑顺之后还有两个方向可以继续玩打开CRUISE_CONTROL_SUPPORT配合侧板按钮做巡航定速松油门自动保持当前速度在扭矩模式下打开ELECTRIC_BRAKE_ENABLE松油门自动缓刹再也不会滑出去十几米。【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考