單片機用鋰電池供電,如何較為準確的監控實時電池電量?
單片機可通過ADC檢測電壓來監控電池電量我們一般通過檢測電壓來判斷鋰電池的電量。單節鋰電池標稱電壓為3.7V,充滿電壓為4.2V。電壓大于等于4.2V我們認為電量為100%,電池電壓等于3.82V時認為電量為50%,電池電壓小于等于3.0V時認為電量為0%。當然不同的鋰電池是有差異的,需要根據鋰電池的規格來定。
要監測電池電量就離不開ADC,如果單片機本身有ADC就簡單了,沒有ADC的話可以外置一個ADC芯片。
鋰電池電壓測量電路設計首先,需要設計一個用于測量鋰電池電壓的分壓電路,為了省電,我們可以設計一個帶開關的電路,在需要測量電壓的時候再給分壓電阻供電,如下圖,當EN_CHK_V為低電平時,Q3截止,關斷分壓電阻的供電;需要測量電池電壓時,EN_CHK_V設置為高電平,Q3導通,單片機的ADC通道(CHK_V)就可以檢測電壓了。
大家可能問,為什么要分壓呢?為什么不直接測量電池的電壓?這與單片機的參考電壓有關系,不分壓的話,電池電壓高于參考電壓就沒法測量了,大家繼續往下看就明白了。
ADC檢測電壓,需要有一個參考電壓基準或者參照電壓任何測量,都需要有一個參照或者參考,ADC測量電壓也不例外。假如參考電壓為2.5V,那么ADC測出滿量程就是2.5V了。因為鋰電池的電壓在3.0V~4.2V間變化的,所以比較適合用LDO或者TL431設計一個2.5V的參考電壓。鋰電池的電壓經過上面的分壓電路后,最大測量值就不會超過2.5V這個參考電壓了。
如果單片機的ADC是12bit,那么滿量程為0xFFF(4095)=2.5V,電壓計算如下:
0xFFF / AD值 = 2.5/VV = (2.5 x AD值) / 0xFFF當然這個測量出來的電壓值是經過電阻分壓的,大家還需要按分壓比例算出真正的電池電壓值,得到鋰電池的電壓值,就可以按照電量與電壓的對應關系,計算得到鋰電池的電量。
如果單片機內部有參照電壓,就更為簡單的。以STM32系列的單片機為例,STM32的內部有一個參照電壓VREFINT,相當于一個標準電壓測量點,它和ADCx_IN17連接,這個參考電照與參考電壓是不一樣的哦。有了這個參照電壓,即使鋰電池的電壓發生變化,也可以通過參照電壓計算出真實的電壓值,在測量鋰電池電壓值之前,我們需要先讀出參照電壓的ADC測量數值,記為ADrefint,再去讀出鋰電池電壓ADC數值,記為ADchx,則要測量的電壓為:
Vchx = Vrefint * (ADchx/ADrefint)其中ADrefint是固定值,需要查看對應單片機的規格書。如果你用的是STM32有單片機,可以去了解一下內部參照電壓的使用哦。
歡迎關注@電子產品設計方案,一起享受分享與學習的樂趣!關注我,成為朋友,一起交流一起學習記得點贊和評論哦!非常感謝!
本網站文章僅供交流學習 ,不作為商用, 版權歸屬原作者,部分文章推送時未能及時與原作者取得聯系,若來源標注錯誤或侵犯到您的權益煩請告知,我們將立即刪除.