资讯详情

手把手教程:从零到平衡车 FOC 电机控制,一次讲透 hoverboard-firmware-hack-FOC

📅 2026/10/23 4:36:41 | 华诺云谱 👁 阅读
手把手教程:从零到平衡车 FOC 电机控制,一次讲透 hoverboard-firmware-hack-FOC
手把手教程从零到平衡车 FOC 电机控制一次讲透 hoverboard-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 电机控制——从烧录、验证到调参全部按仓库真实内容来讲不掺水分。为什么原装轮子那么吵60° 一拍的开关先看一个反常识的事实原装固件其实并不控制电机电流它只是在切开关。无刷电机被六步换相驱动时电流每转过 60° 就整体换道一次霍尔传感器每 60° 跳变一次。你可以把它想象成六盏灯每次只亮一整组、熄灭另一整组——房间忽明忽暗电机就是被这样拽着走的抖动、噪音和高损耗都是这么来的。而 FOCField Oriented Control场定向控制的思路完全不同它实时追踪转子位置让定子磁场像平滑旋转的磁针一样连续转动扭矩输出从一推一推变成持续丝滑。这就是刷完固件后轮子明显变安静、变省电的原因。不只是又一份固件而是主板上的电机控制工具箱这个项目对平衡车固件的重构不是换个 Logo 或加个灯效而是在原装硬件STM32F103RCT6部分板子是 GD32F103RCT6均被支持上装了一套完整的电机控制底座三种控制类型可选Commutation保留原厂换相作对比、Sinusoidal、FOC通过CTRL_TYP_SEL切换FOC 下再分三种工作模式VOLTAGE快速响应、SPEED闭环恒速、TORQUE扭矩指令松手即滑行由CTRL_MOD_REQ选择十种输入变体电位器、串口、Wii Nunchuk、PPM/PWM/iBUS 遥控、踏板车HOVERCAR、滑板SKATEBOARD等一个仓库全收串口调试控制台GET/SET/WATCH/SAVE 命令参数可写进 EEPROM 持久保存内置保护单电机限流、直流母线限流超过即切断 PWM 输出、电池低电分级报警、板温监控社区用它改出的东西从踏板车到轮椅都有但这都只是同一套控制底座的输入变体。三步跑起来硬件清单与 5 分钟烧录准备这些东西一块平衡车主控板STM32F103RCT6 / GD32F103RCT6 均可一个 ST-Link 烧录器10S 平衡车电池固件默认按 10 串配置BAT_CELLS左右两条 sideboard 线缆——左边接 USART2右边接 USART3。注意左边的线不耐 5V右边那条可以烧录三步走拿到代码git clone https://link.gitcode.com/i/50bcdfe24492ab3570f19116b59383a3选变体再编译。PlatformIO 用户在 platformio.ini 里把default_envs指向VARIANT_ADC双电位器最适合第一次验证命令行用户直接make -e VARIANTVARIANT_ADCKeil 用户则打开 MDK-ARM 工程切换 Target烧录PlatformIO 走 stlink 直接上传Makefile 用户是make flash底层是st-flash写到 0x8000000。个别芯片有读保护时先跑make unlock用 OpenOCD 执行 STM32F1 解锁再烧成功的标志是这样的按住电源键上电松手后听到开机旋律、LED 亮起——但轮子不会转。这是刻意设计bldc.c里enable初始为 0电机默认禁用安全优先。接着用 3.3V 串口适配器接右边线缆115200 波特率你会看到in1:… in2:… cmdL:0 cmdR:0 BatV:…的调试流。转动电位器cmdL/cmdR跟着变再给电机上电轮子平滑转起来——到这里FOC 就已经在你板子上了。FOC 一句话说清舵手不再猛拉舵把电机想象成一条船。换相控制是舵手每 60° 猛拉一次舵FOC 是舵手随时知道舵角只做细微修正。知道舵角这件事在这个仓库里由两样东西完成霍尔传感器给出转子粗位置。左电机接 PB5/PB6/PB7右电机接 PC10/PC11/PC12代码里直接读 IDR 寄存器取三相状态定时器 TIM8 以 16kHz 触发 ADC 采样三相相电流DMA 搬运到adc_bufferDMA 中断里每 64µs 调一次BLDC_controller_step()跑完整控制步控制核心是 Simulink 模型生成的 C 代码Src/BLDC_controller.c 是算法本体Src/BLDC_controller_data.c 是查表数据正弦表、霍尔位置映射、控制器参数。因为这颗 Cortex-M3 没有 FPU所有参数都是定点数——例如16384实际表示1.0换算规则文件头注释里写得很清楚。作者已提供校准好的控制器你不碰BLDC_controller_data.c也能直接用。调参的正确顺序先看反馈再限幅最后碰弱磁第一步先验证反馈而不是急着改控制。开启DEBUG_SERIAL_PROTOCOL见 Inc/config.h 的串口调试段用串口控制台WATCH这些量SPDL/SPDR左右实测转速、LDC_CURR母线电流×100 显示、BATV校准后电池电压。实测转速跟着cmdL/cmdR走、电流读数随负载变化说明电流环和测速都可信后面才有调的根基。第二步设保护限幅。默认单电机I_MOT_MAX15A、N_MOT_MAX1000rpm、母线I_DC_MAX17A注释建议保持I_DC_MAX I_MOT_MAX 2A。第一次上车建议从低限幅开始确认行为正常再往上加。第三步调手感。四个参数决定脚感RATE加速斜率越小越肉、FILTER低通滤波越小越软、SPEED_COEFFICIENT和STEER_COEFFICIENT速度/转向增益16384 1.0不想要转向就置 0。HOVERCAR 变体还内置三档驾驶模式新手/进阶/高手启动时按踏板组合选择限流限速自动切换非常适合给新手骑车。第四步才是弱磁Field Weakening。默认关闭。开启后从FIELD_WEAK_LO默认 750线性爬到FIELD_WEAK_HI默认 1000达到FIELD_WEAK_MAX默认 5A。这是拿功率换极速的手段仓库注释明确警告电机可能转得非常快功耗激增可能触发 BMS 过压保护——务必悬空测试、人离远一点。仓库 docs 里还放了一张电机参数配置的参考图可以对照着理解每个参数在整条控制链里的位置想深入控制器内部README 提供了一个浏览器即可打开的 webviewSimulink 模型的在线版不用装 Matlab 就能看到模型结构和参数表定点参数换算可以用作者的工具 Fixed-Point Viewer。踩坑清单五个高频现象 → 原因 → 处理现象 1烧录后主板完全没反应上电无旋律。原因部分 STM32F1 芯片带读保护烧录器连得上但写不进去或者你烧到一半断电芯片进了保护状态。 处理先make unlockOpenOCD 执行stm32f1x unlock解锁后重新烧录。现象 2插上 5V USB 转串口板子直接烧了/不工作。原因左边 sideboard 线缆的 USART2不耐 5V而且线缆红芯是 15V 电源接错一芯全剧终。 处理调试一律用右边线缆USART3 耐 5V或者老老实实用 3.3V 电平转换器接线时只碰 GND 和 RX/TX红芯别碰。现象 3轮子转但方向是反的。原因电机线序或霍尔相位与固件假设不一致。 处理在 Inc/config.h 对应变体段解开INVERT_R_DIRECTION/INVERT_L_DIRECTION的注释重编重烧。现象 4动电位器轮子乱抖或输入跳变。原因ADC 上下限没校准噪声把输入顶出范围。 处理按住电源键超过 5 秒听到提示音后松开把两个电位器反复打到最小、最大回中位等待确认校准值会写进 Flash 持久保存。之后也可通过串口SET IN1_MIN/IN1_MAX微调。现象 5开了弱磁后 BMS 报过压、耗电飞快。原因这是弱磁的正常代价不是故障——但意味着你的标定太激进。 处理调低FIELD_WEAK_MAX抬高FIELD_WEAK_LO/HI让弱磁更晚介入始终在悬空状态下验证极速行为。它能用在哪不能碰哪直接上手没问题的人群用过 ST-Link、看得懂 C、理解 UART/ADC 基本概念的嵌入式入门者。三步流程照着走第一次就能听到开机旋律。建议先补前置知识的人想自己动电流环——补定点数和小信号 PID 基础再进BLDC_controller_data.c想改控制架构——先看 Simulink 模型 webview直接改生成代码很容易改乱。明确不兼容 / 做不到的AT32F403RCT6 主控的平衡车需另一个社区分支本仓库不覆盖splitboard主控被拆成两块板的板型VARIANT_HOVERBOARD的双边板通信已实现但平衡控制自平衡在仓库中标注为 TODO尚未落地芯片无 FPU、16kHz 控制周期已贴近这颗 F103 的极限别指望再往上提采样率硬件资料都齐反推原理图在 docs/20150722_hoverboard_sch.pdf芯片数据手册和参考手册在 docs/literature 里。写在最后一块 STM32F103、两个轮子、一套 16kHz 跑满的 FOC——这就是把抖动嗡嗡的原装轮子变成平滑省电驱动的全部代价一个 ST-Link和一个愿意读完本文的夜晚。下一步入口就在仓库里硬件从 docs/pictures/mainboard_pinout.png 开始认参数从 Inc/config.h 开始动控制核心从 Src/BLDC_controller.c 开始读。【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑