PWM可以算是數(shù)字電路中的“獨臂”神通,“獨臂” - 只需一根線;“神通” - 在很多關(guān)鍵的應(yīng)用中起到棟梁的作用。PWM(脈寬調(diào)制 Pulse Width Modulation)從字面意思上講它是一種“調(diào)制”方式,調(diào)制就意味著在某些載波信號上攜帶了某些的信息,通過解調(diào)的過程就可以得到其攜帶的信息,這些信息的屬性由PWM的產(chǎn)生端定義,總之在這一根僅僅發(fā)生0、1交替變化的信號線上可以做出很多文章。
今天我們就看看如何通過PWM的方式實現(xiàn)數(shù)字到模擬變換的功能,也就是通過改變一根管腳的輸出脈沖,得到模擬世界的某種波形。
首先PWM是由一串連續(xù)行走在某輸出管腳上的0、1交替出現(xiàn)的信號組成,我們稱高電平1為ON,低電平0為OFF,ON+OFF為一個周期T,ON的持續(xù)時間除以周期T就為占空比 - Duty Cycle,看下面的兩個圖。
高電平1為ON,低電平0為OFF
占空比(Duty Cycle)為高電平持續(xù)時間除以周期
如果發(fā)送端用脈沖的占空比來傳遞“電壓值”,也就是將某個數(shù)字的電壓值對脈沖的占空比進行調(diào)制,就可以在接收端通過RC低通濾波器(也就是解調(diào)器)從調(diào)制脈寬的數(shù)據(jù)流中得到需要的模擬電壓值,從而達到DAC的目的。看下面的動圖 - 假設(shè)脈沖的占空比為0的時候(整個周期全部為OFF - 低電平)代表電壓值為0,占空比為100%的時候(整個周期全部為ON - 高電平)代表電壓值為最高電壓,比如3.3V,則40%的占空比就是40%*3.3V。占空比改變-每個周期的脈寬改變,也就意味著輸出的電壓值在改變。
用脈寬的改變攜帶電壓值的變化信息
用一個電阻和電容組成的低通濾波就可以將PWM中攜帶的電壓信息“解調(diào)”成模擬的電壓值
前面講過DAC的兩個關(guān)鍵指標(biāo) - 轉(zhuǎn)換率和轉(zhuǎn)換精度,在PWM里是如何對應(yīng)的這兩個指標(biāo)么?
看一下下面的波形:
PWM-DAC的轉(zhuǎn)換頻率相當(dāng)于脈沖的重復(fù)頻率
PWM-DAC的分辨率相當(dāng)于脈沖寬度相對于整個周期的精度,舉例如果一個最小的脈沖ON的時間為5ns(可以用100MHz的時鐘計數(shù)產(chǎn)生),PWM脈沖的周期為5ns x 256 = 1.28us,則這個PWM-DAC相當(dāng)于是8位的DAC。
也就是說如果你用100MHz的時鐘來通過PWM的方式做一個8位的DAC,最高的轉(zhuǎn)換頻率也只能到1/1.28us ~ 781KHz分辨率高則轉(zhuǎn)換率降低,因此用PWM做的DAC一般用于生成非常低頻的信號乃至直流信號。
下面的圖為經(jīng)過一個最簡單的由一個電阻R和一個電容C構(gòu)成的低通濾波以后得到的模擬信號,可以看到在輸出的模擬信號上還是有很高頻率的紋波。
通過RC低通濾波得到的模擬輸出信息
如果要進一步平滑輸出模擬信號上的波紋,可以通過加入電感或著用運算放大器構(gòu)成的有源低通濾波器來對紋波實現(xiàn)更強的抑制。
是不是很簡單?只需一個R和一個C就能得到你想生成的模擬信號,做一個簡單的任意波形發(fā)生器很簡單啊。
有的朋友會問,很多MCU內(nèi)部都有DAC啊,干嘛不用內(nèi)部的DAC?
蘇老師答:如果有的話自然不需要折騰PWM了,如果沒有,只需要一根管腳和倆器件就能實現(xiàn)這樣的功能還是很有用的,再說了,也許你的系統(tǒng)中需要多個DAC的功能,而你的MCU內(nèi)部沒有足夠的DAC,且你也不想或者沒有足夠的管腳外掛一個單獨的DAC器件(需要I2C或SPI總線連接),PWM方式是個非常不錯的選擇哦。
如果你用的是FPGA或CPLD,里面根本沒有DAC,而你又需要一個,拿出一個管腳來產(chǎn)生PWM就會非常666。
理解用PWM生成DAC的機制、局限,在關(guān)鍵的時候也許就能起到意料不到的結(jié)果。
最好的方式是直接動手試試嘍 - 在一個小腳丫的輸出管腳上加上R和C,用計數(shù)器生成以下PWM信號,用示波器看看你能得到什么。
-
PWM
+關(guān)注
關(guān)注
114文章
5181瀏覽量
213796 -
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1605瀏覽量
80578
原文標(biāo)題:漫談“獨臂神通”PWM(1):用1根管腳、1個電阻和1個電容實現(xiàn)DAC
文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論