充電電池容量測試儀實現(xiàn)方案
圖1單只LED數(shù)碼管內(nèi)部都是由8只發(fā)光管組合而成,分別作為8的7段字型部分,以及一位小數(shù)點。這里使用的是共陽極數(shù)碼管,內(nèi)部8只發(fā)光管的陽極是并連共同引出的,作為使能控制。
在實際電路中,L1就是第一只數(shù)碼管的共陽極端。單片機的輸出、輸入接口數(shù)量都很有限,所以4位LED數(shù)碼管驅動都是使用動態(tài)顯示的方式。4只獨立數(shù)碼管LED的內(nèi)部a、b、c、d、e、f、g、dp這8段發(fā)光管相對應的陰極都是并連的。統(tǒng)一由單片機P0口8位輸出進行驅動。數(shù)碼管要顯示出數(shù)碼還必須在共陽極端同時施加正電壓才行。所以要讓4位中某一數(shù)碼管進行顯示,只要在P0口輸出字型碼的同時,給這位數(shù)碼管共陽極端加上正電壓就行了,當然與此同時其他三位數(shù)碼管的共陽極端要保持低電壓,才不致顯示出現(xiàn)混亂。數(shù)碼管共陽極端驅動電流較大,所以采用了三極管進行控制。以第一只數(shù)碼管為例,在P0端口輸出字型碼的同時,P37輸出低電平,三極管T4導通,則共陽極端L1就得到高電平了,數(shù)字就會顯示在第一只數(shù)碼管上了。
程序設計是以單片機P37口作為計時控制端子,P37口輸入低電平,計時程序啟動,4只數(shù)碼管顯示時間。放電電路中按下啟動按鍵,放電過程觸發(fā),VT1導通,電池端電壓降落到放電電阻R2兩端,A端對地為高電平,通過電阻R4迫使三極管VT3導通,P37口電平就被拉低了,單片機計時程序啟動。電池電壓降到終止電壓以后,放電電路自動關閉,A端電壓消失,VT3恢復截止狀態(tài),計時程序停止,數(shù)碼管維持顯示當前持續(xù)時間。
如要進入下次測試,首先按動單片機復位鍵,當前計時清零,等待下一次測試開始。
程序設計比較簡單。它的大致流程如下:初始化,P3端口置位,設立常量a為時間計數(shù)器,依次對a的十進制數(shù)值各位進行提取,順序輸送到P0端口,P2端口中的P24、P25、P26、P27各位是依次作為四位數(shù)碼管的使能控制端,通過P2端口的配合,就可以完成對各位數(shù)碼管的驅動,時間的動態(tài)顯示。程序進行中要不斷地檢測P3端口數(shù)值以決定計時狀態(tài):如果電池處于放電過程之中,三極管VT3導通,將迫使P37端口電壓降到零,P3端口值就是127,單片機程序檢測到這一結果,時間常量a將自動加1,指示期間放電時間已經(jīng)延續(xù)1秒種了。這1秒鐘的時間精確計算是比較麻煩的。計時程序是一個循環(huán)結構,每一周期耗用時間都是一致的。所以在使用keil軟件調(diào)試過程中,通過對時間計數(shù)寄存器sec的觀察計算,可以得出一次循環(huán)大致需要的時間。以此為據(jù)再通過適當改變延時子程序循環(huán)次數(shù)將常量a計時周期控制在1秒以下,剩余微小的時間差就可以通過插補空指令來校正了。計時精度只要控制在千分之一以下就可以了。在51單片機使用11.0592MHz晶體振蕩器的情況下,指令周期大約1.085微秒,所以將計時精度控制在千分之一以下問題不大。誤差總是會有的,只能通過精確計算來控制了,也可以通過更換更高頻率的晶體振蕩器提高單片機時鐘頻率的方法來進一步提高計時的精度。如果放電過程中,意外原因或者人為終止放電過程,P37端口變?yōu)楦唠娖剑绦蜓h(huán)依舊會進行下去,只是時間常量a停止自動加一,時間顯示維持不變。
編譯后,寫入單片機內(nèi)部,做好放電電路部分與51單片機的連接,便可投入使用。
電池接入后,按動輕觸按鍵“啟動”,就會進入一次容量測試過程,期間電池取出接入,都不會影響到單片機計時。電池放電完畢,單片機數(shù)碼管顯示鎖定,給出總放電持續(xù)時間,單位為秒。可以自行人工計算放電小時數(shù)。當然也是可以自行對程序進行改進,直接以小時分鐘形式進行顯示。只要單片機不斷電,數(shù)碼管將持續(xù)顯示當前放電時長。如果要進入下次測量過程,只需要按動單片機復位鍵,數(shù)碼管清零,單片機程序轉入起點,你就可以進入新一次的容量測試過程了。
評論