雙 μC 的 PWM 頻率和分辨率
有兩種方法可以降低 PWM DAC 的紋波??梢越档偷屯V波器的截止頻率,或者提高PWM信號的頻率。不可避免地,較低的截止頻率轉(zhuǎn)化為較慢的上升時間,而更快的 PWM 頻率轉(zhuǎn)化為較低的分辨率(通過在給定時鐘頻率下減小計數(shù)器大小來實現(xiàn))。
該方法是過濾 PWM 信號的 HF 分量,只留下與占空比成正比的 LF 或 DC 分量。然而,低通濾波器并不能完全濾除PWM頻率,因此LF/DC信號一般會有一些紋波。
有兩種方法可以降低 PWM DAC 的紋波。可以降低低通濾波器的截止頻率,或者提高PWM信號的頻率。不可避免地,較低的截止頻率轉(zhuǎn)化為較慢的上升時間,而更快的 PWM 頻率轉(zhuǎn)化為較低的分辨率(通過在給定時鐘頻率下減小計數(shù)器大小來實現(xiàn))。
我將討論一個有趣的設(shè)計理念,它專注于在不使用上述方法的情況下降低 PWM DAC 的紋波。
事實證明,我們可以通過使用兩個相位差為 180° 的 PWM 信號來降低紋波。直觀上,當(dāng)兩個相同頻率的正弦信號之間存在 180° 相位差時,它們會相互抵消,所以我們期望當(dāng)我們使用兩個具有 180° 相位差的 PWM 信號時,諧波會相互抵消,對嗎?嗯,這是真的,但不是 PWM 信號的所有諧波。其中一些被取消,但其中一些 不。它與傅里葉級數(shù)有關(guān),對于這篇文章來說有點太復(fù)雜了,所以我不會深入討論數(shù)學(xué)。
如何實現(xiàn)兩個 PWM 信號之間的 180° 相移?我使用了 TI 的MSP430FR5969 LaunchPad,但該方法大多是通用的。為了實施相移,您將需要兩個定時器。其中一個定時器必須有兩個比較捕獲 PWM (CCP) 模塊,另一個只需要一個 CCP。
您可以使用其中一個 CCP 在具有兩個 CCP 的定時器中設(shè)置 PWM 頻率和占空比,并使用另一個 CCP 生成中斷以啟動另一個定時器,延遲等于 PWM 周期的一半。另一個定時器中的單個 CCP 用于設(shè)置相同的 PWM 頻率和占空比。您還必須“微調(diào)”延遲,因為軟件將在 PWM 信號之間引入額外的時間。例如,在我的代碼的第 102 行,我將比較寄存器值從 (timer_period+1)/2 更改為 (timer_period+1)/2-27。
我做了一些研究,看看其他微控制器是否有類似的硬件以及實現(xiàn)我使用的方法的能力:許多 Atmel 微控制器有多個定時器,通常每個都有兩個 CCP(例如,ATmega 328)。因此,應(yīng)該可以實施此方法。另一個流行的例子,STM32F051R8(這是一些流行的 ST 板使用的微控制器)有 11 個定時器,其中許多有多個 CCP。Texas Instrument 的基于 ARM 的微控制器通常具有單獨的 PWM 和定時器模塊(例如 TM4C123GH6PM),因此應(yīng)該更容易實現(xiàn)相移。通過使用其中一個定時器,兩個 PWM 模塊可以以半個 PWM 周期的延遲啟動。如果您嘗試為不同的微控制器實施這種相移方法,請在評論部分告訴我。
圖1 單和雙 PWM 電路
在 相移 DAC 的V out 處,兩個 PWM 信號相加在一起,希望一些諧波相互抵消,因此我們終得到較低的紋波。
讓我們看一下使用不同電阻值的三種情況。每個 PWM 信號在 25% 的占空比下都是 100 kHz。
圖2 上面的跡線是傳統(tǒng)的 PWM。下方是雙相移 PWM。伏特/格 從左到右遞減:100mV、50mV、5mV。
通過查看結(jié)果,我們觀察到兩件事。首先,峰峰值紋波降低。其次,傳統(tǒng) PWM DAC 的紋波基頻等于 PWM 信號的頻率 (100 kHz)。相移 PWM DAC 的紋波基頻等于 PWM 信號的二次諧波 (200 kHz),這意味著我們成功地使用相移 DAC 消除了 PWM 信號的諧波。
這種方法的一個優(yōu)點是在不增加上升時間的情況下降低紋波(或在上升時間的一半時保持相同的紋波)。
另一個潛在的優(yōu)勢是通過將兩個 PWM 分開一個計數(shù)以獲得中間值,從而使 DAC 的有效分辨率加倍。這確實會導(dǎo)致輕微的不對稱和紋波增加,但影響可以忽略不計。
評論