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

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 一種精確檢測鋰電池電量的方案

          一種精確檢測鋰電池電量的方案

          作者:李躍勇 (鄭州雅晨生物科技有限公司,鄭州 450000) 時間:2021-04-21 來源:電子產品世界 收藏
          編者按:傳統(tǒng)檢測鋰電池電量的方法一般是通過檢測電池兩端電壓,然后根據電池放電曲線,通過算法估算出電池電量。本文采用專業(yè)的電量計MAX17055配合充電管理芯片推出一種精確檢測鋰電池電量的解決方案。


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

          1   傳統(tǒng)電量檢測方案

          傳統(tǒng)的檢測方案采用ADC 采集兩端電壓,然后根據廠家提供的電池的放電曲線,通過算法估算出來的一個大概的電量數值。如圖1 所示,此圖是一個容量為2 000 mAh 的鋰電池放電曲線,放電電流為2 000 mA。

          1618993502517500.png

          圖1 鋰電池放電曲線

          X 軸代表剩余電量,Y 軸代表電池兩端電壓。根據實際需要顯示的電池電量要求,把Y軸分成相應的段數,然后對照X 軸坐標值,可大致估算出電池電量。

          例如圖2 所示,當電池電壓下降到3.5 V 左右時,電池電量大概在50% 左右。但這種方式最大的弊端是沒有考慮到電池的內阻,從而導致計算出來的電池容量誤差很大。電池兩端電壓計算公式如下:

          V=Voc-I×Rbat

          image.png

          圖2 傳統(tǒng)估算電池電量的方法

          其中:Voc 指的是電池兩端的開路電壓,I 表示電池放電電流,Rbat 表示電池內阻,不同廠家的電池內阻通常在幾十毫歐到幾百毫歐不等,而且電池內阻會隨著電池的老化而增加,通常在100 個周期之后電阻內阻會增加1 倍,這種內阻的變壓會導致計算出來的誤差非常大。

          從圖1 中的放電曲線上也可以看到,電池滿電量時,電壓約為4.2 V,當電池用2 000 mA 電流開始放電時,電池電壓瞬間就降低到3.9 V 左右,其中的壓降正是電池內阻在作怪。當遇到需要突發(fā)電流的情形,就會發(fā)生電池電量格數跳變的現象。

          李躍勇(1986—),男,鄭州雅晨生物科技有限公司研發(fā)總監(jiān),研究方向:醫(yī)療器械。

          系統(tǒng)框圖

          采用Maxim ModelGauge?m5 EZ算法。ModelGauge m5 EZ 不需要對特定電池特征進行建模,很容易實現設計,并簡化主機軟件開發(fā)。

          ModelGauge m5 EZ 提供可靠算法,對于絕大多數鋰電池提供高精度測量。 自動補償老化、溫度和放電率,并提供精確的電量狀態(tài)(SOC,%) 和剩余電量(mAh)。當電池達到接近空電量的臨界區(qū)域時,ModelGauge m5 算法激活特殊的誤差修正算法,進一步消除誤差。系統(tǒng)設計師不再需要執(zhí)行特征分析,這部分工作實際上已經由廠商完成了[1]。該方案系統(tǒng)框圖如圖3 所示,其中鋰電池負端通過檢流電阻連接到系統(tǒng)地, 相關檢測管腳連接到檢流電阻的兩端,充電管理芯片連接到鋰電池正極以及系統(tǒng)地。

          image.png

          檢流電阻用于檢測通過鋰電池的放電電流和充電電流,該電流送給MAX17055 芯片用于計算電池電量, 充電管理芯片用于給鋰電池充電,其中充電管理芯片可采用通用的TP5400 或BQ24075 等。

          MAX17055 實現了行業(yè)較低的靜態(tài)電流—低功耗模式下僅消耗7 μA 電流。對于空間受限的應用,它可以支持1.4mm×1.5mm WLP 封裝[2],非常適合智能手表、手機、無人機等便攜式產品。

          3   系統(tǒng)電路圖

          充電管理芯片采用TP5400,它是一款專用的單節(jié)鋰電池充電器和恒定5 V 升壓控制器,充電部分集高精度電壓和充電電流調節(jié)器、預充、充電狀態(tài)指示和充電截止等功能于一體,可以輸出最大1 A 充電電流[3]。充電電路圖如圖4 所示。

          image.png

          圖4 TP5400充電電路

          IN_5V 連接外部充電器的5 V 輸出,OUT_5V 是TP5400 升壓后的5 V 輸出。VBAT 連接鋰電池正極,GND 連接鋰電池負極。CHRG 管腳為漏極開路輸出,當充電器向電池充電時,此管腳被內部開關拉到低電平,表示充電正在進行;否則此管腳處于高阻狀態(tài)。

          STDBY 管腳也為漏極開路輸出,當電池充電完成時,此管腳被內部開關拉到低電平,表示充電完成,否則為高阻狀態(tài)。PROG 管腳用于設定充電電流大小??筛鶕旅婀皆O定充電電流:

          image.png

          其中IBAT 表示充電電流,RPROG 為1.1 kΩ, 故設置的充電電流為1 A。根據芯片數據手冊可知,芯片的終止充電電流在C/5,大約是200 mA。MAX17055 硬件電路如圖5 所示。

          image.png

          圖5 MAX17055電路圖

          BATT 腳連接鋰電池正極,MAXGND 連接鋰電池負極,R5 為檢流電阻,此處為5 mΩ,CSP 腳連接檢流電阻正端,CSN 連接檢流電阻負端,SCL 和SDA 腳用于與單片機進行IIC 通信,ALRT 腳用于輸出報警信息。

          THRM 腳可用于連接帶有溫度檢測的鋰電池,如果鋰電池沒有溫度檢測管腳,可按上圖處理即可。

          MAX17055 需進行正確的初始化才能工作,其初始化流程如圖6 所示。

          image.png

          官方提供了MAX17055 初始化代碼例程,例程中的部分寄存器必須根據自己的實際情況來正確配置才能獲得精確的電量指示,這些寄存器分別如下。

          DesignCap Register(18h):電池容量寄存器,這個值與計算得到的當前的電池容量做對比,用來計算電池的使用壽命和健康狀況。多少毫安時的電池就填寫實際的數值進去,這里以2 000 mAh 的電池為例,此處可直接填寫0x07D0。

          RSense Register(D0h):檢流電阻大小寄存器,此寄存器例程中并沒有給出,但我們在實際配置過程中必須根據硬件電路配置此寄存器,否則得不出準確的結果。

          根據數據手冊官方推薦的數值,硬件電路采用5 mΩ 的檢流電阻,此處值我們填寫0x01F4。

          IChgTerm Register(1Eh):充電終止電流寄存器,前面我們設置的充電管理芯片TP5400 的充電終止電流為200 mA,一般我們將此值設置得比實際終止電流稍微大一些。在這里我們設置此寄存器的值為260 mA。

          VEmpty Register(3Ah):空電壓寄存器,鋰電池一般設置為3 V 即可。

          初始化代碼(部分)如下:

          I2C_Read(0x00, &statusPOR);// 讀取Status 寄存器

          if((statusPOR&0x0002) == 0)// 上電復位事件未發(fā)生

          {

          return SUCCESS;

          }

          else// 上電復位事件發(fā)生

          {

          I2C_Read(0x00,&reg_tempValue);// 讀FSTAT

          寄存器的值

          while(reg_tempValue&0x01)// 判斷FSTAT.DNR

          狀態(tài)

          {

          I2C_Read(MAX17055_REG_FStat,&reg_

          tempValue);

          I2C_Delay(10);// 延時 10ms

          }

          Read(0xBA,&HibCFG);

          WriteAndVerifyRegister(0x60,0x0090);

          WriteAndVerifyRegister(0xBA,0x0000);

          WriteAndVerifyRegister(0x60,0x0000);

          WriteAndVerifyRegister(0x18,0x07D0);// 設

          置電池容量為2000mAH

          WriteAndVerifyRegister(0x45,0x003E);// 設

          置dQAcc

          WriteAndVerifyRegister(0x1E,0x0340);// 設

          置充電終止電流為260mA, 計算方法0x0340*1.5625/5

          WriteAndVerifyRegister(0x3A,0x9661);// 設

          置空電壓,計算方法:0x9661*1.25mV/16

          WriteAndVerifyRegister(0xD0,0x01F4);// 設

          置檢流電阻大小,500=0x01F4

          WriteAndVerifyRegister(0x46,0x0640);// 設

          置dPAcc

          WriteAndVerifyRegister(0xDB,0x8000);// 設

          置ModelCFG

          WriteAndVerifyRegister(0x13,0x4600);// 設

          置FullSocThr 寄存器

          Read(0xDB,&reg_tempValue);

          while(reg_tempValue&0x8000)

          {

          I2C_Read(0xDB,&reg_tempValue);

          I2C_Delay(10);// 延時10ms

          }

          WriteAndVerifyRegister(0xBA,HibCFG);

          Read(0x00,&reg_tempValue);// 讀取Status

          寄存器

          WriteAndVerifyRegister(0x00,0xFFFD);// 清

          除POR 位

          Read(0x00,&statusPOR);// 讀取POR 位

          if((statusPOR&0x0002) == 0)

          {

          return SUCCESS;// 初始化成功

          }

          else

          {

          return FAULT;// 初始化失敗

          }

          4   結語

          隨著生活水平的提高,人們對便捷式產品的要求越來越高,傳統(tǒng)的依靠電池電壓來推算電量的方式因為顯示不精細、不準確而飽受詬病,特別是針對便捷式的醫(yī)療器械產品來說,往往可能因為電量指示的不準確從而誤導用戶沒有及時地對儀器進行充電,從而影響到儀器的再次使用。此方案可提供準確的電量指示,解決單節(jié)鋰電池供電儀器的電量指示問題。

          參考文獻:

          [1] 選擇合適的電池幫助產品實現最快上市和最長使用時間[Z].Maxim 公司,2017.

          [2] Maxim推出高精度、低靜態(tài)電流電量計,大幅延長電池運行時間 MAX17055 ModelGaugeTM m5通過消除電池依賴性,加速產品上市時間[Z].電子測試,2017.

          [3] TP5400數據手冊[Z].南京拓品微電子有限公司.

          (本文來源于《電子產品世界》雜志2021年3月期)



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();