第三讲:电机控制基础回顾——直流电机、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包含三个关键步骤:

  1. Clark变换:把三相电流(Ia, Ib, Ic)变换到两相静止坐标系(Iα, Iβ)
  2. Park变换:把两相静止坐标系(Iα, Iβ)变换到两相旋转坐标系(Id, Iq)
  3. 逆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