GitHub项目源地址:https://github.com/EFeru/hoverboard-firmware-hack-FOC
翻译项目自诉:
该存储库为库存悬浮滑板实现了场定向控制(FOC)。与换向方法相比,这种新的 FOC 控制方法具有优越的性能,具有以下特点:
减少噪音和振动
平滑的扭矩输出并提高电机效率。因此,能耗更低
弱磁以增加最大速度范围
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
原始硬件支持最初连接到两个侧板的两根 4 针电缆。他们将Hoverboard主板的GND、12/15V和USART2&3引出。 USART2&3 均支持 UART、PWM、PPM 和 iBUS 输入。此外,USART2可用作12位ADC,而USART3可用作I2C。请注意,虽然 USART3(右侧板电缆)可承受 5V 电压,但 USART2(左侧板电缆)却不能承受5V 电压。
通常,主板大脑是STM32F103RCT6,但某些主板具有GD32F103RCT6,该固件也支持该主板。
主板逆向工程原理图参见20150722_hoverboard_sch.pdf
在此固件中,有 3 种控制类型可用,可以通过 CTRL_TYP_SEL 参数在 config.h 文件中设置:
换向 (COM_CTRL)
正弦 (SIN_CTRL)
磁场定向控制 (FOC_CTRL) 具有以下 3 种控制模式,可通过参数 CTRL_MOD_REQ 在 config.h 文件中设置:
电压模式(VLT_MODE):在此模式下,控制器向电机施加恒定电压。推荐用于机器人应用或需要快速电机响应的应用。
速度模式(SPD_MODE):在此模式下,闭环控制器通过拒绝施加到电机的任何干扰(电阻负载)来实现输入速度 RPM 目标。推荐用于机器人应用或恒速应用。
扭矩模式(TRQ_MODE):在此模式下实现输入扭矩目标。当扭矩目标为 时,此模式使电机能够“续流”
0。建议用于大多数需要坐着驾驶员的应用。
| 控制方式 | 复杂 | 效率 | 光滑度 | 弱磁 | 随心所欲 | 静止保持 |
|---|---|---|---|---|---|---|
| 换向 | - | - | ++ | 娜 | 娜 | + |
| 正弦曲线 | + | ++ | ++ | +++ | 娜 | + |
| 聚焦电压 | ++ | +++ | ++ | ++ | 娜 | + (2) |
| 聚焦速度 | +++ | +++ | + | ++ | 娜 | +++ |
| 聚焦扭矩 | +++ | +++ | +++ | ++ | +++ (1) | 娜(2) |
(1)通过使能ELECTRIC_BRAKE_ENABLE,config.h可以使用参数调整续流量ELECTRIC_BRAKE_MAX。
(2)STANDSTILL_HOLD_ENABLE可以通过在 中启用来强制停止保持功能config.h。
在所有 FOC 控制模式中,控制器均具有最大电机速度和最大电机电流保护功能。这为满足许多机器人应用的需求同时保持安全操作带来了巨大的优势。
默认情况下,磁场弱化处于禁用状态。您可以通过设置 FIELD_WEAK_ENA = 1 在 config.h 文件中启用它
磁场弱化是从 0 到 FIELD_WEAK_MAX 或 PHASE_ADV_MAX 的线性插值(分别取决于是否选择 FOC 或 SIN)
磁场弱化在FIELD_WEAK_LO处开始起作用,并在FIELD_WEAK_HI处达到最大值
⚠️如果您重新校准弱磁,请采取所有安全措施!电机可以旋转得非常快!功耗会大幅增加,可能会触发BMS过压保护⚠️
所有可校准的电机参数都可以在“BLDC_controller_data.c”中找到。我为您提供了一个已经校准的控制器,但如果您想进行微调,请随意这样做
参数以定点数据类型表示,以便更有效地执行代码
要校准定点参数,请使用定点查看器工具
控制器参数见下表
要在不安装 Matlab/Simulink 的情况下探索控制器,请单击下面的链接:
https://eferu.github.io/bldc-motor-control-FOC/
VARIANT_ADC:电机由连接到左传感器电缆(长线)的两个电位计控制
VARIANT_USART:电机通过串行协议控制(例如,在 USART3 右传感器电缆上,短有线电缆)。命令可以从 Arduino 发送。查看hoverserial.ino作为示例草图。
VARIANT_NUNCHUK:Wii Nunchuk 提供单手控制油门、制动和转向。这是最早用于电动扶手椅或瓶箱的输入设备之一。
VARIANT_PPM:带 PPM Sum 信号的 RC 远程控制。
VARIANT_PWM:带 PWM 信号的 RC 遥控器。
VARIANT_IBUS:使用 Flysky iBUS 协议连接到左传感器电缆的 RC 遥控器。
VARIANT_HOVERCAR:电机由两个踏板制动和油门控制。在静止状态下双击制动踏板即可倒车。请参阅HOVERCAR 维基百科。
VARIANT_HOVERBOARD:主板读取两个侧板数据。餐具柜需要用黑客版本来刷新。平衡控制器尚未实现。
VARIANT_TRANSPOTTER:这是用于 Transpotter 构建的,这是一个基于悬浮滑板的交通系统。有关如何构建它的更多详细信息,请查看此处和此处。
VARIANT_SKATEBOARD:用于滑板构建,使用 RC 遥控器进行控制,并将 PWM 信号连接到右侧传感器电缆。
当然,固件可以根据其他需求或项目进一步定制。
原始固件: https://github.com/lucysrausch/hoverboard-firmware-hack
Candas Hoverboard Web 串行控制: https://github.com/Candas1/Hoverboard-Web-Serial-Control
针对 AT32F403RCT6 主板的 Hoverboard hack: https://github.com/cloidnerux/hoverboard-firmware-hack
用于分体主板的 Hoverboard hack: https://github.com/flo199213/Hoverboard-Firmware-Hack-Gen2
BiPropellant 的悬浮滑板破解: https://github.com/bipropellant
Hoverboard 分线板: https://github.com/Jana-Marie/hoverboard-breakout
Bobbycar https://github.com/larsmm/hoverboard-firmware-hack-FOC-bbcar
TranspOtterNG: https://github.com/Jan--Henrik/transpOtterNG
ROS 悬浮板驱动程序: https://github.com/alex-makarov/hoverboard-driver
正在进行的 OneWheel 项目: https://forum.esk8.news/t/yet-another-hoverboard-to-onewheel-project/60979/14
ST 社区: 定制 FOC 电机控制
Telegram 社区:如果您是爱好者,请加入我们的Hooover Telegram 群组
对此存储库的每一个贡献都受到高度赞赏!请随意创建拉取请求来改进此固件,因为最终您将帮助每个人。
如果您想捐款以保持固件更新,请使用以下链接:









发表评论