首页 / 资讯中心 / 文章详情

把普通平衡车主板刷成 FOC 固件:从解锁芯片到调参上路的完整实践

把普通平衡车主板刷成 FOC 固件:从解锁芯片到调参上路的完整实践 ★ FEATURED ARTICLE
把普通平衡车主板刷成 FOC 固件从解锁芯片到调参上路的完整实践【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC把平衡车轮子架起来手动拨一下电机嗡地发出一声刺耳的尖啸松掉油门轮子还能滑出去老远遇到缓坡电机像在喘气一样使不上劲。如果这些你都熟悉过问题大概率不在硬件——原厂固件只是按固定顺序给三相线圈通电这种控制方式叫换相Commutation电流粗糙噪声、发热和能量浪费都是它的副产品。hoverboard-firmware-hack-FOC项目把一套完整的磁场定向控制Field Oriented ControlFOC算法装进了这块不起眼的平衡车主板。FOC 会把电机电流拆成建磁场和出扭矩两个分量分别做闭环控制效果是电机运行更安静、扭矩输出更平滑、能耗更低还能通过弱磁Field Weakening进一步抬高极速上限。对 DIY 玩家来说一块几十块钱的二手平衡车主板就此变成了性能接近专用驱动板的 FOC 电机控制器。认出主板 → 解锁芯片 → 烧录固件 → 选择控制变体 → 架轮验证阶段一 · 动手前确认主板型号与接口做完这一步你应该能准确说出板上 SWD 刷写口的位置、两根传感器线缆各自的用途并且手边已经准备好了 ST-Link V2。芯片型号。绝大多数平衡车主板的核心是 STM32F103RCT632KB Flash 的 Cortex-M3少数板子用的是兼容的 GD32F103RCT6两种都被本固件支持。对照下面这张引脚图确认一下你的板子SWD 刷写口。固件必须通过 SWDSerial Wire Debug芯片厂商预留的两线调试/烧录接口写入需要一只 ST-Link V2 下载器接线关系如下ST-Link 引脚主板对应引脚SWDIOPA14SWCLKPA13GNDGND3.3V3.3V可选下载器自带供电时可不接两根传感器线缆。主板引出两根 4 针线原本连接左右侧板左线带出 GND、15V 和 USART2右线带出 GND、12V 和 USART3。未来接串口调试、RC 接收机、踏板电位器全靠它们。⚠️ 线缆里的红色导线是 15V 电源接串口模块或传感器时务必只动信号线和 GND碰了红线基本就是一场冒烟事故。另外左线USART2不耐 5V接 USB 转 TTL 模块要用 3.3V 电平。准备工具与代码。刷写端安装 STM32 ST-Link UtilityST 官方免费烧录软件编译端三选一PlatformIO推荐仓库自带platformio.ini、KeilMDK-ARM/目录下有现成工程、或命令行make。把仓库克隆到本地git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC硬件摸清、工具就位接下来进入真正动刀的部分。阶段二 · 核心链路解除读保护并烧录 FOC 固件做完这一步ST-Link Utility 里应该能看到一片全 F 的空白 Flash随后新固件校验通过Verification OK。原厂主板几乎都开了读保护Read Out ProtectionRDP处于保护状态下连读内存都会被拒绝不解除就寸步难行。整个流程三步解除读保护ST-Link 连上板子后在 ST-Link Utility 中依次点Target→Option Bytes...把 Read Out Protection 改为Level 0点Apply应用擦除芯片Target→Erase Chip把原厂程序彻底清空之后内存视图应显示全为 0xFFFFFFFF写入固件点Program Verify选择编译好的.bin文件起始地址保持0x08000000不动等待校验通过。固件从哪来两条路都行直接下载项目 Actions 构建页产出的现成产物下图所示的 build 包解压后按变体各有一份.bin或者本地编译——PlatformIO 用户在platformio.ini中把想用的变体那行default_envs取消注释Keil 用户则在Target下拉菜单里选变体然后正常编译即可。MDK-ARM/工程默认按 STM32F103xE256KB 容量档位配置如果你手上是更小容量的芯片烧录地址和链接脚本STM32F103RCTx_FLASH.ld需要对应调整别盲目整片覆盖。固件进去只是能跑接下来要让固件认识你的输入设备。阶段三 · 配置变体与调参验证做完这一步你选的输入设备电位器、串口、踏板等能动电机且电机加减速平滑、无过流报警方向与你的意图一致。选变体。固件内置 10 种输入变体决定谁说了算变体输入方式典型场景VARIANT_ADC两个电位器自制遥控、电动小车VARIANT_USART串口指令Arduino/单片机控制VARIANT_NUNCHUKWii 手柄电动轮椅、搬运车VARIANT_PPM / PWM / IBUSRC 遥控器遥控滑板、卡丁车VARIANT_HOVERCAR刹车/油门踏板踏板改造车如 hovercarVARIANT_HOVERBOARD保留侧板通信原车姿态控制平衡功能待完善选好后重新编译烧录即可。如果电机转向和你的意图相反在Inc/config.h里打开INVERT_L_DIRECTION/INVERT_R_DIRECTION修正。选控制模式。Inc/config.h里CTRL_TYP_SEL决定用哪种控制算法换相 / 正弦波 / FOC默认已是 FOCFOC 下再由CTRL_MOD_REQ选细分模式模式行为适合谁VLT_MODE电压直接给电压响应最快机器人、快响应场景SPD_MODE转速闭环跟踪转速目标抗负载扰动定速巡航类应用TRQ_MODE扭矩闭环跟踪扭矩指令为 0 时电机自由滑行人坐上去代步的多数场景再核对两个保护参数I_MOT_MAX单电机最大电流默认 15A直接决定扭矩上限和N_MOT_MAX最大转速默认 1000rpm限速的最后一道防线。想更快开弱磁。把FIELD_WEAK_ENA置 1 后控制器会从FIELD_WEAK_LO到FIELD_WEAK_HI之间线性注入反向 D 轴电流用一点效率换更高的转速上限三种典型标定曲线如下⚠️ 弱磁调参有风险电机可能转速飙升、功耗剧增并触发电池过压保护。一定在架起车轮的安全环境里测试FIELD_WEAK_HI不要超过 1500。验证。调试时建议在config.h里打开DEBUG_SERIAL_USART2或DEBUG_SERIAL_USART3用 115200 波特率的串口终端能实时看到输入值、左右指令值和电池电压多数不听话的问题一眼就能定位。最终验收架起车轮给指令电机应平滑加减速、无异响、无过流报警。排错锦囊现象可能原因处理方法ST-Link 报 Can not read memory读保护未解除回阶段二Option Bytes 设为 Level 0 → Apply → Erase Chip电机抖动或尖叫控制参数与电机不匹配核对极对数、电流限制参考Src/BLDC_controller_data.c校准输入设备无响应变体选错或线缆接错核对所选变体对应的左右线缆USART2/USART3与信号定义开机后很快自动关机电池电压校准不准按Inc/config.h中电池校准流程用万用表实测值重标BAT_CALIB参数只朝一个方向转电机方向定义相反打开INVERT_L_DIRECTION/INVERT_R_DIRECTION重新烧录安全红线刷写完第一次通电务必架起车轮人不要坐在车上永远不碰线缆中的 15V 红色电源导线串口模块只接信号线与 GND开弱磁前确认电机与电池的功率余量并在无负载环境下测试I_MOT_MAX不得超过电机与电池的真实承受能力别拿参数上限当安全上限左线USART2不是 5V 耐受串口调试一律使用 3.3V 电平模块想继续深入Arduino/hoverserial/里有现成的串口控制示例是接入 Arduino 或其他平台的起点想搞懂 FOC 为什么这么平滑顺着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),仅供参考
阅读完成 · 觉得有帮助?
咨询建站