载波比得多少合适
在 上一篇 文章里,我讲解了同步调制和异步调制。
那时候,实现的同步调制是有问题的。主要在同步调制在载波比的计算上出了问题。
原来的想法是,载波比是要能被3整除。同时还得是奇数。
其实这个公式说的是,正弦波半周上的 pwm 波的数量,得是能被3整除。同时还得是奇数。 也就是说,其实整个周期的载波比,是能同时被6整除. 同时还得是2的奇数倍。
于是发现了代码中的错误。进行了修正。
虽然实际上靠听觉并不能发现电机的声音有任何变化。。。。。。
在同步调制里,正弦波的频率变高。但是, 每个正弦波所包含的 pwm 方波的个数是维持不变的。而且 pwm 方波的个数,在每个半周里,必须是奇数。 这样 pwm 占空比最大的那个位置,正好对应 正弦值最大的时刻。 这样的谐波是最小的。
如上图所示, 每个半周里,有5个 pwm 波。整个周期里,一共是10个 pwm。所以载波比为 10。 而 10 正好是 2 的奇数倍。
而这,只是对单相正弦信号输出的要求。
如果要输出三相对称正弦波信号,则载波比N,还必须同时满足能被3整除。 这样每个相的正弦波,也都在 pwm 波开始的时间里,保持对称。
因为 10 不能被3整除
所以要再向后找 14, 18 . 于是第一个满足这个要求的载波比是 18
然后接下来,每个满足的载波比数,都依次比上一次多 12
18 30 42 54
之前的代码就是这个地方计算错了。
今天改进了这个。把载波比计算终于正确了。
错误的载波比,并没用起到同步调制减少谐波的优势。还不如实现起来更简单的异步调制。
载波和基波的相位同步
除了载波比的计算要正确。载波的相位还得和基波同步。才能保证载波pwm占空比最大的那个地方,恰好也对应于 sin 值最大的地方。
只要有一次,基波和载波的相位对上,则在下一次动载波比之前,就能一直维持住同步。
也就是说,进行相位对齐的时机,是在修改载波比的时候。
为了让输出波形不会突变到和载波对齐。在修改载波比的时候,要进行一段时间的异步调制。然后让载波和基波频率对上后。切换为同步调制。
在异步调制的时候,随时监控基波和载波的相位差,追平的时候,立刻切换为同步调制。
一旦进入同步调制。计算占空比的代码其实会非常简单。 因为同步调制下,占空比是周期变化并且固定的。而且是固定的几个数值。
为何之前说,同步调制的代码更复杂。这里又说,一旦进入同步调制,计算占空比的代码会非常简单呢?
因为同步调制的代码是逻辑复杂。要进行“换挡” 操作。换挡后还要进行同步。
但是,计算量却少了。因为占空比的值是完全固化了。
如图所示,经过改进后的代码,计算 pwm 占空比的时间缩短到了5微妙。在次之前,计算时间为 9us。 ps,在使用定点数算法优化前的计算时间为35us。
图片中的载波比,显示的是半个sin周期里 pwm 波的数量。因此是永远为奇数。且能被3整除。之所以折半显示,是为了能心里默算它是不是正确的。
不过,这个代码在进入同步状态前,使用的还是异步调制。这个代码计算量就会比同步调制稍大。还是 10us。
但是因为显示屏更新速度慢,因此是抓不到这个瞬间的。因为相位对齐的速度是非常快的。 在换挡的一瞬间,马上就进入同步状态了。
Comments