4. 线性调制区计算:M_max的理论值推导

好,咱们进入第4章。前面几章我们把SVPWM的基本原理和扇区判断讲清楚了。这一章,我带你算一个硬核的东西——调制深度M的最大值。

说白了,就是问一个问题:SVPWM到底能把母线电压用到什么程度?

我在刚入行那会儿,看到别人写的代码里M_max直接写0.866,心里犯嘀咕:为啥不是1?后来自己推导了一遍,才明白这里面藏着三相系统的本质约束。今天咱们就把这个账算清楚。

4.1 什么是线性调制区?

先给个直观定义:线性调制区,就是输出电压幅值与调制深度M成线性比例的区域。

在这个区域内,你给M赋值多少,输出相电压幅值就乖乖地跟着线性增长。一旦超出这个区域,输出电压就会饱和——你再往上加M,输出波形就开始削顶、畸变,这就是过调制区。

核心结论:线性调制区的边界,就是M_max = 2/√3 ≈ 1.1547(以直流母线电压Udc为基准时)。但更常用的归一化形式是M_max = 0.866(以逆变器最大输出能力为基准时)。

这两个数字怎么来的?别急,咱们一步步推。

4.2 最大不失真输出电压的推导

推导之前,先统一一下基准。我个人习惯用直流母线电压Udc作为标幺化的基准值。这样推导出来的M_max是1.1547,物理意义更直接。

4.2.1 从电压矢量极限说起

SVPWM的核心是合成电压矢量。每个扇区里,我们能用两个相邻的非零矢量和一个零矢量来合成任意方向和大小的矢量。

但有个限制:合成矢量的轨迹不能超出六边形边界。为什么呢?

  • 非零矢量的长度是固定的:|V1| = |V2| = ... = |V6| = 2/3 · Udc
  • 两个相邻矢量的合成,最大长度发生在它们夹角60°的角平分线上
  • 这个最大长度,就是六边形内切圆的半径

嗯,这里要注意:内切圆半径才是线性调制的边界。超出这个圆,矢量轨迹就会切到六边形外面去。

4.2.2 内切圆半径的计算

咱们拿第一扇区来算。两个非零矢量V1(100)和V2(110),长度都是2/3·Udc,夹角60°。

合成矢量的最大幅值,出现在两个矢量作用时间相等的时候。这时候合成矢量正好落在角平分线上。

用几何关系算一下:

内切圆半径 r = |V1| · cos(30°)
              = (2/3 · Udc) · (√3/2)
              = Udc / √3
              ≈ 0.57735 · Udc

这个r,就是最大不失真相电压幅值。

我的经验:很多教材直接给结论,但我在项目中吃过亏——有一次设计电机驱动器,没仔细算这个极限,结果在高速区M设到了1.0,波形严重畸变,电流谐波大得吓人。后来老老实实把M限在0.866(对应相电压幅值Udc/√3),问题立刻解决。

4.2.3 从相电压到线电压

有了相电压幅值,线电压幅值就好算了:

线电压幅值 = √3 · 相电压幅值
           = √3 · (Udc / √3)
           = Udc

有意思吧?SVPWM在线性调制区内,最大输出线电压幅值正好等于直流母线电压Udc。而SPWM只能输出0.5·Udc的线电压幅值。这就是SVPWM电压利用率高的根本原因。

4.3 M与输出相电压幅值的关系

现在咱们把调制深度M的定义和相电压幅值挂上钩。

4.3.1 M的两种常见定义

我在不同项目里见过两种定义方式,容易搞混,这里给你列清楚:

定义方式 公式 M_max 说明
以Udc为基准 M = Vph / (Udc/2) 1.1547 相电压幅值除以半母线电压
以逆变器最大输出为基准 M = Vph / (Udc/√3) 1.0 相电压幅值除以最大不失真幅值

我个人更常用第一种,因为M直接和母线电压挂钩,调试时方便判断余量。但很多芯片厂商的库函数用第二种,M_max就是1.0。你接手别人的代码时,一定要先确认他用的是哪种定义。

4.3.2 线性关系表达式

在线性调制区内,M和相电压幅值的关系非常简单:

V_ph = M · (Udc / 2)      (定义一)
V_ph = M · (Udc / √3)     (定义二)

当M达到最大值时:

V_ph_max = Udc / √3 ≈ 0.577 · Udc

这个值就是前面算出来的内切圆半径。

4.4 知识体系总览

下面这张图把本章的核心逻辑串起来了。你看一遍,应该能对整个推导链条有个全局印象。

线性调制区与M_max推导知识体系 直流母线电压 Udc 非零矢量长度 = 2/3 · Udc 六边形内切圆半径 = Udc / √3 相电压幅值 = Udc / √3 线电压幅值 = Udc M_max = 2/√3 ≈ 1.1547 电压利用率提升15.47% 线性调制区边界:输出相电压幅值 = Udc/√3,对应M_max

4.5 避坑指南与实用建议

推导完了,说几个我在实际项目中踩过的坑。

我曾经犯过的错:

  • 坑1:把M_max设成1.0(以Udc/2为基准时),结果在弱磁区之前就进入了过调制。后来发现是没考虑死区效应和管压降,实际最大线性调制区比理论值还要小5%~8%。
  • 坑2:不同芯片的PWM模块对占空比的表示方式不同。有的用周期计数值,有的用比较值。换算M的时候一定要确认标幺化的基准。
  • 坑3:在过调制区边缘,电流波形会开始出现明显的5次、7次谐波。如果你在做伺服驱动,建议留10%的余量,别卡着M_max跑。

我的调试习惯:

拿到一个新平台,我会先写一段测试代码:固定Udc,从M=0.1开始步进到1.2,同时用ADC采样相电流,观察电流波形的THD。当THD突然跳变超过5%时,那个点就是实际线性调制区的边界。这个实测值往往比理论值低一点,记录下来,以后就用这个值做限幅。

4.6 本章小结

好,咱们捋一下这章的核心内容:

  • 线性调制区的本质:合成电压矢量轨迹不能超出六边形内切圆
  • 最大不失真相电压幅值:Udc/√3 ≈ 0.577·Udc
  • M_max的理论值:以Udc/2为基准时是1.1547,以Udc/√3为基准时是1.0
  • 电压利用率:SVPWM比SPWM高15.47%,线电压幅值可达Udc