SguanFOC为有/无传感器的PMSM电机提供强大的磁场定向控制解决方案。库内集成了基于SVPWM的多种控制模式,支持位置环、速度环、电流环的单环/串级控制...同时针对嵌入式平台优化了数学运算,并提供高度可配置的PID和LADRC等控制器,满足从简单调速到高性能伺服的各类应用需求。
SguanFOC为有/无传感器的PMSM电机提供强大的磁场定向控制解决方案。库内集成了基于SVPWM的多种控制模式,支持位置环、速度环、电流环的单环/串级控制...同时针对嵌入式平台优化了数学运算,并提供高度可配置的PID和LADRC等控制器,满足从简单调速到高性能伺服的各类应用需求。
「纯 C 语言。几行配置。你的电机丝滑运转。」 "Pure C. A few lines of config. Your motor spins like silk." ) English | 中文
在你的 MCU 里跑一套完整 FOC,从坐标变换到 SVPWM,从有感到无感。
5分钟初始化,你能让一台无刷电机转起来——有感、无感、霍尔,任你选。从 有感三环FOC 到 HFI高频注入 + 高速域无感观测,全速域覆盖。不是「能转就行」的那种水平——是伺服级响应、工业级稳定。
你看到的每一个控制算法,都在真实硬件上跑通过。 不是论文仿真,不是概念验证,就是 C语言 + MCU !
▲ 【代码框架图例->SguanFOC库文件包含关系】 观看SguanFOC最新移植视频(哔哩哔哩)
MIT 协议开源。 个人和商用都免费,无需授权。跨平台通用...ARM、DSP、任何支持C语言的 MCU 都能用!
「引入头文件。填好接口。你的电机闭环转动。」 "Include the header. Implement the hooks. Motor closes loop."
#include "SguanFOC.h"
int main(void) {
MCU_Init(); // 你的MCU平台 + 外设初始化
while(1) {
SguanFOC_main_Loop(); // ①初始化 + 串口数据收发
}
}
void TIM1_IRQHandler(void) {
SguanFOC_High_Loop(); // ②高频任务:电流环、角度计算、PWM 生成
// 你的其他高优先级中断任务
}
void TIM2_IRQHandler(void) {
SguanFOC_Low_Loop(); // ③低频任务:状态机切换、故障保护
// 你的其他低优先级中断任务
}
void USART1_IRQHandler(void) {
SguanFOC_Printf_Loop(Sguan_PrintfBuff, Size); // ④串口调试:接收解析
// 你的其他串口中断任务
}
// ⑤用户自定义:在UserData_*.h文件中依次填写好电机控制模式和运行参数
「点个 Star。收藏项目。你的同行都在用。」 "Hit the star. Bookmark it. Your peers are already using it."
…* 上面内容是HFI高频正弦波注入切SMO滑模观测器
* 上面内容是HFI高频正弦波注入切NLFO非线性磁链观测器
* (图例为简单调参验证,深度调试后效果更好)
* (SguanFOC其余功能正常,参数辨识和极性辨识有缺陷,后面项目会得到修复)「一个宏定义。切换模式。你的电机适配任意场景。」 "One macro. Switch modes. Motor adapts to any scenario."
| 编号 | 模式 | 说明 | 定位方式 | 适用场景 |
|---|---|---|---|---|
| 0 | MODE_VF_OPENLOOP |
VF 压频比开环 | 无传感器 | 开环强拖,电机初步测试 |
| 1 | MODE_IF_OPENLOOP |
IF 流频比开环 | 无传感器 | 开环强拖,电流限幅保护 |
| 2 | MODE_Voltag_OPEN |
电压开环 | 编码器 | 电压模式调试 |
| 3 | MODE_Current_SINGLE |
电流单闭环 | 编码器 | 力矩控制模式 |
| 4 | MODE_VelCur_DOUBLE |
速度-电流串级闭环 | 编码器 | 通用速度控制 |
| 5 | MODE_PosVelCur_THREE |
位置-速度-电流三环 | 编码器 | 伺服定位、精密控制 |
| 6 | MODE_Sensor_Hall |
有感霍尔_转速环 | 霍尔传感器 | 低成本速度控制 |
| 7 | MODE_Sensorless_HFI |
高频注入_转速环 | 无感 (HFI) | 零低速运行 |
| 8 | MODE_Sensorless_SMO |
滑模观测_转速环 | 无感 (SMO) | 中高速运行 |
| 9 | MODE_Sensorless_NLFO |
非线性磁链_转速环 | 无感 (NLFO) | 中高速运行 |
| 10 | MODE_Sensorless_HS |
高频滑模结合_转速环 | 无感 (HFI+SMO) | 全速域平滑切换 |
| 11 | MODE_Sensorless_HN |
高频磁链结合_转速环 | 无感 (HFI+NLFO) | 全速域平滑切换 |
| 12 | MODE_Sensorless_AS |
霍尔滑模结合_转速环 | 霍尔 + SMO | 全速域融合控制 |
| 13 | MODE_Sensorless_AN |
霍尔磁链结合_转速环 | 霍尔 + NLFO | 全速域融合控制 |
| 14 | MODE_Debug_HFI |
HFI 测试_转速环 | 编码器(外载观测) | HFI 算法调试 |
| 15 | MODE_Debug_SMO |
SMO 测试_转速环 | 编码器(外载观测) | SMO 算法调试 |
| 16 | MODE_Debug_NLFO |
NLFO 测试_转速环 | 编码器(外载观测) | NLFO 算法调试 |
| 17 | MODE_Debug_HS |
HFI 切 SMO_转速环 | 编码器(融合测试) | 观测器切换调试 |
| 18 | MODE_Debug_HN |
HFI 切 NLFO_转速环 | 编码器(融合测试) | 观测器切换调试 |
在 UserData_Config.h 中修改宏定义:
// 选择你需要的模式(0-18)
#define Define_Run_Mode 11 // 例如:全速域 HFI+NLFO 无感控制| 你的需求 | 推荐模式 |
|---|---|
| 刚拿到电机,想快速转起来 | 0 或 1 (开环强拖) |
| 做绕线机力矩控制 | 3 (电流单闭环) |
| 做平衡车、轮毂电机 | 4 (速度-电流双闭环) |
| 做云台、机械臂、CNC、3D打印机 | 5 (位置-速度-电流三闭环) |
| 低成本项目(用霍尔传感器) | 6 (有感霍尔) |
| 无人机、高速风机(无传感器) | 11 (全速域 HFI+NLFO) |
| 算法研究、观测器调参 | 14 - 18 (Debug 模式) |
「原理图。PCB。你的硬件一步到位。」 "Schematic. PCB. Your hardware runs out of the box."
…本项目采用 MIT 协议开源。
你可以自由使用、修改、分发本代码库,包括商业用途——公司内部使用、客户项目交付、做成付费产品售卖,均无限制。无需事先授权,无需支付任何费用。
MIT 协议仅要求保留版权声明,不强制注明出处,但欢迎告知我们你的使用场景。
详见 LICENSE 文件
星必尘Sguan 是一名嵌入式算法工程师、开源硬件爱好者、独立开发者。代表作:SguanFOC 开源项目(GitHub FOC 算法库)。全平台分享电机控制、嵌入式开发与开源硬件技术。
| 平台 | 账号 | 链接 |
|---|---|---|
| GitHub | Sguan-ZhouQing | https://github.com/Sguan-ZhouQing |
| B 站 | 星必尘Sguan | https://space.bilibili.com/564956515 |
| 抖音 | 星必尘Sguan | 抖音号:dy9q15ail4xc |
| 粉丝群 | 【Sguan(^^)】水友快乐屋 | 群号:716279199 |
| 邮箱 | 技术交流 | [email protected] |
技术咨询、项目合作 → 通过以上平台或邮箱联系即可。
SguanFOC - 让电机控制更简单
暂无开放 Issues,或尚未同步最近议题。