降低PWM dac的纹波

文章作者:Alperen Akkuncu

了解如何在不降低低通滤波器截止频率或增加PWM信号频率的情况下降低PWM dac的纹波。

PWM dac易于实现,价格低廉,可用于低性能应用。

该方法是过滤PWM信号的高频成分,只留下与占空比成比例的低频或直流成分。但是,低通滤波器不能完全滤除PWM频率,因此,LF/DC信号一般会有一些纹波。

有两种方法可以减少PWM DAC的纹波。你可以降低低通滤波器的截止频率或增加PWM信号的频率。不可避免地,较低的截止频率转化为较慢的上升时间,更快的PWM频率转化为较低的分辨率时,通过减少计数器的大小在一个给定的时钟频率。

我将谈论一个有趣的设计理念,集中于降低PWM dac的波纹,而不使用上面讨论的方法。

结果表明,利用两个相位差为180°的PWM信号可以降低纹波。直观上,当两个相同频率的正弦信号有180°相位差时,它们会相互抵消,所以我们认为当我们使用两个相位差为180°的PWM信号时,谐波会相互抵消,对吧?嗯,这是真的,但不是所有的PWM信号的谐波。有些会被取消,但有些不会。它和傅里叶级数有关这在这篇文章中有点太复杂了,所以我就不讨论数学了。

如何实现两个PWM信号之间的180°相移?我使用了TI的MSP430FR5969 LaunchPad,但这种方法大多是通用的。为了实现相移,你需要两个计时器。其中一个定时器必须有两个比较捕获pwm (CCP)模块,而另一个只需一个CCP。

您使用其中一个ccp来设置有两个ccp的定时器中的PWM频率和占空比,另一个产生一个中断来启动另一个定时器,其延迟为PWM周期的一半。另一个定时器中的一个CCP用于设置相同的PWM频率和占空比。您还必须对延迟进行“微调”,因为软件将在PWM信号之间引入额外的时间。例如,在代码的第102行中,我将比较寄存器值从(timer_period+1)/2更改为(timer_period+1)/2-27。

我做了一些研究,看看其他微控制器是否有类似的硬件和实现我使用的方法的能力:许多Atmel微控制器有不止一个计时器,通常每个有两个ccp(例如,ATmega 328)。因此,应该可以实现这种方法。另一个流行的例子,STM32F051R8(这是一些流行的ST板使用的微控制器)有11个计时器,其中许多有不止一个CCP。德州仪器基于ARM的微控制器通常有单独的PWM和定时器模块(例如,TM4C123GH6PM),所以它应该更容易实现相移。通过使用其中一个定时器,两个PWM模块可以以PWM周期的一半的延迟启动。

PWM-DAC_low-ripple_01 (cr)
图1:单、双pwm电路

在移相DAC的Vout处,两个PWM信号被加在一起,希望一些谐波彼此抵消,从而我们最终得到更低的纹波。

让我们看看使用不同电阻器值的三种情况。每个PWM信号在25%占空比时为100kHz。

PWM-DAC_low-ripple_02 (cr)
图2:上面的道是传统的PWM。较低的是双移相PWM。伏特/ div。从左到右依次减小:100mV、50mV、5mV。

通过观察结果,我们可以观察到两件事。首先,峰间波纹被降低。其次,传统PWM DAC的纹波基频等于PWM信号的频率(100kHz)。相移PWM DAC的纹波基频等于PWM信号的二次谐波(200kHz),这意味着我们成功地用相移DAC消除了PWM信号的第一次谐波。

这种方法的一个优点是无需增加上升时间就能降低纹波(或在上升时间的一半时纹波相同)。

另一个潜在的优势是通过将两个pwm分开一个计数来获得中间值,从而将DAC的有效分辨率提高了一倍。这确实引起了轻微的不对称和增加的涟漪,但影响是微不足道的。

由EDN首次出版。

留下你的评论