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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > AVR單片機在蓄電池剩余電量測試儀中的應(yīng)用

          AVR單片機在蓄電池剩余電量測試儀中的應(yīng)用

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

          摘要:利用一代AVR單片機(AT90S8515)實現(xiàn)蓄電池剩余電量在線測量。該方法通過實時測量蓄電池內(nèi)阻,推算出剩余電量。最后給出了實驗結(jié)果。

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

          關(guān)鍵詞:單片機 在線測量 蓄電池 剩余電量

          蓄電池作為備用電源,已在計算機網(wǎng)絡(luò)、通主、電力等領(lǐng)域得到了廣泛的應(yīng)用。蓄電沁的荷電量與整個供電系統(tǒng)的可靠性密切相關(guān),蓄電池剩余電量睦高,系統(tǒng)可靠性越高,否則反之。對于一些重要的用電領(lǐng)域,例如信息處理中心,如果能在既不消耗蓄電池的能量,又不影響用電設(shè)備正常工作的條件下,實現(xiàn)蓄電池剩余電量的在線監(jiān)測,將有重要的實際意義。近幾年隨著IT產(chǎn)業(yè)的迅速發(fā)展,電池的重要性越來越突出,對剩余電量精確預(yù)測的需求越來越迫切。

          預(yù)測蓄電池剩余電量的常見方法有:密度法、開路電壓法、放電法、內(nèi)阻法。前三種方法測量精度較低且不適合密封蓄電池的在線測量,故較難實用。內(nèi)阻法對被測蓄電池的影響很小,且蓄電池完全充電(充滿)和完全放電(放完)時,其內(nèi)阻相差2-4倍左右,因此,用內(nèi)阻法預(yù)測蓄電池剩余電量有較高的精度,正逐步得到實際應(yīng)用。

          1 內(nèi)阻法測量原理

          1.1 蓄電池等效模型

          蓄電池交流待效阻抗Z模型如圖1所示。

          圖中:R1、R2為正、負電極的極化電阻;

          C1、C2為正、負電極和極化電容;

          L為引線電感;

          Rn為電池歐姆電阻。

          蓄電池歐姆電阻Rn表征了電池的荷電程度。便為了簡化測量通常從等效阻抗Z中僅分離純電阻R(R由RΩ、R1、R2構(gòu)成),R和RΩ之間呈線性關(guān)系, 故可用R間接地表征電池荷電程度。

          1. 2 四線法內(nèi)阻測量

          由于蓄電池內(nèi)阻很小,一般為uΩΩm級,因此測量線的阻抗就變得不可忽略,為此采用四線法測量,即將驅(qū)動電流回路和感應(yīng)電壓電路分開。內(nèi)阻四線法測量原理圖如圖2所示,其中R2為取樣電阻。

          測量蓄電池內(nèi)阻的方法是:在蓄電池的兩端施加一恒定的交流音頻電流源is,然后檢測電池兩端電壓Vo,以及is和V0兩者之間的夾角θ。三者之間關(guān)系如圖3所示。

          由圖3可知:Z=Vo/io

          R=Zcosθ

          R即為我們需要獲取的蓄池內(nèi)阻。

          1.3 剩余電量的測量原理

          研究表明,電池的內(nèi)阻與荷電程度之間有較高的相關(guān)性(0.88左右),通過測量電池內(nèi)阻可較準確地預(yù)測其剩余電量。蓄電池內(nèi)阻與剩余電量的關(guān)系曲線如圖4所示。

          具本實施的方法是:將蓄電池充滿電(以12V蓄電池為例,充電至13.8V,浮充電流至10mA。)然后以0.1C放電率對電池放電,記錄放電過程中內(nèi)陰與電量的大小。當蓄電池放電完畢(12V蓄電池放電至10.8V)可獲得完整的放是曲線,即剩余電量與蓄電池內(nèi)阻之羊的關(guān)系。將些曲線存入EPROM中,在以后測試同型號同規(guī)格的蓄電池時,單片機將根據(jù)在線測到的電池內(nèi)阻值,通過查表計算,得出其剩余電量值。

          2 硬件設(shè)

          2.1 儀器結(jié)構(gòu)框圖

          為了實現(xiàn)上述剩余電量預(yù)測方法,我們研制的測試儀器硬件框圖如圖5所示。該儀器主要由音頻信號發(fā)生器、耦合驅(qū)動器、差動放大器、濾波網(wǎng)絡(luò)、整流電路、相位檢測電路、電壓電流取樣電路、模擬轉(zhuǎn)換開關(guān)、A/D轉(zhuǎn)換器(AD7715)、單片機(AT90S8515)、LCD顯示器及鍵盤等組成。

          需要指出的是,為了獲得較高的剩余電量預(yù)測精度,被測內(nèi)阻必須有足夠不效位數(shù),為此我們?nèi)?位有效數(shù)字,這樣就要求A/D轉(zhuǎn)換器必須在14位以上。由于蓄電池內(nèi)阻、電壓均為變化緩慢的低時變信號,故我們只需選低速串行A/D轉(zhuǎn)換器,而∑-△類型的A/D轉(zhuǎn)換器就能很好地滿足我們的要求,為此我們選AD7715。AD7715為16位A/D轉(zhuǎn)換器,具有自校零、自校量程功能,具有很高的測量精度,另外政治家SPI接口,便于與單片機高速通信。

          單片機為Atmel公司的新一代Risc單片機(AT90S8515),該單片機具有如下優(yōu)越性能:

          120條精簡令,且大多指令執(zhí)行時間是單時鐘周期;

          采用哈費結(jié)構(gòu),在8MHz時鐘下,每條指令執(zhí)行進間僅為125ns;

          片內(nèi)有8KB Flash程序存儲器,512byte EPROM數(shù)據(jù)存儲器,512byte RAM存儲器;

          除擁有普通異步通信接口外,還擁有SPI接口,SPI數(shù)據(jù)傳送速率高達2.5Mb/s;

          擁有PWM發(fā)生器,模擬電壓比較器以及Watehdog定時器。

          2.2 接口設(shè)計

          單片機與主要外圍器件接口電路圖6所示。

          (1) 口用作鍵盤輸入和外接EPROM存儲器,其中PAO接存儲器時鐘線,PAI接存儲器數(shù)據(jù)線,PA2∽PA7 接鍵盤。

          (2) 口用作A/D轉(zhuǎn)換和模擬開關(guān)通道選擇,其中PBO∽PB2用作通道線,PB5∽PB7連接A/D轉(zhuǎn)換器對應(yīng)的SPI口線。

          (3) 口用作液晶顯示器數(shù)據(jù)口。

          (4) 口用作A/D中請求和液晶顯示器控制口,其中PD2為A/D轉(zhuǎn)換器中請求,PD5為液晶顯示器片選信號,PD6為讀寫選擇信號,PD7為使能信號。

          3 軟件設(shè)計

          測試儀器的主要程序流程圖如圖7~9所示。

          4 測驗結(jié)果

          為了驗證設(shè)計,我人對研制的兩臺樣要做了全性能測試,測試結(jié)果如表1所示。

          AVR是一種功能非常強大的單片機,片內(nèi)不僅集成了許多外圍接口功能電路,而且運算速度快、功耗低、可靠性高,非常適合中智能儀器儀表中應(yīng)用。

          從理論上說,只要調(diào)整音頻電流源幅度,內(nèi)阻法可適用各種容量的蓄電池測量。該方法也同樣適用Ni-Mh、Ni-Cd及Li電池,因此用內(nèi)阻法來預(yù)測蓄電池的剩余電量具有良好的通用性和實用性。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

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