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

PWM加熱方式要如何實(shí)現(xiàn)

一種改善模擬調(diào)光關(guān)斷性能的方法

評(píng)論