4. 三角函数与和差化积:正弦、余弦、正切函数回顾,和差化积公式在PWM调制中的应用
好,咱们今天聊点实在的。三角函数这东西,上学时觉得就是算算角度、画画波形。但进了电机控制这行,你会发现它简直就是我们的“母语”。你写的每一行代码,本质上都是在跟正弦、余弦打交道。
我个人习惯,在讲PWM调制之前,先把这几个老朋友请出来,好好叙叙旧。因为后面那些SVPWM、谐波注入,说白了都是它们的变形。
4.1 正弦、余弦、正切:不只是数学符号
先看最基础的。正弦函数 sin(θ),余弦函数 cos(θ)。在电机里,θ 代表什么?转子位置,或者你合成的电压矢量角度。
- 正弦 sin(θ):描述的是对边与斜边的比值。在电机里,它直接对应着某一相电流或电压的瞬时值。
- 余弦 cos(θ):邻边与斜边的比值。它和正弦是“铁哥们”,相位差90度。你想想看,Clark变换里,α轴和β轴就差90度,用的就是它俩。
- 正切 tan(θ):sin/cos。这个在算角度时特别有用。比如你用反正切函数 atan2() 从电流值反推转子位置,本质上就是在算正切的逆运算。
核心关系:sin²(θ) + cos²(θ) = 1。这个恒等式在矢量控制里经常用到,比如做归一化处理时。
我在项目中遇到过一个问题:用查表法算sin值时,表做小了精度不够,做大了又占Flash。后来我改用Cordic算法,只用移位和加减就能算三角函数,省了不少资源。嗯,这里要注意,Cordic虽然省空间,但迭代次数多了延时也大,得权衡。
4.2 和差化积:从“加减”到“乘除”的魔法
和差化积公式,上学时觉得就是一堆枯燥的公式。但在PWM调制里,它简直是“化繁为简”的神器。
公式长这样:
sin α + sin β = 2 sin[(α+β)/2] cos[(α-β)/2]
sin α - sin β = 2 cos[(α+β)/2] sin[(α-β)/2]
cos α + cos β = 2 cos[(α+β)/2] cos[(α-β)/2]
cos α - cos β = -2 sin[(α+β)/2] sin[(α-β)/2]
为什么要学这个?因为在电机控制里,我们经常要处理两个不同频率的波形叠加。比如,基波加上一个高频注入信号。直接算加减容易,但分析起来很麻烦。用和差化积,就能把“两个波的和”变成“一个波乘以另一个波”。
我的小技巧:记不住公式?没关系。你只需要记住“和差化积,积化和差”这八个字。具体用的时候,脑子里想一下“两个正弦相加,结果是两倍的正弦乘余弦”。多用几次就熟了。
4.3 和差化积在PWM调制中的实战应用
好了,重头戏来了。和差化积到底怎么用在PWM里?我举两个最常见的场景。
4.3.1 场景一:SPWM中的三次谐波注入
传统的SPWM,调制波是正弦波。但它的直流母线利用率不高,只有86.6%。怎么提高?注入三次谐波。
你看,三相正弦波:
U相:sin(ωt)
V相:sin(ωt - 120°)
W相:sin(ωt + 120°)
如果直接加一个三次谐波 sin(3ωt),会发生什么?我们用和差化积分析一下。
假设注入的三次谐波幅度是1/6。那么U相的调制波变成:
f_U(t) = sin(ωt) + (1/6) sin(3ωt)
为什么要加1/6?因为这样能让波形的顶部变平,底部变尖。从数学上看,sin(ωt) + (1/6) sin(3ωt) 的最大值比纯 sin(ωt) 小,所以你可以把调制比调得更高,而不至于过调制。
我曾经在调试一个伺服驱动器时,发现母线电压明明够,但电机就是跑不到额定转速。查了半天,发现是SPWM的调制比卡在0.866上不去。后来加了三次谐波注入,调制比直接干到1.0,问题解决。这就是和差化积在背后起作用。
4.3.2 场景二:SVPWM中的扇区判断与时间计算
SVPWM(空间矢量脉宽调制)是现在的主流。它的核心思想,是用八个基本电压矢量去合成任意方向的矢量。
在计算每个扇区的作用时间时,会用到大量的三角函数。比如,计算T1和T2:
T1 = Ts * m * sin(60° - θ)
T2 = Ts * m * sin(θ)
这里 m 是调制比,θ 是矢量角度。你看,sin(60° - θ) 和 sin(θ) 就是两个正弦值。如果直接查表算,每个PWM周期都要算两次sin,计算量不小。
但如果你用和差化积的思路,把 sin(60° - θ) 展开:
sin(60° - θ) = sin60° cosθ - cos60° sinθ
= (√3/2) cosθ - (1/2) sinθ
这样,你只需要算一次 sinθ 和一次 cosθ,然后做几次乘加就行了。比查两次sin表快得多。
避坑指南:我曾经在定点DSP上实现SVPWM时,直接用浮点算sin和cos,结果一个PWM周期里计算时间超标,导致中断溢出。后来改成查表+线性插值,再配合和差化积公式化简,才把时间压下来。记住,在嵌入式里,乘加运算比三角函数快一个数量级。
4.4 总结:这些公式到底怎么用?
说了这么多,其实就一句话:三角函数是电机控制的“语言”,和差化积是“语法”。
- 你写FOC(磁场定向控制),离不开Park变换和Clark变换,里面全是sin和cos。
- 你做无传感器控制,要用反正切算角度。
- 你搞谐波抑制,要用和差化积分析不同频率分量的相互作用。
我个人建议,不要死记硬背公式。而是理解它们的物理意义:sin和cos描述的是旋转,和差化积描述的是叠加。当你看到两个波形叠加时,脑子里能自动浮现出“它们相乘会变成什么”,那就算真正入门了。
下一章,我们会把这些知识串起来,讲一讲Clark变换和Park变换的数学本质。到时候你会发现,原来那些看似复杂的变换,其实就是三角函数在坐标系里的投影而已。