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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于AVR單片機PWM功能的數(shù)控恒流源研制

          基于AVR單片機PWM功能的數(shù)控恒流源研制

          作者: 時間:2007-08-30 來源:網(wǎng)絡(luò) 收藏

          隨著電子技術(shù)的深入發(fā)展,各種智能儀器越來越多,涉及領(lǐng)域越來越廣,而儀器對電源的要求也越來越高?,F(xiàn)今,電源設(shè)備有朝著數(shù)字化方向發(fā)展的趨勢。然而絕大多數(shù)電源設(shè)計是通過高位數(shù)的A/D和D/A芯片來實現(xiàn)的,這雖然能獲得較高的精度,但也使得成本大為增加。本文介紹一種的低成本高精度恒流源,能夠精確實現(xiàn)0~2A恒流。

          系統(tǒng)框圖

          圖1為系統(tǒng)的總體框圖。本系統(tǒng)通過小鍵盤和LCD實現(xiàn)人機交流,小鍵盤負責(zé)接收要實現(xiàn)的電流值,LCD 12864負責(zé)顯示。根據(jù)輸入的電流值產(chǎn)生對應(yīng)的波,經(jīng)過濾波和功放電路后對壓控恒流元件進行控制,產(chǎn)生電流,電流再經(jīng)過采樣電阻到達負載。同時,對采樣電阻兩端信號進行差分和放大,送入ADC。根據(jù)采集到的值調(diào)整輸出,從而調(diào)整了輸出電流。如此反復(fù),直到電流達到設(shè)定要求。

          圖1 恒流源系統(tǒng)框圖

          模塊介紹

          1 人機接口模塊

          本模塊包括小鍵盤電路和液晶顯示電路。鍵盤設(shè)計為34鍵盤,由數(shù)字鍵0~9,鍵“刪除”及“確認”組成,采用反轉(zhuǎn)法實現(xiàn)鍵值識別。顯示電路由帶中文字庫的LCD 12864構(gòu)成,該液晶可以每行8個漢字顯示4行。由于這部分電路比較簡單,在此不詳述。

          2 核心控制模塊

          系統(tǒng)的核心控制模塊為單片機(ATMEGA 16L)。主要使用了AVR的PWM和A/D功能。

          AVR單片機片內(nèi)有一個具有16位PWM功能的定時/計數(shù)器。在普通模式下,計數(shù)器不停地累加,計到最大值(TOP=0xffff)后溢出,返回到最小值0x0000重新開始。當(dāng)啟用PWM功能即在單片機的快速PWM模式下,通過調(diào)整OCR1A的值可實現(xiàn)輸出PWM波的占空比變化。產(chǎn)生PWM波形的機理是:PWM引腳電平在發(fā)生匹配時(匹配值為0~0xffff之間的值,如圖2中的C),以及在計數(shù)器清零(從MAX變?yōu)锽OTTOM)的那一個定時器時鐘周期內(nèi)發(fā)生跳變,具體實現(xiàn)過程如圖2所示。

          圖2 PWM波產(chǎn)生過程

          圖2中的C~F為OCR1A匹配值。從圖中可見,波形在每個匹配值處以及計數(shù)清零時輸出發(fā)生變化,從而實現(xiàn)了PWM波。由于OCR1A的值可以從0x0000到0xffff,共有65535個值,因此PWM波的最大分辨率為1/65535,滿足系統(tǒng)分辨率設(shè)計要求。PWM波的頻率為:
          (1)


          其中,fclk_I/O為系統(tǒng)時鐘頻率 (7.3728MHz),N為分頻系數(shù)(取1、8、64、256或1024)。在N取1時,根據(jù)式(1)得PWM波的最大頻率為7.3728MHz;當(dāng)N取1024時,PWM波的最小頻率為 7.2kHz。本系統(tǒng)N取256,PWM波頻率為28.8kHz。

          單片機內(nèi)部有1個10位的逐次逼近型ADC,當(dāng)使用片內(nèi)VCC作為參考電壓Vref,其分辨率為:
          (2)

          若使用片內(nèi)的2.56V基準源作為參考電壓,依據(jù)式(2)可得到其分辨率為0.003V。

          當(dāng)系統(tǒng)需要更高的分辨率時,可以通過軟件補償?shù)姆椒▉韺崿F(xiàn)。具體實現(xiàn)方法可參考相關(guān)資料。

          3 濾波和功放模塊

          圖3 二階RC低通濾波電路


          PWM波產(chǎn)生后不能直接用于控制MOSFET,需把其變成能隨占空比變化而變化的直流電壓。在此,我們選用二階RC低通無源濾波器,并取得了很好的效果。
          二階RC低通無源濾波器的系統(tǒng)函數(shù)為:
          (3)


          其中,A為通帶增益,Q為品質(zhì)因素, ω0為截止頻率。根據(jù)式(1)算出PWM波的頻率,取截止頻率為30kHz,由式(3)可確定對應(yīng)的電阻、電容值。

          由于無源濾波器的負載能力差,信號經(jīng)過二階無源濾波網(wǎng)絡(luò)后衰減比較厲害,需要增加一級功率放大電路。功放電路比較簡單,也有經(jīng)典電路,限于篇幅不再贅述。

          4 恒流源模塊

          恒流源采用的是壓控恒流元件IRF540,它的VGS為20V,ID為33A。截止時,最大漏電流為1μA,導(dǎo)通電阻僅有0.04Ω,圖4為IRF540的特性曲線。

          圖4 IRF540特性曲線


          由圖4可知,當(dāng)VGS為5V時,可輸出電流就可達到30A左右,完全能實現(xiàn)小電壓控制大電流的目的。具體應(yīng)用電路如圖5所示。

          圖5 橫流電路


          IRF540的G極接PWM波轉(zhuǎn)換后的直流電壓,D極接能提供15V/5A電流的電源(可采用開關(guān)電源),S極用來接采樣電阻和負載。采樣電阻應(yīng)采用溫漂系數(shù)低、阻值為10mΩ、精度為1%的大功率錳銅絲電阻。當(dāng)對采樣電阻兩端信號進行差分后,可得到采樣電阻兩端的電壓值U,而在已知采樣電阻阻值情況下,很容易得到流經(jīng)采樣電阻的電流,即I=U/R。由于負載與采樣電阻在同一條支路,故流經(jīng)負載的電流也為I。差分放大電路的放大倍數(shù)可根據(jù)采樣電阻阻值以及ADC的參考電壓來選擇,圖5中要求R1=R3,R2=R4,放大倍數(shù)為R4/R3。需要注意的是該電路應(yīng)該具有很高的輸入阻抗,以減少對負載電路的影響。差分信號經(jīng)ADC口送入單片機進行處理。

          軟件設(shè)計

          由圖6可知,整個系統(tǒng)是一個動態(tài)的閉環(huán)系統(tǒng)。由于PWM初始匹配值設(shè)置的大小不同,電流值在開始時可能會跟設(shè)定值有較大偏差。隨著閉環(huán)系統(tǒng)的自我調(diào)整,逐漸使輸出穩(wěn)定在設(shè)定值上下。系統(tǒng)達到穩(wěn)定狀態(tài)的時間以及穩(wěn)定后電流值波動的幅度,可根據(jù)設(shè)計要求由軟件來調(diào)整。

          圖6 程序流程圖

          實驗結(jié)果

          我們對此數(shù)控恒流源進行了負載測試,測試結(jié)果如下:

          從表1和表2的實測數(shù)據(jù)中可以看出,該恒流源在負載為100Ω以內(nèi),最大誤差僅為2mA,在0~200mA段沒有誤差,滿足了設(shè)計要求,達到了較高的精度。

          如果需要提高200mA段以上的精度,可采用軟件補償?shù)姆椒▽崿F(xiàn)。即先測量足夠多的測試數(shù)據(jù),然后采用曲線擬合方法對數(shù)據(jù)分段進行補償,詳細方法可參考相關(guān)資料。

          結(jié)語

          本文介紹的PWM技術(shù)的數(shù)控恒流源電路結(jié)構(gòu)簡單,成本低,系統(tǒng)穩(wěn)定可靠,精度高,已經(jīng)應(yīng)用于工業(yè)生產(chǎn)。如果設(shè)計要求更高的恒流值,可以更換更大功率的+15V/I電源,以及更換合適的壓控恒流元件。

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




          評論


          相關(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); })();