<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 一種基于PWM的電壓輸出DAC電路設(shè)計

          一種基于PWM的電壓輸出DAC電路設(shè)計

          ——
          作者:秦 健 時間:2007-01-26 來源:《電子查詢網(wǎng)》 收藏

          在電子和自動化技術(shù)的應(yīng)用中,單片機和dac (數(shù)模轉(zhuǎn)換器)是經(jīng)常需要同時使用的,然而許多單片機內(nèi)部并沒有集成dac,即使有些單片機內(nèi)部集成了dac,dac的精度也往往不高,在高 精度的應(yīng)用中還是需要外接dac,這樣增加了成本。但是,幾乎所有的單片機都提供定時器或者pwm輸出功能。如果能應(yīng)用單片機的pwm輸出(或者通過定時器和軟件一起來實現(xiàn)pwm輸出),經(jīng)過簡單的變換電路就可以實現(xiàn)dac,這將大量降低成本電子設(shè)備的成本、減少體積,并容易提高精度。本文在對pwm到dac轉(zhuǎn)換關(guān)系的理論分析的基礎(chǔ)上,設(shè)計出輸出為0~5v電壓的dac。

          1應(yīng)用pwm實現(xiàn)dac的理論分析

          本文引用地址:http://www.ex-cimer.com/article/20882.htm

          pwm是一種周期一定而高低電平的占空比可以調(diào)制的方波信號,圖1是一種在電路中經(jīng)常遇到的pwm波。該pwm的高低電平分別為vh和vl,理想的情況vl等于0,但是實際中一般不等于0,這往往是應(yīng)用中產(chǎn)生誤差的一個主要原因。

          圖1的pwm波形可以用分段函數(shù)表示為式(1):

          其中:t是單片機中計數(shù)脈沖的基本周期,即單片機每隔t時間記一次數(shù)(計數(shù)器的值增加或者減少1),n是pwm波一個周期的計數(shù)脈沖個數(shù),n是pwm波一個周期中高電平的計數(shù)脈沖個數(shù),vh和vl分別是pwm波中高低電平的電壓值,k為諧波次數(shù),t為時間。把式(1)所表示的函數(shù)展開成傅里葉級數(shù)[1],得到式(2):  

          從式(2)可以看出,式中第1個方括弧為直流分量,第2項為1次諧波分量,第3項為大于1次的高次諧波分量。式(2)中的直流分量與n成線性關(guān)系,并隨著n從0到n,直流分量從vl到vl+vh之間變化,這正是電壓輸出的dac所需要的。因此,如果能把式(2)中除直流分量的諧波過濾掉,則可以得到從pwm波到電壓輸出dac的轉(zhuǎn)換,即:pwm波可以通過一個低通濾波器進行解調(diào)。式(2)中的第2項的幅度和相角與n有關(guān),頻率為1/(nt),該頻率是設(shè)計低通濾波器的依據(jù)。如果能把1次諧波很好過濾掉,則高次諧波 就應(yīng)該基本不存在了。

          根據(jù)上述分析可以得到如圖2所示的從pwm到dac輸出的信號處理方塊圖,根據(jù)該方塊圖可以 有許多電路實現(xiàn)方法,在單片機的應(yīng)用中還可以通過軟件的方法進行精度調(diào)整和誤差的進一 步校正。

          在dac的應(yīng)用中,分辨率是一個很重要的參數(shù),圖1的分辨率計算直接與n和n的可能變化有關(guān),計算公式如式(3):

          表1給出了不同n和n的情況下的分辨率。

          從表1和式(3)可以看出,n越大dac的分辨率越高,但是nt也越大,即 pwm的周期或者式(2)中的1次諧波周期也越大,相當(dāng)于1次諧波的頻率也越低,需要截止頻率很低的低通濾波器,dac輸出的滯后也將增加。一種解決方法就是使t減少,即減少單片機的計數(shù)脈沖寬度(這往往需要提高單片機的工作頻率),達到不降低1次諧波頻率的前提下提高精度。在實際中,t的減少受到單片機時鐘和pwm后續(xù)電路開關(guān)特性的限制。如果在實際中需要微秒級的t,則后續(xù)電路需要選擇開關(guān)特性較好的器件,以減少pwm波形的失真,如圖4中的電子開關(guān)t1(irf530)。

          2pwm到dac電壓輸出的電路實現(xiàn)

          根據(jù)圖2的結(jié)構(gòu),圖3是最簡單的實現(xiàn)方式。圖3中,pwm波直接從mcu的pwm引腳輸出,該電路沒有基準(zhǔn)電壓,只通過簡單的阻容濾波得到dac的輸出電壓。r1和c1的具體參數(shù)可根據(jù)式(2)的第2部分的一次諧波頻率來選擇,實際應(yīng)用中一般選擇圖2中阻容濾波器的截止頻率為式(2)的基波頻率的1/4左右。

          圖3的pwm波的vh和vl受到mcu?輸出高低電平的限制,一般情況下vl不等于0 v,vh也不等于vcc。例如,對于單片機at89c52[2,3],當(dāng)vcc為+5 v時,vh和vl分別為4.5 v和0.45 v左右,而且該數(shù)值隨著負載電流和溫度而變化。根據(jù)式(2)的直流分量可知,dac電壓輸出只能在0.45~4.5 v之間變化,而且隨負載電流和環(huán)境溫度變化,精度很難保證。由于該電路的變化部分精度不高,沒有必要采用高分辨率的pwm輸出,8位即可。另外圖2的dac輸出的負載能力也比較差,只適合與具有高輸入阻抗的后續(xù)電路連接。因此,圖3的電路只能用在對dac輸出精度要求不高、負載很小的場合。對精度和負載能力要求較高的場合,需要對圖3的電路進行改進,增加基準(zhǔn)電壓、負載驅(qū)動等電路。

          圖4的電路在圖3電路的基礎(chǔ)上增加了開關(guān)管t1、基準(zhǔn)電壓源lm3365和輸出放大器tl v2472。mcu從a點輸出的pwm波驅(qū)動t1的柵極,t1按照pwm的周期和占空比進行開關(guān)。t1為低 導(dǎo)通電阻和開關(guān)特性好的開關(guān)管,如irf530[4],其典型導(dǎo)通電阻小于0.16 ω,而截止電阻卻非常大,與t1并聯(lián)的為基準(zhǔn)電壓lm3365。圖4的b點將得到理想的 pwm波形,即:vh=5 v,vl=0 v,波形為方波。a點的pwm波,經(jīng)過整形得到b點理想pwm波,b點的pwm波再經(jīng)過兩級阻容濾波在c點得到直流分量,即mcu輸出的調(diào)制pwm波在c點得到解調(diào),實現(xiàn)了dac功能。根據(jù)式(2)可知,c點的電壓為(5 ×n/n)v,為0~5 v之間的電壓。由于放大器a1的輸入阻抗很大,二級阻容濾波的效果很好,c點的電壓紋波極小,滿足高精度要求。輸出放大器采用tlv2472,工作在電壓跟隨器方式,他是一個railtorail放大器,他的輸出電壓的跨度幾乎等于電源電壓幅度,因此可以得到0 v的電壓輸出,克服了一般放大器(如lm324,tl071等)輸出電壓跨度比電源電壓范圍小1 v左右這一缺點。圖4與圖3還有一點重要的不同是,圖4的電源電壓為6 v,而圖3為5 v。圖4中在mcu接電源電壓中串聯(lián)了二極管,他起降壓的作用,因為一般的mcu工作電源范圍為4.5~5.5 v之間。圖4中采用電源電壓為6 v是為了保證lm336 5能正常工作。

          圖4的電路采用的電路和電容沒有特殊的要求,很容易調(diào)試。由于pwm波很容易通過mcu的軟 件進行控制,即使電路稍微有些系統(tǒng)誤差,也很容易通過軟件進行校正。因此,圖4的電路可以得到高精度的dac輸出。

          3結(jié)語

          本文在對pwm波形組成進行理論分析的基礎(chǔ)上,提出了可以通過一個低通濾波器把pwm中的da c調(diào)制信號解調(diào)出來,實現(xiàn)dac。論文對實現(xiàn)dac產(chǎn)生的誤差的原因進行了分析,設(shè)計了兩組d ac電路實現(xiàn)方式,分別適合于不同的應(yīng)用場合。

          圖4的實現(xiàn)方法,通過簡單廉價的電子元器件就可以得到高精度的dac,降低了設(shè)備的成本。該電路為單電源供電,非常適用在基于單片機的嵌入式系統(tǒng)中應(yīng)用。

          pwm相關(guān)文章:pwm原理




          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();