基于DS2438芯片的智能電池監測系統
四、系統功能軟件實(shí)現及流程圖
為了滿(mǎn)足監測的實(shí)時(shí)性,本系統單片機采用定時(shí)中斷的方式訪(fǎng)問(wèn)DS2438,進(jìn)行電池參數采集。首先設置單片機的計數器為定時(shí)方式,開(kāi)啟計數器,定時(shí)長(cháng)短可隨需要靈活設定。然后單片機運行其它程序,等待定時(shí)中斷的到來(lái)。定時(shí)中斷發(fā)生之后進(jìn)入中斷服務(wù)程序,調用DS2438的控制操作程序,進(jìn)行數據采集,并將采集來(lái)的數據進(jìn)行處理和顯示,最后重新初始化定時(shí)中斷,返回。圖3是系統總體流程圖,圖4是中斷服務(wù)程序流程圖。
DS2438與單片機進(jìn)行數據通訊時(shí)僅用一根數據線(xiàn),因此必須嚴格按照芯片的讀寫(xiě)時(shí)序要求來(lái)編寫(xiě)程序,這樣才能保證數據的正確讀寫(xiě)。這一過(guò)程雖然繁瑣,但并不復雜,因篇幅有限,本文對此不予說(shuō)明。下面介紹如何實(shí)現利用基于DS2438芯片的智能電池監測系統對儀器的供電方式(直流或交流)和電池的電壓、電流、溫度、剩余電量進(jìn)行監測。
1.供電方式的監測
要確定儀器在使用中處于何種供電方式,可利用前面介紹的電流寄存器的值進(jìn)行判定。
首先單片機控制DS2438使其電流A/D轉換器使能,DS2438便會(huì )以每秒36.41次的速度對流入、流出電池塊電流自動(dòng)進(jìn)行測量,測量的結果存放于電流寄存器中。電流寄存器的高字節的高六位是流入電池電流的符號位,為1時(shí)表示電池正在充電,也就是儀器正由交流電源供電;為0表示電池正在放電,即儀器正由直流電池供電。因此,單片機讀出電流寄存器的值,對其高六位進(jìn)行判斷就可獲悉供電方式,同時(shí)也獲得了電流值。軟件流程圖見(jiàn)圖5。
2.電池電壓、溫度的測量
由于DS2438內部有A/D轉換器和數字溫度傳感器,要獲得電池的電壓、溫度只需要由單片機對DS2438發(fā)出采集電壓、溫度的控制命令,然后等待其采集完畢并自動(dòng)將電壓、溫度測量值存入相對應的寄存器后,再由單片機讀取寄存器的內容即可。在讀取寄存器值時(shí),若單片機與DS2438之間的數據線(xiàn)為低電平,則表明DS2438正在進(jìn)行電壓、溫度轉換,此時(shí)不能讀取數據,只有當數據線(xiàn)為高電平時(shí),才能正確的讀取數據。
3.剩余電量的監測
電池的剩余電量是儀器在使用過(guò)程中用戶(hù)所需要的重要信息,它可用電流積分累加(ICA)寄存器的值求得。ICA寄存器的值是由DS2438定時(shí)自動(dòng)測量電池電流后更改的,無(wú)需對其進(jìn)行控制,只需單片機讀出ICA寄存器的值,然后將讀出的值代入公式(2),便可得到電池的剩余電量。剩余電量監測的流程圖見(jiàn)圖6。
剩余電量=ICA/(2048×RSENS) (2) 其中RSENS的單位為Ω。
說(shuō)明:(1) 單片機對DS2438進(jìn)行任意存儲命令操作時(shí),在發(fā)出每個(gè)命令之前都必須按照DS2438的復位時(shí)序要求,先發(fā)復位信號且等待DS2438的應答(以示 DS2438準備接受或發(fā)送數據),然后再發(fā)出一個(gè)ROM命令用以選擇總線(xiàn)上要訪(fǎng)問(wèn)的DS2438,在本文的程序流程圖中,此過(guò)程用“DS2438的初始化”來(lái)代替;
(2) 在對DS2438控制之前,必須先寫(xiě)狀態(tài)/標志寄存器;
(3) 在讀取寄存器的值時(shí),為防止讀取錯誤,先要檢查DS2438是否正在修改寄存器的內容,這可通過(guò)對狀態(tài)/標志寄存器中的NVB位進(jìn)行判斷實(shí)現。
五、結束語(yǔ)
本文介紹的基于DS2438芯片的智能電池監測系統是一種便攜式儀器的一部分,實(shí)際使用證明本系統運行可靠、功能強大、操作方便、能夠與其他功能協(xié)同工作。隨著(zhù)各種便攜式電子產(chǎn)品的廣泛應用,電池實(shí)時(shí)監測已成為一種必不可少的功能。因此本文所介紹的電池監測系統具有較強的實(shí)用性。
評論