第三讲:电机控制基础回顾——直流电机、BLDC与PMSM工作原理,FOC控制算法核心思想
各位同学好,我是你们的老朋友。今天这一讲,咱们把电机控制的基础知识再过一遍。说实话,很多做嵌入式控制的朋友,上来就啃FOC代码,结果连电机怎么转的都没搞明白。我个人习惯是,先把物理模型吃透,再去碰代码。
这一讲我会带着大家回顾三种最常见的电机:直流电机、无刷直流电机(BLDC)和永磁同步电机(PMSM)。然后咱们再聊聊FOC控制算法的核心思想。嗯,这部分内容虽然基础,但非常重要。我在项目里见过太多人因为基础不牢,调试时走了不少弯路。
一、直流电机:最简单的旋转机器
直流电机,说白了就是给电就转,反向就反转。它的结构很简单:定子(永磁体或励磁绕组)产生磁场,转子(电枢绕组)通电后在磁场中受力旋转。
它的数学模型也很直观:
电压方程:U = R·I + L·dI/dt + E
反电动势:E = Ke·ω
转矩方程:T = Kt·I
机械方程:J·dω/dt = T - TL - B·ω
其中:
- U:电枢电压
- R、L:电枢电阻和电感
- E:反电动势
- Ke、Kt:反电动势常数和转矩常数(数值相等)
- ω:转子角速度
- J:转动惯量
- TL:负载转矩
核心要点:直流电机的转矩与电流成正比,速度与电压成正比。控制起来非常直接——调电压就能调速,调电流就能调转矩。
我在项目中遇到过一个问题:用直流电机做位置伺服,PID参数怎么调都抖。后来发现是电刷磨损导致接触电阻变化。嗯,这就是直流电机的硬伤——有刷,需要维护。
二、BLDC与PMSM:无刷电机的两兄弟
BLDC和PMSM都是无刷电机,转子都是永磁体。区别在哪?说白了就是反电动势的波形不同。
| 对比项 | BLDC | PMSM |
|---|---|---|
| 反电动势波形 | 梯形波 | 正弦波 |
| 绕组方式 | 集中绕组 | 分布绕组 |
| 控制方式 | 六步换向(方波控制) | FOC(正弦波控制) |
| 转矩脉动 | 较大 | 较小 |
| 噪音 | 较大 | 较小 |
| 成本 | 较低 | 较高 |
你想想看,BLDC的梯形波反电动势,用六步换向就能驱动,控制简单成本低。但PMSM的正弦波反电动势,必须用正弦波电流驱动,否则转矩脉动大得没法用。这就是为什么PMSM必须上FOC。
我的经验:如果你做的是风机、水泵这类对噪音和转矩脉动不敏感的应用,BLDC+六步换向完全够用,成本还低。但如果是伺服、机器人关节这种要求高动态响应的场合,老老实实上PMSM+FOC。
三、FOC控制算法核心思想
FOC,全称Field Oriented Control,磁场定向控制。名字听着高大上,核心思想其实就一句话:把交流电机控制得像直流电机一样简单。
为什么会这样?因为直流电机的转矩和磁通是天然解耦的——你调电流就是调转矩,调电压就是调速度。但交流电机(包括PMSM)的定子电流同时产生转矩和磁通,两者耦合在一起,很难独立控制。
FOC的解决思路是:通过坐标变换,把三相静止坐标系下的电流,变换到两相旋转坐标系下。这样就把交流量变成了直流量,转矩和磁通就解耦了。
具体来说,FOC包含三个关键步骤:
- Clark变换:把三相电流(Ia, Ib, Ic)变换到两相静止坐标系(Iα, Iβ)
- Park变换:把两相静止坐标系(Iα, Iβ)变换到两相旋转坐标系(Id, Iq)
- 逆Park变换:把控制后的电压(Vd, Vq)变换回两相静止坐标系(Vα, Vβ),再通过SVPWM生成三相PWM波
数学公式如下:
// Clark变换
Iα = Ia
Iβ = (Ia + 2*Ib) / √3
// Park变换
Id = Iα*cos(θ) + Iβ*sin(θ)
Iq = -Iα*sin(θ) + Iβ*cos(θ)
// 逆Park变换
Vα = Vd*cos(θ) - Vq*sin(θ)
Vβ = Vd*sin(θ) + Vq*cos(θ)
核心思想总结:
- Id控制磁通(对于PMSM,通常Id=0控制)
- Iq控制转矩
- 通过PI调节器分别控制Id和Iq,实现解耦控制
我曾经在调试一个PMSM伺服驱动器时,发现电机低速时抖动厉害。查了半天,发现是转子位置传感器(编码器)的零点没校准好。嗯,这里要注意:FOC对转子位置精度要求很高,位置不准,Park变换就是错的,控制性能直接崩。
四、FOC的工程实现要点
理论说完了,咱们聊聊工程实现。我个人习惯把FOC分成几个模块:
- 电流采样模块:通常用两相采样法,采样两相电流,第三相通过Ia+Ib+Ic=0计算
- 位置检测模块:编码器或霍尔传感器,获取转子角度和速度
- 坐标变换模块:Clark、Park、逆Park变换
- PI调节器模块:Id环和Iq环,通常电流环带宽1-2kHz
- SVPWM模块:生成三相占空比,驱动逆变器
避坑指南:我曾经在代码生成时,把Park变换的角度搞反了(sin和cos符号弄错),结果电机根本转不起来,还嗡嗡响。调试了两天才发现。所以建议大家在做坐标变换时,先用MATLAB/Simulink仿真验证一下,再生成代码。
另外,电流环的PI参数整定也有技巧。我一般先用仿真模型算出理论值,再在实际板上微调。理论值怎么算?根据电机的电气时间常数τ = L/R,电流环带宽设为1/(2πτ)左右,然后按典型I型系统整定。
好了,这一讲的内容就到这里。咱们回顾了直流电机、BLDC和PMSM的工作原理,也聊了FOC的核心思想——说白了就是通过坐标变换把交流电机控制得像直流电机一样简单。下一讲,我会带大家用MATLAB/Simulink搭建一个完整的FOC仿真模型,到时候咱们手把手操作。
课后思考:为什么PMSM的FOC控制中,通常把Id设为0?如果Id不为0,会有什么影响?想明白这个问题,你对FOC的理解就上了一个台阶。
公众号:蓝海资料掘金营,微信deep3321