--- # FOC无刷电机控制例程 ## 一、项目概述 本仓库是一个从零开始的永磁同步电机(PMSM/BLDC)FOC(磁场定向控制)开发例程,旨在实现一套完整、可移植的FOC控制系统。代码结构清晰,分阶段实现各功能模块,适合学习和实际项目参考。 --- ## 二、工程演进路线 本工程采用**分步验证、逐步集成**的开发策略,按以下路线推进: ### 第一阶段:基础闭环控制 ``` 电流闭环 → 霍尔角度闭环 → 速度闭环 ``` | 阶段 | 闭环类型 | 依赖传感器 | 目标 | | :--- | :------- | :---------- | :------------------------- | | 1.1 | 电流闭环 | ADC三相采样 | 实现IQ/ID电流的稳定控制 | | 1.2 | 角度闭环 | 霍尔传感器 | 获取转子角度,完成Park变换 | | 1.3 | 速度闭环 | 霍尔+电流 | 实现速度-电流双闭环控制 | ### 第二阶段:高精度编码器控制 ``` 编码器角度闭环 → 编码器速度闭环 → 编码器位置闭环 ``` | 阶段 | 闭环类型 | 依赖传感器 | 目标 | | :--- | :------- | :------------------ | :------------- | | 2.1 | 角度闭环 | 磁编码器/光电编码器 | 高精度角度反馈 | | 2.2 | 速度闭环 | 编码器角度微分 | 高精度速度控制 | | 2.3 | 位置闭环 | 编码器积分+位置环 | 伺服级位置控制 | ### 第三阶段:无感控制 ``` 无感观测器引入 ``` | 阶段 | 技术方案 | 目标 | | :--- | :---------------- | :---------------------------- | | 3.1 | 滑模观测器(SMO)等 | 中高速无感运行 | | 3.2 | 高频注入(HFI) | 零速/低速无感运行(扩展目标) | --- ## 三、FOC控制原理 ### 3.1 核心思想 FOC控制的核心思想是:**通过坐标变换,将三相交流电机的非线性、强耦合模型,转化为直流电机的线性、解耦模型进行控制**。 具体实现路径: - **Clark变换**:将三相静止坐标系(Ia, Ib, Ic)变换到两相静止坐标系(Iα, Iβ) - **Park变换**:将两相静止坐标系(Iα, Iβ)变换到两相旋转坐标系(Iq, Id) 变换后的效果: - **Iq(转矩电流)**:与转子磁场垂直,负责产生扭矩 - **Id(励磁电流)**:与转子磁场平行,负责调节磁场(通常控制为0) 由于变换后得到的是**直流分量**,非常适合用**PID控制器**进行调节。本工程采用**绝对式PID**(即位置式PID),直接输出控制量,无累积误差风险。 ### 3.2 逆变器驱动:SVPWM 变换后的Iq/Id指令通过**反Park变换**和**反Clark变换**,重新生成三相电压指令。这些指令通过**SVPWM(空间矢量脉宽调制)**算法,转化为六路PWM波形驱动三相逆变器。 **SVPWM的优势**: - 母线电压利用率高(比SPWM高约15%) - 谐波失真小,电流波形更正弦 - 理论上可生成任意方向、任意幅值的电压矢量(分辨率受PWM精度限制) **发波方式**:本工程采用**七段式SVPWM**,相比五段式,虽然开关次数略多,但电流波形更平滑,谐波性能更好。 --- ## 四、电流采样关键设计 ### 4.1 采样方案 三相电流采样采用**三电阻方案**(根据硬件配置),通过ADC采集注入组实现。 ### 4.2 采样时机 **关键设计**:采样点选在PWM周期的**中间时刻**。 ``` 中心对齐PWM波形(互补驱动): 上桥原始PWM(模式1): 高电平 ┌─────┐ ┌─────┐ │ │ │ │ ┘ └──────────┘ └ 下桥互补PWM: ┌──────────┐ │ │ ┘─────┘ └─────┘ ↑ 采样点(中间时刻) ``` **为什么在中间时刻采样?** - 此时下桥NMOS处于导通状态(互补PWM为高电平) - 相电流稳定,无开关噪声干扰 - 采样值最能代表该PWM周期内的平均电流 **NMOS导通逻辑**:NMOS为高电平导通,下桥互补PWM的中间高电平区间恰好对应下桥导通窗口。 --- ## 五、核心难点:实时电角度的获取 > 这是FOC控制中最关键、也最容易出问题的环节。 ### 5.1 为什么电角度如此重要? FOC的所有坐标变换(Park/反Park)都依赖电角度θ。角度不准会导致: | 问题 | 后果 | | :----------- | :------------------------------ | | **角度偏差** | Iq/Id无法正确解耦,转矩脉动增大 | | **角度滞后** | 电流相位滞后,效率下降 | | **角度跳变** | 电流突变,可能触发过流保护 | | **角度丢失** | 电机失步,无法继续运转 | ### 5.2 不同阶段的角度获取方式 | 阶段 | 角度来源 | 精度 | 难点 | | :----------------- | :---------------------- | :--- | :------------------------- | | **霍尔角度闭环** | 霍尔传感器(60°分辨率) | 低 | 需要插值算法平滑角度 | | **编码器角度闭环** | 磁编码器/光电编码器 | 高 | 需要初始位置标定 | | **无感观测器** | 滑模观测器(SMO)估算 | 中 | 低速区失效,需高频注入辅助 | ### 5.3 角度的实时性要求 在一个FOC控制周期内(通常为PWM周期,如10kHz = 100μs),需要完成: 1. 读取当前角度 2. 执行电流采样 3. 完成Clark/Park变换 4. 执行PID计算 5. 完成反Park/反Clark变换 6. 更新SVPWM占空比 **其中角度获取不能成为瓶颈**。任何延迟都会导致控制滞后,影响系统稳定性。 ### 5.4 角度处理的常见问题与对策 | 问题 | 对策 | | :--------------------------------- | :--------------------------- | | **角度跳变**(如霍尔60°步进) | 采用低通滤波或角度预测插值 | | **角度量化噪声**(低分辨率编码器) | 采用滑动平均或卡尔曼滤波 | | **角度微分求速度时的噪声放大** | 使用带限幅的差分或跟踪微分器 | | **编码器零点偏移** | 上电时执行角度校准流程 | --- ## 六、后续优化方向 - [ ]