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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于AVR單片機的多功能電源設(shè)計

          基于AVR單片機的多功能電源設(shè)計

          作者: 時間:2009-11-05 來源:網(wǎng)絡(luò) 收藏

          由于許多電子設(shè)備不能在反相電壓下工作,于是在該中有電壓偏置糾正電路,如圖3所示,由R20,R9,R10,R18和U2D構(gòu)成電壓反饋電路,在剛剛啟動時(這時的DAC的輸出是0),這部分電路能夠消除負電壓輸出。這里是用電路來完成,沒有使用在軟件中加一個常數(shù)給DAC的方法,這是因為偏移量可能是正值,在軟件中DAC的常數(shù)就應(yīng)該是一個負值來糾正,而這種方法不起作用,因為DAC只在無符號數(shù)下工作。
          二極管D1給供電電路提供了保護使得輸出電壓不會低于-0.7 V。在的輸出端,有一個1μF的電容,是用來防止電路的自激振蕩,這個電容值不能太大,如果太大電源的輸出響應(yīng)會變慢,CPU控制電源的速度降低了。三極管Q1用來放大LM723的電流輸出,Q1耗散的多余功率P=(VIN-VOUT)×IOUT。
          電阻R14設(shè)置了LM723的電流門限,當R14上的電壓達到0.65 V時,輸出電壓由微分放大器U2C鉗制,此時R14上的電壓被微分放大器放大,電壓與輸出電流的比是1 V/1 A。電壓放大到5.6 V/A以適應(yīng)Butter-fly的VIN測量電路的測量要求。電源的控制部分是Butterfly,結(jié)構(gòu)如圖3所示,它有良好的用戶界面,有五通道的控制桿和六字符的LCD許多外圍設(shè)備連接著微控制器,比如揚聲器、數(shù)據(jù)閃存、一個NTC電熱調(diào)節(jié)器、一個光敏傳感器和一個RS 232通信端。所有的外圍接口都能用來擴展系統(tǒng)的功能。現(xiàn)在,在這個電源中使用到LCD、控制桿、JTAG、ADC、USI(用I2C驅(qū)動DAC)和一電流保護指示LED。

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

          DAC(U3)和Butterfly模塊使用HT7533-1線性降壓穩(wěn)壓電源供電,該電源不會有高電壓輸出。為了避免噪聲對電源精度的影響,電路中所有的“地”都連接到電路板上的一點上,并且信號“地”也連接到同一點上。


          3 軟件
          軟件的結(jié)構(gòu)圖如圖4所示,Martin Thomas的Butterfly演示版代碼的GCC接口設(shè)計。CPU的工作頻率設(shè)定為8 MHz,因為在程序中要用到浮點運算,但在電源設(shè)計中不需要,所以省電模式都未使用。AT-mega169的ADC在每一次轉(zhuǎn)換時都會發(fā)出中斷請求,電流保護的優(yōu)先級高于其他進程,ADC的取樣來自8次輸入的平均值,以消除毛刺,不至于觸發(fā)錯誤的過流保護。ADC的一些匹配的常量值在測量電路的參數(shù)后再在軟件中設(shè)置。

          4 校 準
          因為要作為測試用的信號源使用,所以電源在使用之前必須校準。校準包括兩部分,硬件校準和軟件設(shè)置,在這個過程中,需要對Butterfly的程序進行改寫和重新編譯。



          評論


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