一文教你如何將PWM信號(hào)轉(zhuǎn)換為模擬量信號(hào)
PWM代表脈沖寬度調(diào)制,目前將 PWM 理解為一種可以由數(shù)字 IC(如微控制器或555 定時(shí)器)產(chǎn)生的信號(hào)。這樣產(chǎn)生的信號(hào)將具有一串脈沖,并且這些脈沖將是方波的形式。也就是說(shuō),在任何給定的時(shí)間點(diǎn),波浪要么是高的,要么是低的。為了便于理解,讓我們考慮一個(gè) 5V PWM 信號(hào),在這種情況下,PWM 信號(hào)將是 5V(高)或接地電平 0V(低)。信號(hào)保持高電平的持續(xù)時(shí)間稱為“開啟時(shí)間”,信號(hào)保持低電平的持續(xù)時(shí)間稱為“關(guān)閉時(shí)間”。
對(duì)于 PWM 信號(hào),我們需要查看與其相關(guān)的兩個(gè)重要參數(shù),一個(gè)是 PWM 占空比,另一個(gè)是 PWM 頻率。
有一個(gè)測(cè)量位置變化的位置傳感器,用萬(wàn)用表電壓檔測(cè)量傳感器的輸出信號(hào),結(jié)果顯示的是模擬量信號(hào),即位置和信號(hào)輸出大小呈線性關(guān)系。但是,用示波器(Picoscope 4227)測(cè)量傳感器的輸出信號(hào),顯示的卻是PWM信號(hào)(脈寬調(diào)制),即位置不同,輸出PWM信號(hào)的占空比不同。
PWM信號(hào)的參數(shù)是:200 Hz, 低電平為0V,高電平為18V。
現(xiàn)在可以確定,我的傳感器輸出信號(hào)是PWM信號(hào)。PWM信號(hào)需要輸入到控制器I/O中,但是控制器I/O口不具備直接采集PWM信號(hào)的功能。
解決方案
設(shè)計(jì)個(gè)電路,將PWM信號(hào)轉(zhuǎn)化為模擬量信號(hào),然后將轉(zhuǎn)換后的模擬量信號(hào)輸入到控制器模擬量I/O口。
轉(zhuǎn)換電路
1. 二階壓控有源低通濾波電路。
設(shè)計(jì)一個(gè)深度濾波電路。濾波電路圖為:
低通濾波頻率公式為:f=1/(2π*RC),我最后選擇R=1K,C=10uf,算出的低通截止頻率f=15.9HZ。
濾波電路后端是一個(gè)運(yùn)算放大器,放大倍數(shù)公式:A=1+Rf/R1。我不希望電壓被放大,所以我選擇A=1.1。又因?yàn)镽1//Rf=2R(R1,Rf兩者并聯(lián)的值等于R串聯(lián)值),最終:Rf=220歐,R1=2.2k,R=1k。
2. 積分電路(無(wú)源濾波電路)
低通濾波電路前面是一個(gè)二級(jí)積分電路(將兩個(gè)電容都接地),R=1K,C=10uf。下圖是一級(jí)積分電路,設(shè)計(jì)的積分電路是將兩個(gè)下圖電路串聯(lián)構(gòu)成二級(jí)積分積分:
為驗(yàn)證電路效果進(jìn)行的測(cè)試,我使用的設(shè)備是PicoScope4227,由于該設(shè)備最大只能生成正負(fù)1V的電壓信號(hào),就生成了幅值為1V(低電平0V,高電平1V),頻率為200HZ的PWM信號(hào)作為積分電路的輸入信號(hào)。各種效果圖如下:
示波器直接采集發(fā)生器生成的PWM信號(hào),波形如下:
示波器從二階濾波電路輸入端采集信號(hào),波形如下。發(fā)現(xiàn)該號(hào)波形與上圖的波形相比已經(jīng)發(fā)生了變化。
示波器從一階濾波電路輸出端中采集到的信號(hào)波形,即濾波電路從左往右數(shù),第一個(gè)電阻與第一個(gè)電容交點(diǎn)的輸出波形:
濾波器從二階濾波電路輸出端采集到的信號(hào)波形,即最終輸出信號(hào)波形
最終輸出波形的參數(shù)。
問(wèn)題
1:為什么萬(wàn)用表電壓檔測(cè)量傳感器輸出信號(hào),結(jié)果是模擬量信號(hào),而示波器看到的是PWM信號(hào)?我該相信哪個(gè)結(jié)果?
答:這個(gè)問(wèn)題牽涉到測(cè)量輸入口的分辨率問(wèn)題。萬(wàn)用表輸入口的分辨率低(通過(guò)此例看低于200HZ),而示波器輸入口的分辨率高,可達(dá)幾千,甚至幾兆赫茲頻率,所以輸出的結(jié)果不同。我們要相信示波器顯示的結(jié)果。我理解PWM信號(hào)本質(zhì)還是希望達(dá)到模擬量的效果,只是表現(xiàn)形式不同。
2:關(guān)于計(jì)算公式
答:在低通濾波電路中,有個(gè)頻率公式f=1/(2π*RC), 它計(jì)算的是低通截止頻率(-3dB)。而在積分電路中,有個(gè)公式T=RC。這個(gè) T 是指電容充放電需要的時(shí)間。選取 T 時(shí),根據(jù)一般經(jīng)驗(yàn)公式,T>10 * T'(T'表示信號(hào)周期)。
在本例的積分電路中,RC=10ms,只有兩倍的信號(hào)周期,但是通過(guò)測(cè)試,信號(hào)效果還是比較理想的。如果將更多的積分電路串聯(lián),效果會(huì)更好。
3:PWM 信號(hào)被控制器采集還有其他方案嗎?
答:方案一:將PWM信號(hào)倍頻,就是提高PWM信號(hào)的頻率,但是占空比不變化。PWM倍頻后的頻率大于控制器I/O的分辨率,就可以被控制器默認(rèn)為做模擬量,從而可以輸入到模擬量I/O。
方案二:通過(guò)軟件辦法計(jì)算PWM的占空比。在控制器中編寫程序,首先定時(shí),測(cè)量這段時(shí)間內(nèi)PWM信號(hào)中高電平的時(shí)間,從而計(jì)算出占空比。