STM32學習之PWM DAC實驗中的濾波電路部分元件參數的由來問題

在正點原子STM32利用PWM輸出+RC濾波來實現一個DAC功能的實驗中,有幾個參數自己不是很理解,通過翻閱資料,百度等漸漸理解,現總結如下:(以下全是個人理解,如有不縝密的地方,還請閱讀者見諒並指出)

首先,我們得先明白爲什麼通過PWM輸出+RC濾波能實現DAC的功能,DAC的功能不用多說,看其名字就知道是數模轉換器,也就是將一串數字信號,轉換爲對應的模擬信號。比如我們在利用stm32做DAC實驗中,如果我們的DAC是12位的,那麼我們就可以看作將我們的0~3.3V間的電壓分成了2的12次方,也就是4096份,那麼我們由每一份對應的電壓*我們輸入的份數,那麼就可以得到一個電壓值,我們可以利用我們的ADC進行採集,就可以直接顯示出來啦。

以上是對DAC的一個簡單的介紹和理解,而這裏我們用PWM輸出+RC濾波是怎樣實現DAC的功能的呢,我們就要回過去複習我們之前學習的PWM輸出實驗,在那個實驗中(主函數代碼如圖1),我們通過在主函數中添加循環,設置PWM比較值,使得其佔空比不斷變化,從而實現在一個很快的週期裏高低電平佔比的變化,從而使人能看到燈從亮到暗,從暗到亮,我的理解如圖2所示


圖1

如圖2 ,假如燈是從亮到暗(低電平亮),那麼,PWM輸出的波形的變化則爲


也就是說,我們通過在一個較快的頻率的內改變PWM的佔空比就可以將一個明明是間斷數字的信號,在我們眼睛看起來就像一個連續變化的模擬信號。


圖3 實際電路典型PWM波形

對於這樣一個PWM波,n爲一個週期內的高電平的脈衝個數,N爲一個週期內的脈衝數。它是一個周期函數,那麼我們就可以得到它的傅里葉級數


通過其傅里葉級數我們知道,在一個週期中,如果N一定,那麼其直流分量與n有關,n越大,一個週期內的高電平所佔的比例越大,那麼我得到的直流分量就越大,所以,我們可以通過調節PWM的佔空比,從而調節n的值,這樣我們就可以輸出不同大小的直流電壓啦。但是這裏我們還得將基波(1次諧波)、二次諧波、三次諧波......濾掉,由於高次諧波的頻率是基頻的整數倍,所以我們只要採用低通濾波器將基波濾掉,高次諧波也就基本不存在了。

假設 VH 3.3VVL 0V,那麼一次諧波的最大值是 2(VH-VL)/π=2*3.3/π=2.1V ,而8 位分辨條件下,我們一般要求 1 次諧波對輸出電壓的影響不要超過 1 個位的精度 ,一個位的精度也就是將3.3V分成256份,即3.3/256=0.01289V,那麼我們就需要我們的低通濾波器提供的衰減至少爲爲20lg(0.01289/2.1)=-44dB。

接下來我們需要確定我們的截止頻率,和PWM的輸出頻率。對於PWM的輸出頻率,我們知道系統時鐘爲72MHz,那麼計數1的時間爲1/72M,因爲我們要設計的是8位分辨率的DAC輸出,所以計數完NT,也就是2^8=256個數需要的時間爲256*(1/72M),即PWM的輸出頻率爲72M/256=281.25KHz。

對於截止頻率fc,這裏需要知道什麼是幅頻特性和相頻特性。放大電路的電壓放大倍數與頻率的關係稱爲幅頻特性,輸出信號與輸入信號的相位差與頻率之間的關係稱爲相頻特性。兩者統稱頻率特性對於如圖4所示的一階無源低通濾波器,其幅頻特性和相頻特性可以表示如下:



圖4

所以可以利用20lg[|H(jw)|]=-44,則可以|H(jw)|=0.0061381,將PWM的輸出頻率f=281.25KHz帶入可得,fc≈1.73KHz,而二階無源低通濾波器的幅頻特性|H(jw)|=1/[1+(W/Wc)^2],代入取得這時的fc≈22.103KHz,這裏採取二階濾波,所以截止頻率爲22.103KHz,因爲我們需要濾高頻,所以電容稍微取小些,原子哥的講義中選的102和101,也就是1000pF和100pF,這裏使R1C1=R2C2,則根據公式fc=1/2πRC可求得R1=7.2K,R2=72K。但是原子哥的講義中選用了4.7K和47K,得到了更大的截止頻率,這是因爲該電路他們還需要用作 PWM DAC 音頻輸出,而音頻信號帶寬是22.05Khz,爲了讓音頻信號能夠通過該低通濾波,同時爲了標準化參數選取,所以確定了這樣的參數。

 

   正點原子板子的PWM DAC 二階 RC 濾波原理圖
                          

搭建電路,將程序源碼燒進單片機(程序是想要實現將PWM輸出的電壓濾波後輸入到ADC採集顯示),顯示如下:


可以看到ADC採集的電壓值和PWM輸出的值差不多,基本算法是:當輸入110時,即我們之前提到的n(一個週期內高電平的脈衝個數),如果全是我們的直流量,則爲110*(3.3/256)≈1.4179,所以我們基本達到實驗要求。同時發現一個現象,這裏我們最好的選擇標準是R1=R2,C1=C2,如果我們以標準R1C1=R2C2來選擇電阻電容的話截止頻率誤差會更大。因爲這樣不僅R1,R2,C1,C2存在了與標準值的誤差,而且R1C1=R2C2這裏也會有誤差(個人理解)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章