降低PWM DAC紋波的方法通常有兩種:一種是降低低通濾波器的截止頻率,另一種是提高PWM信號的頻率。然而,前一種方法會加長上升時間,后一種方法會導致分辨率降低。本設計實例討論了在不使用上述兩種方法的情況下,如何降低PWM DAC的紋波。
我們大多數人都知道PWM DAC(數模轉換器)。它們很容易實現,也很便宜,非常適合一些低性能的應用。
實現它們的方法是濾除PWM信號中的高頻分量,只留下正比于占空比的低頻或直流分量。但是低通濾波器并不能完全濾除PWM頻率,因此低頻/直流信號中通常都會有一定程度的紋波。
減少PWM DAC紋波的方法一般有兩種。一種是降低低通濾波器的截止頻率,另一種是提高PWM信號的頻率。然而不可避免的是,更低的截止頻率會延長上升時間;如果是在給定時鐘頻率點通過減小計數器尺寸實現的,那么更快的PWM頻率會降低分辨率。
下面要討論的設計實例非常有趣,著重介紹了另外一種降低PWM DAC紋波的方法。
事實上,我們可以使用相位差為180°的兩個PWM信號來降低上述紋波。從直覺上,當兩個相同頻率的正弦波的相位相差180°時,它們會相互抵消,因此我們使用相位差為180°的兩個PWM信號也能將彼此的諧波分量抵消干凈,是這樣嗎?確實是這樣,但并不是PWM信號的所有諧波分量都能抵消,有些分量可以抵消,有些卻抵消不了。這與傅里葉級數有關,比較復雜,這里就不羅列一大堆數學公式來進行解釋了。
兩個PWM信號之間180°的相位差是如何實現的呢?我使用了TI的MSP320FR5969 LaunchPad,這種方法很常用。為了實現相位移動,需要兩個定時器。其中一個定時器必須包含兩個比較-捕獲-PWM(CCP)模塊,另一個只需要一個CCP模塊。
在包含兩個CCP模塊的定時器中,可以用一個CCP模塊來設置該定時器的PWM頻率和占空比,另一個CCP模塊產生中斷,用于啟動另一個定時器,兩者的延時等于PWM周期的一半。另一個定時器中的CCP模塊用于設置相同的PWM頻率和占空比。你還必須對這個延時進行“微調”,因為軟件會在PWM信號之間增加額外的時間。舉例來說,在我的代碼的102行,我將比較寄存器的值從(timer_period+1)/2改為了(timer_period+1)/2-27。
我做了一些小調查,想看看其它微控制器是否具有相同的硬件和能力來實現我所用的方法:許多Atmel微控制器都有1個以上的定時器,每種控制器通常都有兩個CCP(比如ATmega 328),因此實現這種方法應該是可能的。另外一個常見的例子是STM32F051R8(這是一些流行的ST電路板使用的微控制器),它有11個定時器,其中許多定時器都有1個以上的CCP。TI基于ARM的微控制器通常有獨立的PWM和定時器模塊(如TM4C123GH6PM),因此應該更容易實現相移。使用其中一個定時器,兩個PWM模塊就可以以一半PWM周期的延時開啟。
圖1:單路和雙路PWM電路。
在相移DAC的Vout端,兩個PWM信號被累加在一起,結果有些諧波分量彼此抵消,最終實現了降低紋波的效果。
我們看看使用三種不同電阻值時的情況。每個PWM信號都是占空比為25%、頻率為100kHz。
圖2:上面的波形是傳統PWM,下面的波形是雙路相移PWM。從左到右每格的電壓遞減100mV、50mV、4mV。
從圖中的結果可以看出:首先,峰-峰紋波降低了;其次,傳統PWM DAC的紋波基頻等于 PWM信號的頻率(100kHz)。相移PWM DAC的紋波基頻等于PWM信號的二次諧波(200kHz),這意味著我們用相移DAC成功地刪除了PWM信號的一次諧波。
這種方法的一個優點是不用增加上升時間也能降低紋波(或者相同的紋波只需一半的上升時間)。
另外一個潛在優點是,將兩個PWM設置為相隔一個計數值可以獲得中間值,進而實現DAC有效分辨率的翻倍。雖然這會導致少許的不對稱并增加紋波,但是影響很小可以忽略不計。
-
PWM
+關注
關注
114文章
5141瀏覽量
213396 -
微處理器
+關注
關注
11文章
2247瀏覽量
82312 -
定時器
+關注
關注
23文章
3237瀏覽量
114467
發布評論請先 登錄
相關推薦
評論