高鳳友,張 軍,王相彬
(1.天津職業(yè)技術(shù)師范大學(xué)電子工程學(xué)院,天津 300222;2.大慶油田鉆探工程公司測井公司,黑龍江 大慶 163412)
充電電池荷電狀態(tài)檢測系統(tǒng)設(shè)計
高鳳友1,張 軍1,王相彬2
(1.天津職業(yè)技術(shù)師范大學(xué)電子工程學(xué)院,天津 300222;2.大慶油田鉆探工程公司測井公司,黑龍江 大慶 163412)
以在ARM 9硬件平臺上實現(xiàn)充電電池荷電狀態(tài)檢測為背景,詳細(xì)介紹了在嵌入式系統(tǒng)中的設(shè)計與實現(xiàn)。該系統(tǒng)硬件搭建以S3C2440 ARM 920T處理器為核心芯片,軟件搭建以SQLite嵌入式數(shù)據(jù)庫為數(shù)據(jù)存儲、篩選、分析和處理核心,通過對S3C2440內(nèi)部A DC編程獲取波形數(shù)據(jù),采用Qt/Embedded實現(xiàn)圖形及人機界面顯示,最后提出了進一步完善系統(tǒng)檢測功能問題的解決方法。
ARM9;Linux;充電電池;荷電狀態(tài);SQLite;Qt/Embedded
電能可由多種形式的能量轉(zhuǎn)化得來,其中把化學(xué)能轉(zhuǎn)換成電能的裝置稱為化學(xué)電池,一般簡稱為電池,電池有原電池和充電電池之分。放電后不能用充電的方式使內(nèi)部活性物質(zhì)再生的電池稱為原電池,也稱一次性電池。放電后可以用充電的方式使內(nèi)部活性物質(zhì)再生,把電能儲存為化學(xué)能,需要放電時再次把化學(xué)能轉(zhuǎn)換為電能的電池稱為充電電池,也稱二次電池。
通過記錄一個完整的充放電過程,得到一組被測電池的充放電電流、電壓及荷電狀態(tài)曲線,對于了解電池的實際充、放電狀況,掌握電池的質(zhì)量、實際容量和實際供電能力,保障重要用電設(shè)備的必要用電時間,提供進行維護的必要信息,延長電池使用壽命,提高電池利用率都具有非常重要的意義。
本文設(shè)計了一種基于ARM 9的新型充電電池荷電狀態(tài)檢測系統(tǒng),該系統(tǒng)融合了ARM 9豐富的軟硬件資源,將信號采集、荷電狀態(tài)計算、波形顯示、記錄數(shù)據(jù)存儲、可用剩余容量分析及其他管理操作集中交由ARM 9處理,實現(xiàn)了儀器的小型化、便攜化和智能化。
本文以安時測量法為應(yīng)用背景,介紹基于ARM 9的充電電池荷電狀態(tài)檢測系統(tǒng)設(shè)計與實現(xiàn)。
1.1 系統(tǒng)硬件設(shè)計
硬件設(shè)計采用核心板加底板的設(shè)計思想。核心板選用三星公司的S3C2440 ARM 920T處理器作為核心芯片,板上的集成Flash Rom容量為64Mbyte(Nand Flash K9F1208),集成內(nèi)存為32位的SDRAM(HY57V641620)2片共64Mbyte。該板為小板結(jié)構(gòu),只引出ARM芯片的所有信號送往底板。底板引入來自核心板的信號,并配以相應(yīng)的硬件接口。外接器件,選配信號調(diào)理電路作為被測信號與S3C2440 ADC引腳間的接口電路,電壓信號和電流信號分別從充電電池兩個電極端及從與正極端串接的大功率低阻值取樣電阻上取出,溫度信號直接由數(shù)字溫度傳感器的輸出端取出,選配8寸觸摸液晶屏作為輸入操作與輸出顯示器件,選配4×4鍵盤作為用戶選用輸入單元。
系統(tǒng)硬件基本組成框圖如圖1所示。
1.2 系統(tǒng)軟件設(shè)計
整個系統(tǒng)軟件主要由嵌入式Linux內(nèi)核、設(shè)備驅(qū)動、以及基于Qt/Embedded的應(yīng)用程序組構(gòu)成,系統(tǒng)軟件功能框如圖2所示。
內(nèi)核層采用Linux內(nèi)核,版本號為Linux3.2.8。為了減少內(nèi)核所占內(nèi)存,需要對內(nèi)核進行精簡配置,并重新編譯移植,關(guān)于Linux內(nèi)核的配置和移植的方法與過程,本文不做重點介紹,具體可見參考文獻[1]。驅(qū)動層直接由內(nèi)核管理,通過驅(qū)動層提供的設(shè)備接口,可以直接訪問硬件設(shè)備,如LCD顯示器、觸摸屏、鍵盤等。LCD和觸摸屏的驅(qū)動由Qt/Embedded(QtE)提供。應(yīng)用層主要包括信息采集與處理、數(shù)據(jù)管理、人機界面三個模塊。
圖1 系統(tǒng)硬件基本組成框圖
圖2 系統(tǒng)軟件功能框圖
1.3 系統(tǒng)測量原理
1.3.1 原理分析
充電電池荷電狀態(tài)SOC(state of charge)被定義[6]為剩余能量和額定能量的比值,通常把一定溫度下電池充電到不能再吸收能量的SOC定義為100%,而把電池放電到不能放出能量時的SOC定義為0%,荷電狀態(tài)計算公式如下:式中:SOC0為充電電池在t0時刻的荷電狀態(tài);CR為充電電池的額定容量;Icm為充電電池的測量電流;tEND為充電電池達(dá)到放電終止電壓的時間。
由式(1)~(2)可知SOC的大小直接和充電電池的充放電電流及充放電電壓相關(guān),在規(guī)定的溫度下,只要測出充放電時的電流及電壓,就可以根據(jù)定義式計算出該時刻的荷電狀態(tài)。
1.3.2 測量方法
常用的充電電池荷電狀態(tài)檢測方法主要有密度法,開路電壓法,內(nèi)阻法和安時法等。安時法是利用測量得到的充放電電流和電壓數(shù)據(jù),通過計算得出蓄電池輸出能量或者輸入能量的一種測量方法。以1 000 Ah電池的10 h率放電試驗為例,放電前先充電24 h。然后以100 A電流放電大約10 h。在一充一放兩個過程中,對電池的電壓和電流等原始數(shù)據(jù)定時進行記錄。最后通過定義式計算出相應(yīng)時刻的荷電狀態(tài)。
2.1 數(shù)據(jù)采集
本系統(tǒng)對充電電池充放電電壓、電流及溫度的實時采集,是通過對S3C2440內(nèi)部ADC(模數(shù)轉(zhuǎn)換器)單元編程來實現(xiàn)。
2.1.1 A DC轉(zhuǎn)換時間的計算
A/D轉(zhuǎn)換時間即完成一次A/D轉(zhuǎn)換所需要的時間。當(dāng)系統(tǒng)的時鐘頻率為50 MHz,且ADC時鐘源的預(yù)分頻值為49時,10位數(shù)字量的轉(zhuǎn)換時間為:
A/D converter freq=50MHz/(49+1)=1MHz
Conversion time=1/(1MHz/5cycles)=1/200 kHz=5μs
2.1.2 A DC分辨率的計算
S3C2440內(nèi)部ADC的輸出為10位數(shù)字量,由于輸入的滿刻度電壓為2.5 V,因此ADC能分辨出來的輸入電壓變化的最小值為2.5 V/210=2.4mV。
2.1.3 數(shù)據(jù)采集讀取程序(A DC讀取程序)
S3C2440內(nèi)部ADC數(shù)據(jù)采集讀取程序如下:
程序工作流程是:(1)函數(shù)根據(jù)參數(shù)傳遞來的AD通道值進行ADC控制寄存器設(shè)置,并設(shè)置預(yù)分頻值;(2)啟動一次A/D轉(zhuǎn)換;(3)等待一次轉(zhuǎn)換完成;(4)返回AD轉(zhuǎn)換的值。
2.2 數(shù)據(jù)管理
文中系統(tǒng)的數(shù)據(jù)管理選擇嵌入式數(shù)據(jù)庫SQLite來實現(xiàn)。嵌入式數(shù)據(jù)庫是一種具備了基本數(shù)據(jù)庫特性的數(shù)據(jù)文件,它與傳統(tǒng)數(shù)據(jù)庫的區(qū)別是采用程序方式直接驅(qū)動。嵌入式數(shù)據(jù)庫體積很小,在運行時需要較少的內(nèi)存,具有很好的實時性[1]。
系統(tǒng)針對數(shù)據(jù)庫的管理操作主要有原始數(shù)據(jù)的導(dǎo)入、查詢結(jié)果的生成、報表的提交、過期數(shù)據(jù)的刪除(刪除已經(jīng)查詢過的不再使用的數(shù)據(jù))。
2.2.1 原始數(shù)據(jù)的導(dǎo)入
由于需要導(dǎo)入庫中的數(shù)據(jù)來自ADC讀取程序和溫度傳感器,所以需先將采集到的數(shù)據(jù)存入變量,再通過sqlite3_mprintf()函數(shù)將變量的值添加到SQL語句中,最后再執(zhí)行相應(yīng)的SQL語句就可以把數(shù)據(jù)插入到數(shù)據(jù)庫中。程序如下:
2.2.2 查詢結(jié)果的生成
本系統(tǒng)采用按時段查詢的方法來查找經(jīng)濾波處理和數(shù)值變換后的數(shù)據(jù),用于QtE圖形顯示模塊在屏幕指定位置生成放電電壓/荷電狀態(tài)曲線及本次放電計算容量。用于生成查詢結(jié)果的SQLite操作語句如下:
2.2.3 報表的提交
提交報表(查詢結(jié)果)時,對于波形數(shù)據(jù),本系統(tǒng)通過Time字段選取所生成視圖中,當(dāng)前EventCycle(事件循環(huán))中的數(shù)據(jù)上交到QtE模塊。提交數(shù)據(jù)的SQLite操作語句為:
Sql=sqlite3_mprintf(dSELECT*FROM myview WHERE Time BETWEEN%d AND%dd,time1,time2);//time2=time1+ EventCycle
sqlite3_get_table(db,sql,&result,&nrow,&ncolumn,&errmsg);//結(jié)果被保存到result數(shù)組中。
2.2.4 過期數(shù)據(jù)的刪除
數(shù)據(jù)庫刪除內(nèi)容一般為前一個EventCycle之前的數(shù)據(jù)。本系統(tǒng)設(shè)定:在規(guī)定的Event Cycle時間內(nèi),記錄條數(shù)大于1 000時系統(tǒng)自動調(diào)用刪除記錄的子程序刪除多余記錄;Event Cycle內(nèi)記錄條數(shù)不超過規(guī)定值時,每隔一個EventCycle的時間刪除一次;用戶界面取消某個查詢時,SQLite中生成的相應(yīng)視圖也立即刪除。刪除視圖的SQLite操作語句為:
sqlite3_exec(db,dDROPVIEW myview d,NULL,0,&errmsg);//釋放掉視圖名為myview的視圖。
2.3 人機界面
本系統(tǒng)的人機界面模塊選用Qt/Embedded設(shè)計開發(fā)。Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序開發(fā)框架。Qt/Embedded是Qt的嵌入式版本(簡稱QtE)。
2.3.1 測量波形的界面顯示
本系統(tǒng)針對人機界面的程序設(shè)計內(nèi)容主要有儀表界面設(shè)計,操作窗口設(shè)計,對話窗口設(shè)計等。對于測量波形的界面顯示,主要是通過重載paint Event函數(shù)來實現(xiàn)具體的界面圖形繪制,相應(yīng)的Qt語句如下:
上述各項設(shè)計內(nèi)容均通過QtE設(shè)計實現(xiàn),通過交叉編譯后,移植到嵌入式系統(tǒng)硬件平臺。
2.3.2 人機界面程序模塊工作流程
系統(tǒng)人機界面程序模塊工作流程圖如圖3所示。
圖3 人機界面程序模塊工作流程圖
測試對象為飛利浦R6B2A160AA1600mAh氫鎳電池,該電池生產(chǎn)日期為2011年9月,測試日期為2012年3月9日,測試溫度:(20±5)℃,容量測試方法參照國標(biāo)GB/T 18288-2000標(biāo)準(zhǔn)。測試設(shè)計為三次充放電循環(huán),前兩次為激活過程數(shù)據(jù),第三次的測試結(jié)果為容量測試數(shù)據(jù)。
第一循環(huán):以0.1 C的電流(160mA)充電16 h,開路放置1 h再以0.4 C(640mA)的電流放至終止電壓1.0 V,測放電曲線并計算本次容量。
第二循環(huán):使用大電流智能快充充電,自動充停后(-ΔV=5mV)以0.1 C(160mA)補充電2 h,開路放置1 h再以0.4 C(640mA)電流放電到終止電壓1.0 V,測放電曲線并計算本次容量。
第三循環(huán)(正式標(biāo)定容量):以0.4 C電流(640mA)充電3.5 h,開路放置1 h再以0.2 C電流(320mA)放電至終止電壓1.0 V,測放電曲線并計算容量,并以此作為該電池的實測容量數(shù)據(jù)。
實際測量結(jié)果如圖4、5、6所示。從圖中可見,第一次測試容量為1 472mAh,第二次測試容量為1 559mAh,比第一次有所增加,表明有活性物質(zhì)被激活,第三次測試容量為1 593mAh。三次測量結(jié)果符合充電電池循環(huán)充放電規(guī)律,所得測試容量基本接近標(biāo)稱容量,與實際情況吻合。測試結(jié)果證明文中荷電檢測系統(tǒng)軟、硬件設(shè)計正確,測量方法可行,系統(tǒng)滿足實際測量需求。
圖4 第一次放電曲線及測試容量顯示界面
圖5 第二次放電曲線及測試容量顯示界面
圖6 第三次放電曲線及測試容量顯示界面
充電電池荷電狀態(tài)檢測系統(tǒng)在嵌入式硬件平臺上實現(xiàn)需要解決多項問題,文中僅就主要硬件模塊的選擇與性能配置、主要軟件系統(tǒng)的選擇與性能配置、系統(tǒng)數(shù)據(jù)的獲取、嵌入式數(shù)據(jù)庫的選用及數(shù)據(jù)存儲與篩選,Qt/Embedded的選用等實際問題,介紹了在ARM 9平臺上解決這些問題的方法。文中系統(tǒng),界面觸摸操作,電壓/荷電狀態(tài)波形實時顯示,波形數(shù)據(jù)存儲,數(shù)據(jù)的回放、閱讀和轉(zhuǎn)存等項功能已經(jīng)實現(xiàn)。系統(tǒng)需要繼續(xù)完善的問題還有測量精度問題。這個問題的解決可以從兩個方面入手:一方面提高前端數(shù)據(jù)的測量精度并合理設(shè)置補償數(shù)據(jù);另一方面是建立合適的荷電狀態(tài)數(shù)學(xué)模型并引入相應(yīng)的計算補償。
[1] 謝榮生,豐海,李遠(yuǎn)敏,等.嵌入式系統(tǒng)軟件設(shè)計[M].北京:北京郵電大學(xué)出版社,2011.
[2] 弓雷.ARM嵌入式Linux系統(tǒng)開發(fā)詳解[M].北京:清華大學(xué)出版社,2010.
[3] 康維新.嵌入式Linux系統(tǒng)開發(fā)與應(yīng)用[M].北京:機械工業(yè)出版社,2011.
[4] 何先波,李薇,羅建,等.嵌入式系統(tǒng)軟件開發(fā)技術(shù)基礎(chǔ)[M].北京:清華大學(xué)出版社,2011.
[5] 錢恭斌,肖敦鶴.嵌入式系統(tǒng)開發(fā)基礎(chǔ)與實踐教程[M].北京:電子工業(yè)出版社,2011.
[6] KOZLOWSKI JD,BYINGTON C S,GARGA A K,et a1.Modelbased predictive diagnostics for electrochemical energy sources[J]. IEEE,2001,6:3149-3164.
[7] 雷肖,陳清泉,劉開培,等.電動車蓄電池荷電狀態(tài)估計的支持向量機方法Ⅲ[J].中國電機工程學(xué)報,2008,28(18):197-199.
[8] 李立偉,鄒積巖.基于交流測量法的蓄電池內(nèi)阻測量裝置的研究[J].計量技術(shù),2002(12):15-17.
[9] 徐曼珍.新型蓄電池原理與應(yīng)用[M].北京:人民郵電出版社:2005.
Design of battery SOC detection system
GAO Feng-you1,ZHANG Jun1,WANG Xiang-bin2
(1.College of Electronics Engineering,Tianjin University of Technology and Education,Tianjin 300222,China; 2.Daqing Oilfield Drilling Engineering Company,Logging Company,Daqing Heilongjiang 163412,China)
A battery detection system of state of charge based on ARM9 was designed.In this system,S3C2440 ARM920T processor was chosen as the core of hardware,SQLite database was chosen as the core for data saving, sieving,analysis and processing.The waveform data were
by writing procedure to the ADC in S3C2440,the sketch and man-machine interface manifestation was realized by Qt/Embedded.In the end,some methods were put forward,which could solve the question of detection.
ARM9;Linux;battery;state of charge(SOC);SQLite;Qt/Embedded
T M 912
A
1002-087 X(2013)11-1999-04
2013-04-01
國家自然科學(xué)基金資助項目(61071204)
高鳳友(1963—),男,黑龍江省人,副教授,工學(xué)碩士,主要研究方向為嵌入式系統(tǒng)設(shè)計、測量與診斷技術(shù)。