SVPWM基础
空间矢量脉宽调制(Space Vector Pulse Width Modulation)SVPWM基础
前面已经了解了如何将复杂的三相电流通过Clarke与park变换解耦为d-q旋转坐标系的控制,因此只要令\(i_d=0\),控制\(i_q\)来控制转矩大小。
下面需要了解下相关知识:
基础矢量和矢量圆
矢量控制的核心思想就是解耦三相电机复杂的定子电流关系,使得三相电机的控制像直流电机一样简单有效,并且保证矢量变换前后系统所产生的旋转磁动势等效。
Park反变换得到的是两相静止坐标系下的\(v_\alpha,v_\beta\)。接下来就是如何利用\(v_\alpha,v_\beta\)控制功率管的开启关闭。产生等效磁场。
无刷电机仅靠 6 个功率管的 “开关组合”(即离散的通断动作),无法直接通入 “连续的三相对称正弦电流”;但可以通过这些开关组合来 “模拟生成” 逼近正弦的旋转矢量,从而间接实现对电机的精准控制。

\(Q_1到Q_6\)为三相逆变器的6个功率管,同一时刻,同一桥臂上下两个功率管不能同时开启。所以一般要在互补PWM波(上管的 PWM 信号为 “高电平导通” 时,下管的 PWM 信号则为 “低电平关断”;当上管的 PWM 信号变为低电平时,下管的 PWM 信号则变为高电平。两者的导通 / 关断状态严格互补,且通常会加入死区时间(即上下管都关断的短暂间隙,防止直通短路)中加入死区(在控制下管开启前,先让上管关断并保持一段 “死区时间”;同理,控制上管开启前,也让下管关断并保持死区时间。),防止短路造成危害。
由于上下桥臂必须进行互补操作,因此可以使用上桥臂功率管的状态表示桥臂那一相的状态。
比如\(Q_1\)开通、\(Q_2\)关断,电流就会从\(Q_1\)流入电机的A相。反之则从A相流出。
假设上桥臂开通,下桥臂关断。将该桥臂的状态记作1,反之则为0。因为有3个桥臂,所以可以定义开关函数\(S_x\)(\(x=a,b,c\))为:
所以三个桥臂一共有8种状态,也就是A、B、C有8种状态组合。假设其中一种状态组合为:A相上桥臂开通,下桥臂关断,A相连接到电源的正极。B相上桥臂关断,下桥臂开通。B相连接到电源的负极。C相上桥臂关断,下桥臂开通,C相直接连接到电源的负极。也就是\(S_a=1,S_b=0,S_c=0\)。
等效电路以及电压推导如下:



从上面的计算可以看出来,合成矢量可以表示为:\(u_{out}=e^{j\omega t},\omega=2\pi f\),6个基础矢量的模长等值,均为2/3\(U_{dc}\)。
将上面的8个矢量放到矢量分布图中,如图所示:红色为A-B-C三相空间静止坐标系。\(U_0(100)\)表示 A 相上桥臂开通,A 相直接连接到电源的正极;B 相和 C 相下桥臂开通,B 相和 C 相直接连接到电源的负极。此时起作用的是 A 相,因此该矢量与 A 轴重合,\(U_0(100)\)中的下标 “0” 表示其在矢量圆中的位置为\(0^\circ\)。

\(U_{120}(010)\)表示 B 相上桥臂开通,B 相直接连接到电源的正极;A 相和 C 相下桥臂开通,A 相和 C 相直接与电源的负极连接。此时起作用的是 B 相,因此该矢量与 B 轴重合,所以在空间上与\(U_0(100)\)相差\(120^\circ\),下标 “120” 表示其在矢量圆中的位置为\(120^\circ\)。
以上图中是6个有效矢量和2个零矢量。要想得到位于其他扇区内的矢量时,就要根据伏秒平衡定理,伏秒平衡的本质是:在一个开关周期内,电感(或电容)两端的 “电压 × 时间”(伏秒积)的代数和为零(稳态下电感电流变化率的平均值为零,电容电压变化率的平均值为零)。换句话说,施加的正向伏秒积与反向伏秒积相互平衡,保证了储能元件的状态稳定。
这些有效矢量是 “基础矢量”。假设我们需要输出一个非基础矢量的目标电压,就可以选择它相邻的两个基础矢量,让它们在一个开关周期内分别作用一段时间,最终的伏秒效果与目标矢量完全等效。
- 基础矢量 \(\vec{V}_1\)(作用时间 \(t_1\))和 \(\vec{V}_2\)(作用时间 \(t_2\))是相邻的两个有效矢量;
- 目标矢量\(\vec{V}_{\text{ref}}\) 在一个周期 \(T_s\)内的伏秒积,等于\(\vec{V}_1 \cdot t_1 + \vec{V}_2 \cdot t_2\);
- 这样,负载端感受到的电压效果,就如同目标矢量直接作用了一个周期,这就是 “作用效果等效” 的含义。

100为4,110为6.为了区分各个基础矢量的作用时间,以6个基础矢量的二进制开关函数表示基础矢量的作用时间。因此可以用\(T_4\)代表基础矢量\(U_0(100)\)的作用时间,\(T_6\)代表基础矢量,设T为一个开关周期,那么可以得到:
伏秒平衡要求:一个开关周期内,参考矢量的伏秒积等于各基础矢量(含零矢量)伏秒积之和。
基础矢量 \(U_0(100)\) 作用时间为\(T_4\),其伏秒积为:
\(\int_0^{T_4} U_0(100) \mathrm{d}t\)
基础矢量 \(U_{60}(110)\) 作用时间为 \(T_6\)(从 \(T_4\) 时刻开始,到 \(T_4+T_6\)时刻结束),其伏秒积为:
\(\int_{T_4}^{T_4+T_6} U_{60}(110) \mathrm{d}t\)
零矢量 (U_z) 作用时间为 (T - (T_4+T_6))(从 (T_4+T_6) 时刻开始,到周期 T 结束),其伏秒积为:
\(\int_{T_4+T_6}^T U_{\text{z}} \mathrm{d}t\)
伏秒平衡的本质是:一个周期内,参考矢量的 “电压 × 时间”(伏秒积)等于各基础矢量伏秒积之和。
- 参考矢量的伏秒积:\(U_{\text{ref}} \cdot T\)(矢量 × 时间,体现其在一个周期内的作用效果);
- 基础矢量 \(U_x\)的伏秒积:\(U_x \cdot T_x\);
- 基础矢量 \(U_y\)的伏秒积:\(U_y \cdot T_y\);
- 零矢量 \(U_z\)的伏秒积:\(U_z \cdot T_z = 0 \cdot T_z = 0\)(零矢量不产生有效作用,仅用于时间填充)。
因此,根据 “伏秒积等效”,可得:\(U_{\text{ref}} T = U_x T_x + U_y T_y + U_z T_z\),所以只要控制相邻矢量的作用时间,理论可以合成平面圆内任意的非零电压矢量。但是如何确定希望合成的非零矢量所处的扇区呢?
七段式调制方式分析
现在一个周期内所有状态的持续时间我们都得到了,还差一个顺序,也就是各个状态切换的顺序。以减少开关次数为目标,基本矢量作用顺序原则为:在每次开关状态转换时只改变其中一个相的开关状态,并且平均分配零矢量,使 PWM 对称、降低 PWM 的谐波分量。常用方式有 7 段式和 5 段式 SVPWM。我们这里主要讲解 7 段式 SVPWM。
上一节得到了合成矢量所需要的相邻基础矢量的作用时间后,下面是如何和实际MCU的PWM模块相结合。
每次矢量变化只改变一个桥臂上的一组功率管
- 解释:逆变器的每个桥臂由上下两个功率管(如 IGBT)组成,“只改变一个桥臂” 意味着每次切换电压矢量时,仅让一个桥臂的功率管通断,其他桥臂保持不变。
- 作用:减少功率管的开关次数和开关应力,同时降低因多桥臂同时切换带来的电磁干扰,让矢量切换更平稳。
合理利用零矢量,减少功率管开关次数与损耗
- 解释:零矢量(如两电平逆变器的((0,0,0))或((1,1,1))状态)是不产生有效电压的矢量。合理分配零矢量的作用时间,可避免功率管频繁通断。
- 作用:功率管每次开关都会产生损耗(如导通损耗、开关损耗),减少开关次数能显著降低系统发热,提升功率转换效率。
减小系统谐波分量,尤其是低频谐波
- 解释:谐波是偏离理想正弦波的干扰成分,低频谐波对电机、负载的影响更大(如导致电机转矩脉动、噪音增大)。
- 作用:通过优化矢量合成的时序和零矢量分配,可抑制谐波的产生,让输出电压 / 电流更接近纯正弦,提升系统的稳态性能(如电机运转更平稳、精度更高)。
优化矢量合成算法,减少 CPU 处理时间
- 解释:SVPWM 的矢量合成需要实时计算(如扇区判断、矢量作用时间计算等),算法的复杂度会影响 CPU 的运算负荷。
- 作用:简化算法(如提前预制扇区表、优化数学运算)可降低 CPU 的处理时间,让控制系统的实时性更好,满足高速电机、高动态负载的控制需求。
目前有两种PWM方式比较通用,一种是对称式调制,也就是七段式调制;一种是低开关损耗,也称为五段式调制。七段式调制的的开关次数比五段式多一些。但是波形对称,谐波分量少。
零矢量(如两电平逆变器的((0,0,0))或((1,1,1))状态)是不产生有效电压的矢量。合理分配零矢量的作用时间,可避免功率管频繁通断。
七段式调制中,每次开关切换只改变一相的开关状态,且三相波形呈对称分布。零矢量 \(U_z(000)\)放在周期 “两边”,中间是零矢量 \(U_z(111)\),形成对称的零矢量分布:
SVPWM(空间矢量脉宽调制)核心目的是减少功率管切换次数、抑制谐波,
以矢量$U_0(100) $ 切换到零矢量 \(U_z(000)\) 为例:\(U_0(100)\)表示 A 相上管导通、B/C 相下管导通;$U_z(000) $表示 A/B/C 相下管都导通。需要同时改变 B、C 相下管→上管的状态,多桥臂同时切换会增加开关损耗和电磁干扰,因此要 “合理分配作用时间” 避免这种情况。
因为功率管每切换一次,都会因 “非线性开关特性” 产生谐波。通过 “单桥臂切换” 和 “合理分配矢量作用时间”,可以:
- 减少不必要的开关动作,降低因 “频繁通断” 导致的谐波(尤其是高次谐波);
- 让电压矢量的合成轨迹更平滑,避免因 “切换突变” 导致的波形畸变,从而抑制谐波分量。
扇区 Ⅰ 由基础矢量\(U_0(100)\) 和 \(U_{60}(110)\)组成,结合 “单桥臂切换原则” 和零矢量,其开关切换顺序会设计为:
\(U_z(000) \rightarrow U_0(100) \rightarrow U_{60}(110) \rightarrow U_z(111) \rightarrow U_{60}(110) \rightarrow U_0(100) \rightarrow U_z(000)\)
所以可以得到扇区1-6的波形:

图中电压矢量出现先后顺序为U₀、U₄、U₆、U₇、U₆、U₄、U₀,各电压矢量的三相波形对应三相调制开关状态,零矢量过后U_ref角度增加γ,然后重新计算T₀、T₄、T₆、T₇,每一次载波周期合成一个新的矢量,角度逐渐增大,直至超过60度,然后进入Ⅱ扇区,开关顺序切换如下。

然后按照Ⅱ扇区开关切换顺序合成角度递增的新的矢量,直至超过 120°范围,进入下一个扇区,直至旋转 360,然后依次循环。




通过上述推导可知,要实现信号调制,首先要知道参考电压矢量所在扇区位置,然后利用扇区相邻两个非零矢量和零矢量来合成,然后以旋转矢量为目标,在每个扇区内通过不同的开关顺序合成矢量来跟随目标旋转矢量。空间矢量调制第一步需要判断空间电压矢量所处的扇区,具体细节如下节所示:
矢量所处扇区的判断

可以从上图看出在扇区1中满足\(0 \ll \arctan\left( \frac{U_\beta}{U_\alpha} \right) \ll \frac{\pi}{3}\),矢量落在扇区1的充分必要条件为\(U_\alpha > 0\) \(U_\beta > 0\),且\(\frac{U_\beta}{U_\alpha}<\sqrt{3}\).同理落在其他扇区的充分必要条件为:

进一步分析可知,合成矢量\(U_{ref}\)所在的扇区完全由\(U_\beta\)、\(\sqrt{3}U_\alpha - U_\beta\)以及\(-\left( \sqrt{3}U_\alpha + U_\beta \right)\)决定。为了简化计算:

采用上述方法只用判断正负号,然后经过简单的加减逻辑计算,便可以判断出目标合成矢量的所在扇区。至此我们得到了每一时刻所需要的空间电压矢量以及它们持续的时间,同理可计算得其他扇区基本空间矢量的作用时间。在处理器中赋值给对应通道的捕获比较寄存器产生相应的三个 PWM 波形,控制 MOS 管的开关,进而产生我们期望的电压、电流、力矩。
PWM占空比计算
确定了PWM方式后,我们开始计算对应的PWM占空比,这是确认SVPWM最后一步。
根据七段式调控,两个基础矢量和零矢量对称作用,采用PWM模式2(PWM 模式 2计数值小于 CCR 值输出无效电平,反之输出有效电平),也就是计数值小于CCR值输出无效电平,反之输出有效电平。从扇区1可以看出来,CCR1先到给定值,然后,CCR2即随其后。最后是比较器CCR3。

- 先作用的有效基础矢量作用时间记为\(T_{\text{x}}\),后作用的有效基础矢量作用时间记为\(T_{\text{y}}\)。
- 零矢量分为两种:\(T_0(000)\)对应零矢量\(U_{\text{z}}(000)\)的作用时间,\(T_0(111)\)对应零矢量\(U_{\text{z}}(111)\)的作用时间。
以扇区 Ⅰ为例(SVPWM 将空间分为 6 个扇区,扇区 Ⅰ 是其中一个区域):
- \(T_{\text{x}}\)对应基础矢量\(U_0(100)\)的作用时间,记为\(T_4(100)\)(这里的 “4” 是矢量编号,“100” 是三相开关状态,即 A 相导通、B 和 C 相关断)。
- \(T_{\text{y}}\)对应基础矢量\(U_{60}(110)\)的作用时间,记为\(T_6(110)\)(“6” 是矢量编号,“110” 是三相开关状态,即 A、B 相导通、C 相关断)。
从图中可以看出,$$\text{CCR}1$$的值正好对应零矢量$$U{\text{z}}(000)$$的作用时间 \(T_0(000)\)的一半,也就是 \(\frac{T_0(000)}{2}\)。零矢量的作用时间为一个载波周期减去两个基础矢量的作用时间之后再除以4。
因此可以得到:

同理可以得到其他扇区与对应占空比的值:

从对称式七段式调制扇区2的发波方式可得,B先于A到达计数点的值,随后C到达计数器的值,所以为\(T_b,T_a,T_c\)。其他扇区推导类似。

若为PWM模式1,则小于CCRx值输出有效电平,大于则是无效电平,和PWM模式2相反。

同样是七段式调制,所以各个扇区对应的占空比顺序和PWM模式2一样。
矢量作用时间分析
确定了矢量所处的扇区,接下来要确定相邻着的作用时间。假如我们需要合成的旋转电压矢量的角速度为\(\omega = 2 \pi f_0\),其中$ \omega$ 是旋转电压矢量的角速度,\(f_0\) 是旋转电压的频率。
假设PWM频率为\(f_s\),首先引入一个频率占比,\(R = \frac{f_s}{f_0}\).它体现了PWM频率和旋转电压频率的关系。
- 若 \(f_s ≫ f_0\),意味着在旋转电压的一个周期内,PWM 会产生大量脉冲,能更精细地合成旋转电压矢量,输出波形的谐波失真更小。
旋转电压在一个周期内会绕平面圆完整转一圈,也就是\(2\pi\),PWM 的周期是 \(T_s = \frac{1}{f_s}\):每过一个\(T_s\) ,PWM 就会产生一个脉冲(或完成一次开关切换)。
在旋转电压转一圈的时间\(T_0\)里,能容纳的 PWM 脉冲数量就是R.旋转电压矢量转一圈是\(2\pi\)(完整的平面圆),而这一圈的时间里刚好有 R 个 PWM 脉冲。
- 比如 $R=10 $,就是用 10 个脉冲把 $2\pi $的圆分成 10 等份,每步转 (0.2\pi) 弧度;若 \(R=100\),就分成 100 等份,每步转 \(0.02\pi\)弧度。
根据上面的理论:
\frac{a}{\sin A} = \frac{b}{\sin B} = \frac{c}{\sin C} = 2R
\frac{2}{3}U_{\text{dc}} \times \sin\frac{\pi}{3} = \frac{\sqrt{3}}{3}U_{\text{dc}}
每次载波周期(Ts)都会重新计算各矢量的通电时间(T₀/T₄/T₆/T₇),合成新的电压矢量,让U_ref角度逐渐增大;等角度超过 60°,就从 “扇区 1” 切换到 “扇区 2”,开关顺序也会跟着变。
所以当合成矢量走过整个圆周后,就会在空间上形成旋转的电压矢量从而形成一个近似圆形的旋转磁场。

非零矢量\(U_{ref}\)和\(\alpha\)轴的夹角为\(\theta\),根据正弦定理,三角形的三条边长分别与它相对角度正弦值的比值是固定值,这个比值就是三角形外接圆的直径。可以推出:
正弦定理指出:在任意三角形中,各边与对角正弦值的比值相等,即
所以可以推导出来:

知道了合成矢量矢量的空间角度,那么相邻基础矢量的时间也就能确认下来。但是普通MCU不具有浮点运算能力,三角函数计算只能通过查表的方式实现。能不能不使用三角函数,只通过简单的加减逻辑运算确定时间。下面看下推导过程:


SVPWM能输出的最大不失真电压矢量时正六边形的内切圆,SVPWM 的合成能力边界是 6 个基本矢量构成的正六边形,内切圆是这个六边形内 “最大的完整圆形”。
- 当目标矢量幅值超过内切圆半径,但未超过正六边形的顶点(外接圆半径)时,只有 “正六边形内部的部分矢量” 能被合成。
- 目标矢量的轨迹会被正六边形的 6 条边 “截断”,最终形成 “六边形轮廓的近似圆”,而非标准圆形。
半径为:

换句话来说就是当目标电压矢量的幅值不超过该内切圆半径时,可通过相邻基本矢量和零矢量的时间加权合成(线性组合)精确实现,且合成矢量的轨迹为圆形,无失真。若幅值超过内切圆半径,基本矢量的合成能力无法覆盖该幅值(相当于 “短杆拼不出长杆”),只能通过截断或近似合成,导致电压矢量失真(如波形出现谐波)。此时可以采用等比例缩小的措施。
例子



- 角度变化导致 \(U_\alpha/U_\beta\)比例变化:\(10^\circ\) 时 \(U_\alpha\) 大、\(U_\beta\)小,所以 \(T_6\) 大、\(T_4\) 小;\(50^\circ\)时 \(U_\beta\)大、\(U_\alpha\) 小,所以\(T_4\)大、\(T_6\)小。
- 占空比随矢量时间动态调整:两个角度的总周期都是\(100\mu s\),但非零矢量的时间配比完全相反,直接体现为三相 PWM 的占空比不同。
- 无三角函数的优势:实际 MCU 中不需要计算 \(\sin\theta/\cos\theta\),只需要通过 Clark 变换得到 \(U_\alpha/U_\beta\),再用加减乘除运算就能算出时间,适配无浮点运算的 MCU。
逆变器死区效应以及补偿
插入死区的原因
SVPWM采用逆变器方式,通过MOSFET或者IGBT的开关模式组合,产生响应的空间电压矢量,来逼近三相对称正弦电流所产生的基准圆形磁动势。
功率管因电荷存储效应存在开关延时(关断延时更长),若在某一功率管未完全关断时就开通其对应桥臂的另一功率管,会导致两者同时导通,相当于电源正负极直接短路,这是电路中需规避的危险情况,实际常通过设置死区时间来避免此类风险。

红色区域里,上管(对应 CHx)的理想控制信号已经切换到 “关闭” 状态,但实际因为关断延时(电荷存储效应)还没完全断开;同时下管(对应 CHxN)的理想控制信号已经切换到 “开通” 状态,实际也开始导通了—— 这就导致上下管在这个时间段里 “实际同时处于导通状态”,也就是之前说的危险的直通重叠。
在死区时间内,桥臂上下都处于截止状态,没有触发信号。功率管是 “漏极(D)接电源正,源极(S)接电源负”;续流二极管就是 “正极接 S,负极接 D”,和功率管的导通方向(D→S)相反。
- 电路里的负载(比如电机、电感)有 “电流不能突然停” 的特性:
-
当功率管突然关断,负载里的电流没地方走,会产生很高的 “反向电压”,可能击穿功率管;
-
这时候续流二极管就会 “反向导通”,让电流从二极管走(相当于给电流留了个 “退路”),保护功率管不被高压烧坏。
-
功率管(D 接电源正,S 接负载)导通时,电流是 “电源正→D→S→负载→电源负”;
-
功率管关断后,负载电流试图继续流,会让 S 端电压升高(高于 D 端);
-
续流二极管是 “正极接 S,负极接 D”,此时 S(正极)电压 > D(负极)电压,二极管导通,电流走 “负载→S→续流二极管→D→电源正”—— 既让电流有了 “退路”,又避免了功率管被反向电压击穿。
产生的原因为当功率管突然关断,原本流过电感的电流(比如 “从左到右”)会试图继续保持这个方向,但功率管断开后,电流没了通路,电感就会 “强行” 在两端产生一个感应电压:
- 这个电压的方向是 “左负右正”(假设原来电流是左→右)—— 相当于在电感右端 “拉高电压”,左端 “拉低电压”,试图 “顶着” 功率管关断的趋势,让电流继续流(因为电压差能推动电流)。
死区时间的设置有以下几点:
1:死区时间是为了避免上下管直通短路,所以得先测功率管实际的开通 / 关断延时(比如关断需要 500ns)—— 死区时间必须覆盖这个最长的延时(比如关断延时更长,就以关断延时为基准),确保功率管完全关断后,另一管再开通。
2:实际电路中会有外界干扰(比如电磁噪声)、寄生参数(比如线路的电容 / 电感),这些会让功率管的延时比测试值更长。所以不能刚好设成 500ns,要额外加 “安全裕量”(比如设 800ns),防止实际工作中出现上下管重叠导通。
3:死区时间是 “上下管都不导通” 的时间,若太长会有两个问题:
- 缩小占空比调节范围:PWM 的周期是固定的,死区占比越多,有效输出的占空比范围就越小(比如周期 10μs,死区占了 1μs,实际占空比最大只能到 90%);
- 降低系统动态性能:负载(比如电机)需要快速响应 PWM 的变化,死区太长会让输出电压的 “更新速度” 变慢,系统对指令的反应变迟钝。

红色框对应的区域,本质就是 “本该导通的时刻被延迟了”:
- 以 CHxN 为例:原本在 CHx 关断后,CHxN 应该立即开通(理想互补波形);
- 但死区设计让 CHxN 的 “开通时刻” 往后推迟了(红色框就是这个延迟的时间段),所以这段时间里 CHx 是关断的、CHxN 也没开通 —— 两者 “同时关断”。
黄色虚线框对应的就是 “等待另一路完全关闭” 的时间区间:比如 CHx 要从 “开通” 切到 “关断” 时,黄色框就是:
- 先让 CHx 完成关断(确保它真的断开);
- 同时让 CHxN 保持关断,不着急开通;
- 等黄色框的时间结束(另一路确实关好了),CHxN 再开通。
在电机低速、小负载工况下,死区时间易引发零电流钳位现象,导致输出电流波形畸变、系统动态性能下降,而死区是避免上下管短路的必要设计,因此抵消其负面影响的死区补偿,成为电机控制中需优先解决的核心问题。
死区效应分析
实际死区时间 T₀不是只看功率管的通断延时,还会受功率管自身压降、续流二极管压降的影响,需要扣除一个由这些压降带来的时间常数 Tₑ,最终实际死区是 T₀ = Tₙ(理论死区)- Tₑ;

\(Q_1-Q_6\)为功率管。每个功率管都反向并联一个续流二极管,DC+为电源的正极,O为电源的负极,A,B,C为电机的三相输入端,N为电机的中性点。a,b,c分别为3个桥臂的中点,他们分别连接电机的3个输入端。
由于死区的存在,逆变器输出的电压会根据电流的极性不同而不同。假设电流的正向从电机端线到中性点的方向,当\(I_a>0\)时,有两种工作状态,第一种为正常状态,\(Q_1\)开通,\(Q_2\)关断,电流从电源的正极经过\(Q_1\)流入电机端A,这是A相电流的正方向,忽略功率管压降的话,那么此时\(u_{ao}=u_{dc}\)。
第二种情况:波形处于死区时,上下管同时关断,由于电机为感性负载,电流不能发生突变,会试图维持 “a→电机 A 相” 的方向继续流动;这个电流需要找通路,而 Q₂反向并联的续流二极管 D₂,其正极接电源负极(O)、负极接 a 点 —— 此时电流方向正好满足 “D₂的正极→负极” 导通条件(电流从 O→D₂→a→电机 A 相),所以电流会通过 D₂续流。正常情况下(没有死区),上管 Q₁开通时\(u_{ao}=U_{dc}\)(电源正极电压);但死区让 Q₁“少开通了 \(T_d\)时间”:
- 在一个 PWM 周期 (T_s) 内,死区导致上管 “本应输出的 \(U_{dc}\)电压” 少了 \(\frac{T_d}{T_s} \times U_{dc}\)(这就是 “平均电压作用量损失”)。
当\(I_a<0\)时,同样有两种状态,第一种为正常工作状态:\(Q_1\)关断,\(Q_2\)开启。电流由电机端线A流入逆变器并从\(Q_2\)流入电源的负极,忽略\(Q_2\)的压降,a点和地同等电位。也就是\(u_{ao}=0\)。
第二种就是波形处于死区时,上下管同时关断,由于存在感性负载,电流不能发生突变,因为原先电流是电机A->a,要维持这个方向,需要通过\(Q_1\)的续流二极管\(D_1\)续流,此时a与电源等电位。但是正常情况下\(u_{ao}=0\),所以此时多出了在一个 PWM 周期(T_s)内,死区导致原本该输出 0 的时间段,实际输出了\(U_{dc}\),相当于 “多出了\(\frac{T_d}{T_s}U_{dc}\)的平均电压作用量”。

上图为理想占空比波形,上下对称发波,无死区存在。

该图是为避免同一桥臂上下管同时导通,加入死区时间后的波形。

死区的问题:死区会让输出电压偏离理想值(出现偏差);而功率管开关频率越高(比如几十 kHz),每个 PWM 周期的小偏差会不断叠加(“累积效应”),最终导致电压误差、波形畸变等问题更严重。
解决办法:为了抵消死区的影响,需要对 PWM 波形做 “死区补偿”—— 比如根据电流方向,调整 PWM 的开通 / 关断时刻,把死区导致的电压偏差补回来。
死区补偿方法
死区补偿有两种方法,一种是硬件补偿,还有一种是软件补偿。
硬件补偿:
硬件补偿是通过额外电路(比如电压比较器),把 “实际输出” 和 “目标输出” 做对比,得到补偿信号,抵消死区导致的电压偏差。
电压补偿
原理:
- 检测实际电压:先测量逆变器输出的实际电压(比如 A 相的\(u_{ao}\);
- 对比目标电压:把实际电压和 “理想目标输出电压” 做减法,得到偏差值;
- 叠加补偿量:把偏差值加到 “期望输出电压指令” 上,生成新的输出指令 —— 相当于用偏差 “修正” 指令,让实际输出更接近目标。
特点:
- 是闭环控制(有反馈、有修正),能有效消除电压偏差,且对负载电流变化不敏感(补偿效果稳定);
- 缺点是电路复杂(需要高精度电压检测电路)、成本高、算法复杂,实际用得少
电流反馈补偿
利用 “死区电压偏差和电流极性强相关” 的特点:比如\(I_a>0\)时电压少作用\(I_a<0\)时多作用.
利用 “死区电压偏差和电流极性强相关” 的特点(比如\(I_a>0\)时电压少作用、\(I_a<0\)时多作用)
- 硬件简单(不用额外加电路,用电机现有的电流检测);
- 缺点是依赖 “无误差、无滞后的电流检测”:实际中电流检测需要滤波,滤波会导致信号滞后,且电流过零点很难精确检测,所以补偿效果受检测精度影响大,实际实现难度高。
软件补偿:
软件补偿是在电机控制程序里写算法,不用额外加硬件电路,通过计算死区导致的电压偏差,直接修正 PWM 波形的输出指令,抵消死区影响。常见的软件补偿算法有电压输出时间补偿、旋转坐标补偿等。
电压输出时间补偿:
以 “每个 PWM 周期的平均电压” 为核心,抵消死区导致的平均电压误差:
- 计算平均误差:每个 PWM 周期((T_s))内,死区会导致输出电压的 “平均作用量” 出现偏差(比如之前说的(\frac{T_d}{T_s}U_{dc}));
- 补偿时间偏差:根据这个平均误差,调整 PWM 的输出时间 —— 比如死区让高电平少了(T_d),就把高电平时间延长(T_d);死区让高电平多了(T_d),就把高电平时间缩短(T_d);
- 逼近理想电压:通过每个周期的时间补偿,让实际输出电压的平均值接近理想值。
关键依赖 & 缺点:
这个方法需要精确检测电流过零点(判断电流极性是正还是负,才能确定是 “补时间” 还是 “减时间”);但如果系统有干扰、电流里高次谐波多,电流过零点会被干扰,容易判断错误(比如把正电流误判为负电流,补偿方向搞反)。
A 相\(I_a>0\):死区导致 A 相高电平少了T_d\(,电压输出时间补偿会在程序里检测到\)\(I_a\)>0,然后自动把 A 相的 PWM 高电平时间增加\(T_d\),让平均电压回到理想值。
旋转坐标补偿:
通常会把三相静止坐标系(A、B、C 相电流\(i_a/i_b/i_c\),通过Clarke 变换转成两相静止坐标系\(i_α/i_β\),再通过Park 变换转成两相旋转坐标系\(i_d/i_q\),和电机转子同步旋转)—— 这样方便控制。

这个方法的核心是用坐标变换统一处理三相补偿,但缺点很明显:需要反复做 Clarke/Park 变换,计算过程繁琐、运算量大,所以实际工程中很少用。
预测电流控制补偿
预测电流控制补偿是基于电机的数学模型,提前算好下一时刻的电流,主动输出对应的电压,让实际电流能跟上目标电流,同时抵消死区的偏差。
- 采集当前数据:在 k 时刻,采集电机的实际负载电流,同时记录之前补偿后的输出电流;
- 预测下一时刻电流:利用直流无刷电机的数学模型(比如电压、电流、转速的关系),计算出 k+1 时刻 “应该达到的目标电流值”;
- 计算对应电压矢量:根据 k+1 时刻的目标电流,算出 “能让电流从 k 时刻变化到 k+1 时刻目标值” 的输出电压矢量(包含抵消死区影响的补偿量);
- 合成并输出电压:用矢量合成方法(比如 SVPWM)生成对应的 PWM 波形,输出这个电压矢量;
- 实现电流跟踪:通过提前预测和主动输出,让下一次采样(k+1 时刻)的实际电流更接近目标值,同时抵消死区导致的偏差。
这个方法的优势是主动预测、提前补偿,能更好地跟踪电流;但缺点是需要精确的电机数学模型,且计算过程复杂(要实时预测、算电压矢量),实际工程中实现难度较高。
基于脉冲的死区补偿:
通过在 PWM 脉冲发生畸变前,针对对应相加入死区补偿时间,调整脉冲的相位和宽度,使其更接近理想脉冲,从而修正给定电压与实际输出电压的偏差。
主要特点
- 精度高:能让逆变器输出电压的相位、幅值基本无误差;
- 限制少:不受系统工作频率、载波频率、负载的影响,仅与电流极性相关;
- 易实现:算法简单,工程应用较广泛。
当\(I_a>0\)时,死区导致上桥臂的实际开通时间比理想值少了\(T_d\),所以要**延长上桥臂开通时间\(T_d\)来补偿;但一个周期内的时间是固定的,上桥臂多占了\(T_d\),对应的下桥臂开通时间就需要缩短\(T_d\),才能保证 “上桥臂开通时间 + 下桥臂开通时间 + 死区时间” 的总和与理想周期一致,避免波形整体偏移。
假设一个 PWM 周期是\(T_s = 100μs\),理想状态下:
-
Q₁(上桥臂)开通时间:60μs
-
Q₂(下桥臂)开通时间:40μs
-
(上下桥臂开通时间之和 = 周期\(T_s\),互补导通)
但死区导致:死区时间 \(T_d = 2μs\),所以 Q₁实际开通时间变成了 \(60μs - 2μs = 58μs\)(少了\(T_d\))。
现在要补偿:
- 把 Q₁的开通时间延长\(T_d=2μs\),回到理想的 60μs;
- 但一个周期只有 100μs,Q₁多占了 2μs,Q₂的开通时间就必须缩短 2μs(从 40μs 变成 38μs)。
这样一来:Q₁开通 60μs + Q₂开通 38μs + 死区 2μs = 100μs,和理想周期时长一致,波形也能匹配理想状态。所以需要进行电流极性的判断。
电流极性的判断
电流极性的判断是正确进行脉宽电压补偿的前提。可以通过电流过零点的计算来判断电流的方向,也可以通过坐标反变换获得三相静止坐标系下的各相电流值,从而得到电流的极性。
首先坐标变换后得到d-q两相旋转坐标系下的\(i_d,i_q\),根据它们之间的关系计算出电流合成矢量所处的位置,如下图所示:

- α-β 坐标系:两相静止坐标系,是将三相(A-B-C)静止坐标系通过 Clark 变换(三相→两相静止)得到的,α 轴通常与 A 相绕组轴线重合,β 轴垂直于 α 轴。
- d-q 坐标系:两相旋转坐标系,是将 α-β 静止坐标系通过 Park 变换(静止→旋转)得到的,d 轴通常与电机的磁场轴线(如转子磁场)对齐,q 轴垂直于 d 轴,且随磁场同步旋转。
这里的“空间角度”本质是电流矢量在α-β静止坐标系(定子物理空间)中的“绝对方位”,而δ=φ+θ刚好能精准对应这个物理空间的位置,
核心原因是: α-β坐标系是与定子绕组绑定的“物理空间坐标系”(α轴对应定子A相绕组的实际安装方向),所以“电流矢量相对于α轴的角度”直接对应了电流在定子空间里的实际指向——这就是“空间角度”的物理意义。
而δ=φ+θ,其实是把“旋转坐标系(d-q)里的相对角度”,转换为“静止坐标系(α-β)里的物理空间角度”: - θ是d轴在定子空间(α轴)的位置(体现磁场的空间位置); - φ是电流矢量在d轴(磁场)附近的偏移(体现电流相对于磁场的位置); - 两者相加,就得到了电流矢量在定子物理空间里的最终方位(即空间角度)。
三相(A、B、C)的轴线在定子空间互差 120° 电角度:
- A 相轴线对应角度 0°(图中右侧的 A 轴);
- B 相轴线对应角度 120°(图中左上方的 B 轴);
- C 相轴线对应角度 240°(图中左下方的 C 轴)
对某一相来说,垂直于它轴线的线段,是该相电流 “正 / 负的分界线”:
以 A 相为例:A 相轴线是 0°,垂直于它的线段是a₁a₂(对应 90° 和 - 90° 方向,图中上下的虚线)。
a₁a₂右侧(靠近 A 相轴线的区域):A 相电流为正(标注 A+);a₁a₂左侧(远离 A 相轴线的区域):A 相电流为负(标注 A-)
以 B 相为例:B 相轴线是 120°,垂直于它的线段是b₁b₂(对应 120°±90°=210° 和 30° 方向,图中右下方、左上方的虚线)。
b₁b₂左侧(靠近 B 相轴线的区域):B 相电流为正(标注 B+);b₁b₂右侧(远离 B 相轴线的区域):B 相电流为负(标注 B-)。
把 A、B、C 三相的正负区域叠加,整个圆会被分成 6 个扇区,每个扇区对应一组 “A、B、C 相的电流极性”

根据电流的方向,再结合七段式调制的PWM波形即可得到各区间的A、B、C三相脉冲死区补偿时间。
补偿的核心逻辑是 “通过调整上桥臂的开通时间,抵消死区的影响”:
- 当某相电流为正时(比如这里的 A 相):电流是从 “上桥臂流出、下桥臂流入” 的。死区会导致上桥臂实际开通时间比理想时间短,所以要延长上桥臂的理想开通时间(T_d),补回死区的影响;
- 当某相电流为负时(比如这里的 B、C 相):电流是从 “下桥臂流出、上桥臂流入” 的。死区会导致上桥臂实际开通时间比理想时间长,所以要缩短上桥臂的理想开通时间(T_d),抵消死区的影响。

上图为扇区 I 的 0π/6(030°)子区间补偿波形图。
- \(\boxed{T'_a = T_a - \frac{T_d}{2}}\):A相“提前开” - \(T_a\)是未补偿时的开通时刻; - 减去\(\frac{T_d}{2}\),意味着A相上桥臂的开通时刻提前了\(\frac{T_d}{2}\)(对应波形里A相“0→1”边沿的红色区域,提前导通)。
- \(\boxed{T'_b = T_b + \frac{T_d}{2}}\)、\(\boxed{T'_c = T_c + \frac{T_d}{2}}\):B、C相“晚开” - \(T_b\)、\(T_c\)是未补偿时的开通时刻; - 加上\(\frac{T_d}{2}\),意味着B、C相上桥臂的开通时刻推迟了\(\frac{T_d}{2}\)(对应波形里B、C相“0→1”边沿的红色区域,延迟导通)。 本质上,这是通过“调整开关时刻的\(\frac{T_d}{2}\)”,抵消死区时间对实际开通/关断的影响——和之前讲的“电流极性对应补偿方式”是完全匹配的(A相正→提前开,B/C相负→晚开)。

同理 得到π/6-π/3的波形图。
相电流采集和重构
矢量控制技术(比如电机控制里常用的)得靠准确的相电流数据来工作,所以 “采集 + 重构相电流” 是关键步骤。
主要分两类:
电流互感器法(这里特指双电流互感芯片):
- 优点:不受功率管开关的限制,任何时候都能采集电流,抗干扰能力强;
- 缺点:成本高;
- 技巧:不用采三相,采其中两相,根据 “基尔霍夫电流定律(三相电流之和为 0)” 算出第三相电流
分流电阻法(目前用得最多):
- 优势:成本低、好用;
- 细分类型:
- 单电阻法:只用 1 个电阻采样;
- 双电阻法:用 2 个电阻采样;
- 三电阻法:用 3 个电阻采样。
单电阻法:

单电阻硬件电路上非常简单,但是算法上就稍微复杂点。

当在(100)时候进行电流采样后,电流从电源的正极进入电机的A相,并从B相和C相流出,最后经过采样电阻\(R_1\)到电源的地,如下图所示:

电流从 “逆变器” 流进 “电机相线” → 电流为正;电流从 “电机相线” 流回 “逆变器” → 电流为负。此时流过电阻\(R_1\)的电流,其实就是A 相的电流\(I_a\),所以在红线处采样,得到的就是\(I_a\)的数值。
因为三相电流满足 “基尔霍夫电流定律”(\(I_a + I_b + I_c = 0\),但单电阻采样同一时刻只能测出一相电流(比如此时只测出了\(I_a\))。
在电流采集的蓝线处,也就是A B C相位1,1,0处,A相的上桥臂开通,下桥臂关断。因此A相直接连接到电源的正极;B相的上桥臂开通。所以A直接连到电源的正极,B也连接到电源正极,电流如下图所示:

因此需要在一个PWM周期内两相的占空比接近或者相同时,根据基尔霍夫电流定律计算出第三相的电流,才能完成一次电流重构。
单电阻 / 双电阻采样时,只有当某相的桥臂状态处于特定组合时(比如 A=1、B/C=0),才能通过母线电阻采集到该相电流—— 这个 “能采集到电流的时间段”,就叫 “采样窗口”。以扇区 Ⅰ 为例:
- 若 A 相和 B 相的 PWM 占空比几乎一样(比如 A 的 “1” 时间和 B 的 “1” 时间差不多),那么 “只有 A=1、B=0” 的时间段(对应 A 相的采样窗口)会被压缩得很短;
- 采样窗口太小的话,硬件 AD 转换器来不及完成采样(AD 采样需要一定时间),就会导致电流采集错误。
解决办法就是
- 比如,给其中一相的 “1” 时间稍微增加一点,另一相稍微减少一点(总电压矢量的幅值 / 角度基本不变);
- 这样就能把原本很小的 “采样窗口” 拉长,让 AD 有足够时间采集电流。
双电阻法:

因为PWM发波为对称发波,只有下桥臂开通的情况下才能采集到有效的相电流,所以需要在PWM的中心对称点,也就是零矢量的中心进行采样。
电机的三相电流是 同时存在、且满足$I_a+I_b+I_c=0 $的,和某一相的桥臂状态无关,因此双电阻采样的核心逻辑是:只有当某相的 “下桥臂开通” 时,电流才会流过下桥臂的采样电阻,此时才能采集该相电流(这个 “下桥臂开通的时间段” 就是采样窗口)。

三电阻法:
- 每相桥臂下端都装一个采样电阻,在下桥臂开通时采样电流(因为下桥臂开通时,相电流会流过该电阻)。
- 理论上能同时采三相电流,但如果某相下桥臂开通时间太短(采样窗口窄),会导致采样不准,所以实际会分扇区采样:避开开通时间短的一相,只采另外两相。

因为相电流只有在下桥臂开通时候才能进行有效采样,所以要分扇区采样。
在扇区 Ⅰ 和扇区 Ⅵ 时,A 相下桥臂开通时间极短(采样窗口过窄,无法准确采样),因此:
- 实际只采集B 相、C 相的电流(这两相下桥臂开通时间足够,采样可靠);
- 利用基尔霍夫电流定律(KCL),通过 “\(I_A = -(I_B + I_C)\)” 推导得出 A 相电流(三相电流之和为 0)。

- PWM与桥臂的互补逻辑 CHA/CHB/CHC对应各相上桥臂的PWM控制信号: - 上桥臂为“低”时,下桥臂因互补作用为“高”(即下桥臂开通); - 这是采样的基础:下桥臂开通时,电流才会流过对应采样电阻。
- 采样前的电流路径 A相上桥臂开通(与电源正极连通),B/C相上桥臂关断、下桥臂开通: - 电流流向:电源正极 → A相 → 电机 → B/C相 → B/C相采样电阻 → 电源负极; - 此时B/C相下桥臂开通,采样电阻可采集到B/C相电流。
- 采样区域的电流变化(电感续流) 进入采样阶段时,A相上桥臂关断,但电机绕组的电感会维持电流方向不变: - 电流流向:A相端线 → 电机中性点 → B/C相 → B/C相采样电阻 → 电源负极; - A相的电流则通过下桥臂的续流二极管完成回路(电源地 → A相采样电阻 → 续流二极管 → A相端线); - 最终B/C相采样电阻仍能采集到电流(用于后续推导A相电流)。 简言之:通过PWM互补控制与电感续流的特性,即使A相上桥臂关断,也能借助续流保持电流路径,从而通过B/C相的采样电阻完成有效采集。


同理,扇区2和扇区3,都是B相上桥臂开通时间最长,下桥臂开通时间最短。所以为了规避三相下桥臂同时开通时B相采样窗口太窄的问题,只采集A相和C相的电流,采样前一时刻,B相上桥臂为高时,B相直接连接到电源的正极,C相和A相上桥臂关断,下桥臂开通,电流从电源进入点击的B相,从A相和C相流出,经过各自的采样电阻到电源的负极。

扇区2和扇区3对应的采样点为:

当进入采样阶段时,B 相上桥臂断开、下桥臂导通,而电机绕组的电感会维持电流方向不变 —— 此时电流从 B 相流入电机,再从 A 相、C 相流出,随后流经 A 相、C 相下桥臂串联的采样电阻回到电源负极,同时 B 相的电流通过其下桥臂功率管反向并联的续流二极管完成续流回路。最终呈现的电流状态是:B 相电流\(I_b\)为正向,A 相电流\(I_a\)、C 相电流\(I_c\)为反向。

扇区4和5的七段式调制PWM波形如下图所示:

在三相下桥臂开通时,避开C相开通时间太短带来的采样窗口太窄的问题,只采集A相和B相的电流。
采样的电流方向如下:

三相电流只需要采集一次就可以重构出三相电流,所以执行速度很快,还可以避开某一相采样窗口太窄的问题。
标幺化与Q15格式
在定点MCU(无硬件浮点运算的单片机)中,如何用“定点数格式”简化电机控制(比如SVPWM)的运算,核心是把小数/物理量转换成“整数形式”来计算,避免浮点运算的开销。
SVPWM运算的简化:
标幺化处理 SVPWM(空间矢量脉宽调制)是电机控制的核心算法,经常用到\(\sqrt{3}\)的运算。这里通过“标幺化”(把物理量转换成“相对值”)来简化: 比如母线电压\(U_{dc}\)的运算,原本需要算 \(\frac{2}{3}U_{dc} ÷ \frac{U_{dc}}{\sqrt{3}}\),化简后刚好等于 \(\frac{2}{\sqrt{3}}\)(而\(\frac{2}{\sqrt{3}}=2×\frac{1}{\sqrt{3}}\),\(\frac{1}{\sqrt{3}}\)已经用Q15格式存成了0x49E6)。 这样处理后,所有运算都变成“整数的乘除”,不用算小数,既加快了MCU的运算速度,又避免了浮点运算的误差。
电机控制里,通常选母线电压的量程和电流的量程作为“基准”,其他物理量(比如电压、角度)都基于这两个基准转成“相对的整数”——这样整个系统的所有变量都能用“整数(定点数)”表示,统一运算规则,进一步简化计算。
-
“Q15/S16格式”:定点数的表示方法 定点MCU不能直接算小数,所以用“整数代表小数”的方式:
-
Q15格式:把“有符号16位整数”的最大值(32767,因为16位有符号数范围是-32768~32767)当作“1”,其他小数用“小数×32767”的整数表示。 比如 \(\frac{1}{\sqrt{3}}≈0.57735\),转换成Q15就是:\(0.57735×32767≈18342\),而18342的十六进制就是
0x49E6——这就是ST电机库用0x49E6表示\(\frac{1}{\sqrt{3}}\)的原因。 -
电角度的S16格式表示 电角度(电机控制里的角度量)也用“16位有符号整数”对应:
\(-π\)(负180度)对应
-32768(16位有符号数的最小值);\(π\)(正180度)对应
32767(16位有符号数的最大值)。 这样,电角度的运算也能转成整数运算,不用处理小数。
正点原子FOC复习
下面结合正点原子的历程在复习一遍FOC框架的实现。

① 对电机三相电流进行采样得到:ia、ib、ic;
② 将 ia、ib、ic 经过 clarke 变换得到 iα、iβ;
③ 将 iα、iβ 经过 park 变换得到 iq、id;
④ 计算 iq、id 和其设定值 iq_Ref、id_Ref 的误差;
⑤ 将上述误差输入到两个 PID(只用到 PI)控制器,得到输出的控制电压 Vq、Vd;
⑥ 将 Vq、Vd 进行反 park 变换得到 Vα、Vβ;
⑦ 将 Vα、Vβ 输入 SVPWM 模块进行调制,合成电压空间矢量,输出该时刻三个半桥的开关状态进而控制电机旋转;
⑧ 循环上述步骤。
将一个PMSM电机手动让其匀速旋转,用示波器观察它的三相输出电压(反电动势),就可以观察到示波器上会有三组正弦波,且正弦波两两之间相位差为120°。那如果我们在无刷电机的三相线圈上输入三相正弦电压,就可以驱动无刷电机旋转。但是三个正弦波控制起来过于复杂。因为非线性的信号想要准确控制就需要高阶控制器。所以就引出了clarke变换和park变换、以及park反变换。
clarke变换前面有过推导,详细细节可见:FOC学习 - Bathwind_W - 博客园 中合成矢量推导以及clarke变换这一章节。

推导结果如上图所示。
变换后的波形可以观察到如下图:

可以看到变换后还是正弦波,虽然少了一个需要控制的变量,但是新的变量还是非线性的(正弦),控制它依旧难度很大,那有没有办法把它们线性化呢,当然有的,接着就看下Park 变换。
park变换的详细推导:FOC学习 - Bathwind_W - 博客园
Park 变换可以将电机从两相静止坐标系变换到两相旋转坐标系(dq 坐标系),从而解耦出电机转矩分量和电机的励磁分量,这两个分量相互垂直、互不影响。反 Park 变换即为 Park 的逆变换。
其中:

其中关于d轴和q轴的解释以下:d 轴方向与转子内磁场方向重合,称为直轴;q 轴方向与转子内磁场方向垂直,称为交轴。
中间详细推导过程就不说了,最后结论如下:

首先 α—β 坐标系经过 Park 变换后,即为𝑑q 坐标系,该坐标系是始终跟着转子旋转的,旋转角度θ需通过编码器/霍尔传感器读取。经过这一步的变换,我们会发现,一个匀速旋转向量在这个坐标系下变成了一个定值!(因为参考系相对于该向量静止了),这个坐标系下两个控制变量都被线性化了!

- d - q 坐标系就像你手里的遥控器,上面有两个独立按钮:一个是 d 轴按钮(控制小车方向,对应电机磁通),一个是 q 轴按钮(控制小车速度,对应电机转矩)。这两个按钮的指令是 “直给的简单指令”,特别适合 PID 控制 —— 就像 PID 能精准调节按钮按下去的力度,轻松稳住方向和速度,不会出现控制混乱。
- 但电机的定子绕组,就像电动小车的 “车轮驱动机构”,是固定在车身(电机壳体)上不动的。它听不懂遥控器上 d - q 的 “专属指令”,只认 “静止状态下的动作指令”。而 α - β 坐标系就是这个 “动作指令的翻译官”,反 Park 变换就是把 d - q 的直流控制指令,翻译成 α - β 坐标系下两个相位差 90° 的交流指令。这就好比把 “保持方向、速度 30km/h” 的指令,翻译成车轮能执行的 “前轮摆正、后轮匀速转动” 的具体动作信号。要是不翻译,直接把 d - q 指令给定子绕组,绕组根本没法产生对应的旋转磁场,电机就动不起来。
SVPWM 的主要思想是以三相对称正弦波电压供电时三相对称电机定子理想磁链圆为参考标准,以三相逆变器不同开关模式作适当的切换,从而形成 PWM 波,以所形成的实际磁链矢量来追踪其准确磁链圆。
普通的三相全桥是由六个开关器件构成的三个半桥。这六个开关器件组合起来(同一个桥臂的上下半桥的信号相反)共有 8 种安全的开关状态. 其中 000、111(这里是表示三个半桥的开关状态)这两种开关状态在电机驱动中都不会产生有效的电流。因此称其为零矢量。另外6 种开关状态分别是六个非零矢量。它们将 360 度的电压空间分为 60 度一个扇区,共六个扇区,利用这六个基本非零矢量和两个零量,可以合成 360 度内的任何矢量。
当要合成某一矢量时先将这一矢量分解到离它最近的两个基本矢量,而后用这两个基本矢量去表示,而每个基本矢量的作用大小就利用作用时间长短去代表。用电压矢量按照不同的时间比例去合成所需要的电压矢量。从而保证生成电压波形近似于正弦波。
变频电机驱动的核心是让电压空间矢量按圆形轨迹连续旋转,这样电机才能输出平稳的转矩。但这个旋转的矢量方向是时刻变的,就像人跑步时方向一直在微调,没法一次性算出所有时刻的控制参数。而计算机处理连续变化的信号时,没办法做到 “实时无限次计算”。所以工程师就想了个办法 —— 给定时器设个固定周期,比如 0.1ms,把连续的旋转过程切成一个个独立的 “小时间段”。在每个 0.1ms 里,就近似认为矢量方向是不变的,只算这一瞬间合成目标矢量需要的两个相邻基本矢量的作用时间。等这个 0.1ms 结束,定时器触发下一次计算,再根据矢量新的位置算下一段的时间。这样既降低了计算机的运算压力,又能精准跟上矢量的旋转节奏。
这是为了填满每个 0.1ms 的定时周期,保证控制的连贯性,具体可以从两方面理解:
- 填补时间空缺:根据 SVPWM 的 “伏秒平衡” 原理,两个基本矢量的作用时间是按合成目标矢量的需求算出来的。比如目标矢量比较弱的时候,算出来的两个基本矢量作用时间加起来可能只有 0.06ms,那 0.1ms 里就剩下 0.04ms 的空缺。这时候不能让逆变器处于无控制状态,不然输出电压会紊乱,电机转矩就会波动。而零矢量刚好能解决这个问题 —— 零矢量对应的逆变器开关状态是 “000” 或 “111”,这两种状态不会产生驱动电机的有效电流,相当于给电机一个 “稳定过渡” 的信号,把空缺的时间填满。
- 合理选零矢量减少损耗:不是随便插零矢量就行,要按当前开关状态选。比如当前用的基本矢量是 “100”,切换到零矢量 “000” 时,只需要改一相的开关状态;但要是切换到零矢量 “111”,就得改两相。工程师会选切换时开关动作少的零矢量,这样能减少开关器件的损耗,还能降低电机运行的噪音。
普通 PWM 是 “直接调脉冲”,SVPWM 是 “先定矢量目标,再靠脉冲实现”。为了区分这种基于空间矢量的特殊 PWM,就给它命名为 SVPWM(空间矢量脉宽调制)。
SVPWM 的主要特点有:
1.在每个扇区虽有多次开关切换,但每次开关切换只涉及一个器件,所以开关损耗小。
2.利用电压空间矢量直接生成三相 PWM 波,计算简单。
3.逆变器输出线电压基波最大值为直流侧电压,比一般的 SPWM 逆变器输出电压高15%
前面推导的过程可以得知:\(𝑢_{𝑆}(𝑡)\)是一个旋转的空间矢量,它的幅值不变,为相电压峰值的 1.5 倍,且以角频率ω= 2πf 按逆时针方向匀速旋转的空间矢量。

本文来自博客园,作者:Bathwind_W,转载请注明原文链接:https://www.cnblogs.com/bathwind/p/19318840

浙公网安备 33010602011771号