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