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

評論