hoverboard-firmware-hack-FOC:开源平衡车FOC固件深度拆解

发布时间:2026/10/23 4:08:59
hoverboard-firmware-hack-FOC:开源平衡车FOC固件深度拆解 hoverboard-firmware-hack-FOC开源平衡车FOC固件深度拆解【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC原厂平衡车固件用六步换相法驱动电机噪音听得见、震动摸得着最高转速还被电机自身的反电动势死死锁住。hoverboard-firmware-hack-FOC 给它换上了 FOCField Oriented Control——你可以理解成给电机装了一个智能方向盘实时知道转子在哪里、该用多大力气。换装之后噪音和震动明显下降扭矩输出变平滑还能用弱磁突破速度上限。这是什么、怎么跑起来、还能怎么玩一句话全讲清。一眼看懂模块能干什么FOC 电机控制驱动两只轮毂电机换相变场导向噪音更低、扭矩更顺、效率更高三种控制类型换相 / 正弦 / FOC 一行切换FOC 内还有电压、速度、扭矩三种模式十种输入变体电位器、串口、Wii Nunchuk、遥控器PPM / PWM / iBUS、踏板、滑板等按需选多重保护过流、超速、输入超时、电池欠压、过热、闲置断电全部内置参数直接可调行为开关在config.h电机参数在BLDC_controller_data.c 平衡车固件从零编译到烧录硬件清单平衡车主控板主控芯片是 STM32F103RCT6部分板子用 GD32F103RCT6固件同样支持ST-Link V2 编程器通过 SWD 接口把固件写进芯片3.3V USB 串口适配器接传感器线缆115200 波特率看调试信息单轮测试台电机真的会转轮子架起来测别用手扶编译克隆代码git clone https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC.git cd hoverboard-firmware-hack-FOC选一个变体编译。以电位器变体 VARIANT_ADC 为例用 PlatformIOpio run -e VARIANT_ADC产物在.pio/build目录下的hover.bin。不想装 PlatformIO 的话用 arm-none-eabi-gcc 工具链加 make 也行make VARIANTVARIANT_ADC产物是build/hover.bin。烧录ST-Link 接到主控板的 SWD 引脚SWDIO、SWCLK、GND然后pio run -e VARIANT_ADC -t upload或者走 make 路线make VARIANTVARIANT_ADC flash。如果芯片被读保护锁住先跑一次make unlock它通过 OpenOCD 清除保护。验证成功长什么样上电后蜂鸣器响两声短音说明电机已使能串口适配器把 GND 和 RX 接到传感器线缆千万别碰红线15V 会烧板子115200 波特率打开终端能看到in1:345 in2:1337 cmdL:0 cmdR:0 BatADC:0 BatV:0 Temp:0这样的数据持续滚动VARIANT_ADC 变体长按电源键 5 秒触发电位器自动校准然后把旋钮来回转几遍保存之后轻拨旋钮轮子平滑加速噪音和原厂的嗡嗡感完全两回事用 ST-Link Utility 查看的话内存地址 0x08000000 处应能看到 Device ID 0x410这就是 STM32F103 底层逻辑FOC控制原理是怎么跑的从六步推到连续转FOC 做的事情一句话概括不再一圈推六把而是 16 kHz 地实时算出转子在哪、该往哪推、推多大力。换相法像推旋转木马一圈推六次每次都用得上力气所以吵、所以抖FOC 像给转起来的小风扇持续顺着方向轻轻助推转动就丝滑了。关键前提是每一刻都知道转子位置。照片里轮毂内侧那块小绿板就是位置传感器配合 ADC 实时采样的相电流控制器在 DMA 中断里每 16 kHz 跑一个完整控制周期。三种控制模式电压、速度、扭矩同一套 FOC给三个不同的目标由Inc/config.h里的CTRL_MOD_REQ选择VOLTAGE 模式油门踩多深就是多大力开环、响应快适合机器人场景SPEED 模式定速巡航死守目标 RPM上坡、带载自动补偿TORQUE 模式你出多大力速度车自己定目标为 0 时车轮自由滑行载人骑行场景首选注意SPEED 和 TORQUE 这两种闭环模式只有 FOC 控制类型才有。弱磁控制速度上限怎么突破转速越高电机自身反电动势越大电池电压推不动了这就是天然速度上限。打个比方水流越快管子里的顶水压力越大水龙头再怎么拧也加不动了把管路稍微收细一点削弱磁场同样的水压反而能把轮子推得更快。固件里弱磁默认关闭把FIELD_WEAK_ENA设为 1 后弱磁电流会在FIELD_WEAK_LO到FIELD_WEAK_HI两个门槛之间从 0 线性升到FIELD_WEAK_MAX。⚠️ 重新校准弱磁后电机可能转得非常快还会触发电池过压保护动手前先把安全做足。️ 平衡车FOC参数配置最常调的五个参数参数集中在两个文件Inc/config.h管行为开关和限值Src/BLDC_controller_data.c管电机模型参数全部是定点数作者配套了 Fixed-Point Viewer 工具帮忙换算。想标定轮径、齿比、电流这些电机参数项目文档里放了一份标定结果示例可以参考最常动的五个**I_MOT_MAX**默认 15 A单电机电流上限。调大扭矩更猛、加速更快但电机发热和电池负担都上来调小更温和。第一次上手可以从 10 A 起步。**N_MOT_MAX**默认 1000 rpm最高转速上限。调大更快、调小更安全。第一次试车 300 rpm 足够HOVERCAR 的新手档甚至锁到 30。**SPEED_COEFFICIENT**默认 16384即 1.0油门灵敏度。调大轻轻一点就是满速请求调小要使劲踩才有劲。**FIELD_WEAK_MAX**默认 5 A弱磁电流上限越大速度上限越高。作者用 10 寸轮测到过 10 A没有把握先别动它。**TIMEOUT**默认 20连续多少帧错误或缺失输入后紧急停机。调小保护反应更快调大容忍串口抖动。弱磁校准就是画三条线的事多快开始介入FIELD_WEAK_LO、多快到满值FIELD_WEAK_HI、满值推多狠FIELD_WEAK_MAX。如果你只改一个参数把N_MOT_MAX调低到 300。它直接封住最坏情况的速度玩熟了再逐步加回来。 安全红线所有 FOC 模式都内置这套保护不是可选功能保护项触发条件系统响应相电流过流单机电流超过I_MOT_MAX15 A控制器限制输出钳住电流母线过流DC 母线电流超过I_DC_MAX17 A立即关断 PWM电流斩波切断电机供电超速转速超过N_MOT_MAX速度环压住输出输入超时连续 20 帧错误/缺失输入紧急停机蜂鸣器报警哔声数量区分 ADC、串口、通用超时电池欠压单芯电压低于 3.5 V / 3.37 V蜂鸣器分级警告直接断电主板过热芯片温度超阈值需先校准才允许启用警告蜂鸣或断电闲置超时8 分钟无操作自动断电这些保护不是可选项是底线。母线过流保护直接跑在 16 kHz 的硬件中断里没有任何商量余地不要因为保护碍事就去注释掉任何一条。测试电机时离轮子远一点手别去碰。 能玩出什么花样踏板 HovercarVARIANT_HOVERCAR最经典的玩法。两只踏板管加速和刹车上电时用踏板组合选档位——新手档锁 30 rpm 和 4 A适合第一次上车静止时双击刹车踏板还能挂倒挡。电动滑板VARIANT_SKATEBOARD默认 TORQUE 模式右线缆接遥控器 PWM 信号松开油门车轮自由滑行再开ELECTRIC_BRAKE_ENABLE滑行就变成恒定电刹停车更听话。串口遥控VARIANT_USART115200 波特率串口发指令就能控制左右轮仓库里带了 Arduino 示例工程Arduino/hoverserial/做电动躺椅、机械臂这类自建车很合适。定速巡航打开CRUISE_CONTROL_SUPPORT再给侧板接一个按钮按一下锁定当前速度松脚不减速长途巡航省力。 后续演进VARIANT_HOVERBOARD 的平衡控制balance controller在配置里还标着 TODO两轮站立骑行是社区最期待的功能霍尔里程计ENABLE_ODOMETRY已预留开关打开后串口会输出左右轮转数计数ELECTRIC_BRAKE_ENABLE和STANDSTILL_HOLD_ENABLE是两个现成的扩展开关一个把滑行换成电刹一个让车在停稳后原地锁住改一行 config.h你的电机就多一种性格。【免费下载链接】hoverboard-firmware-hack-FOCWith Field Oriented Control (FOC)项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考