我们大多数人都了解PWM DAC。它们易于实现,价格便宜,并且对于低性能应用程序是可接受的。
该方法是对PWM信号的HF分量进行滤波,只剩下与占空比成正比的LF或DC分量。但是,低通滤波器无法完全滤除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频率和占空比,而另一个使用CCP产生中断以启动另一个定时器,该延迟等于PWM周期的一半。其他定时器中的单个CCP用于设置为相同的PWM频率和占空比。您还必须“微调”延迟,因为软件将在PWM信号之间引入额外的时间。例如,在我的代码的第102行中,我将比较寄存器的值从(timer_period + 1)/ 2更改为(timer_period + 1)/ 2-27。
我做了一点研究,看看其他微控制器是否具有类似的硬件以及实现我使用的方法的能力:许多Atmel微控制器都有一个以上的计时器,通常每个计时器都有两个CCP(例如ATmega 328)。因此,应该有可能实现此方法。另一个流行的例子是STM32F051R8(这是一些流行的ST板使用的微控制器)具有11个定时器,其中许多具有不止一个CCP。德州仪器(TI)的基于ARM的微控制器通常具有单独的PWM和计时器模块(例如TM4C123GH6PM),因此实现相移应该更容易。使用一个定时器可以启动两个PWM模块,延迟时间为PWM周期的一半。如果您尝试为不同的微控制器实现这种相移方法,请在评论部分让我知道。
图1 单PWM和双PWM威廉希尔官方网站
在 相移DAC的V out处,将两个PWM信号相加,并希望某些谐波相互抵消,因此最终可以降低纹波。
让我们看一下使用不同电阻值的三种情况。每个PWM信号在25%占空比下均为100 kHz。
图2 上面的迹线是常规PWM。较低的是双相移PWM。伏/格 从左到右递减:100mV,50mV,5mV。
通过查看结果,我们观察到两件事。首先,降低了峰峰值纹波。其次,常规PWM DAC的纹波基频等于PWM信号的频率(100 kHz)。相移PWM DAC的纹波基频等于 PWM信号的二次谐波(200 kHz),这意味着我们已成功通过相移DAC消除了PWM信号的一次谐波。
这种方法的一个优点是在不增加上升时间的情况下降低了纹波(或在上升时间的一半处具有相同的纹波)。
另一个潜在的优势是,通过将两个PWM的计数间隔设置为一个中间值,可使DAC的有效分辨率加倍。这确实会引起轻微的不对称并增加纹波,但是影响可以忽略不计。
编辑:hfy
全部0条评论
快来发表一下你的评论吧 !