陳堯杰 李璋
摘 要:隨著新能源技術(shù)的發(fā)展,節(jié)能環(huán)保型汽車對于社會的需求顯得尤為重要,為滿足社會需求,提高人們對于新能源的追求,文中提出了一種基于ARM平臺的嵌入式Qt應(yīng)用程序的汽車電池監(jiān)控系統(tǒng)的解決方案。該方案以Linux操作系統(tǒng)為軟件平臺,以ARM9及其外圍電路為硬件基礎(chǔ),在Linux系統(tǒng)上利用Qt Creator軟件開發(fā)的圖形界面系統(tǒng)來實時監(jiān)控汽車的電池狀態(tài),用以幫助人們更好的管理電池。該方案的優(yōu)點在于利用嵌入式Qt開發(fā)軟件系統(tǒng),從而擺脫了PC機體積大、成本高等方面的束縛,便于系統(tǒng)移植和攜帶。
關(guān)鍵詞:嵌入式;Qt;ARM;Linux系統(tǒng);電池監(jiān)控系統(tǒng)
中圖分類號:TP368 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2016)04-00-03
0 引 言
嵌入式系統(tǒng)以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,具有體積小,功耗低,成本低,便于攜帶等優(yōu)點并符合高要求的專用計算機系統(tǒng),它主要以應(yīng)用為中心。在現(xiàn)代科技日新月異的情況下,社會朝著高度智能化,信息化的方向前進(jìn)已是必然。在這種情況下,新能源汽車的發(fā)展與開發(fā)有著巨大的潛力,針對新能源汽車的開發(fā),我們提出了基于嵌入式Qt的新能源汽車電池監(jiān)控系統(tǒng)的開發(fā)。
1 電池監(jiān)控系統(tǒng)整體設(shè)計
目前,嵌入式系統(tǒng)在智能生活領(lǐng)域已成為人們不可分割的一部分。電池與新能源汽車密不可分,對于電池的監(jiān)控和控制有助于我們更好的延長汽車壽命。該系統(tǒng)以ARM-Linux平臺為方案,分為底層硬件部分,Bootloader引導(dǎo)內(nèi)核,Linux-kernel內(nèi)核及根文件系統(tǒng),Qt/Embedded及數(shù)據(jù)庫五部分,系統(tǒng)整體框圖如圖1所示。其中,圖1中的Qt/Embeded在圖形界面的設(shè)計中采用Qt Creator軟件開發(fā)應(yīng)用界面,完成對電池電流,電壓容量,溫度,充放電時間等重要參數(shù)的展示并使用MySQL數(shù)據(jù)庫儲存這些數(shù)據(jù)。
2 系統(tǒng)硬件的設(shè)計
電池監(jiān)控系統(tǒng)的硬件是以ARM平臺為基礎(chǔ),選用ARM920T和samsung的mini2440為CPU處理器。其內(nèi)部晶振輸入頻率為12 MHz時,其處理器最高輸出頻率可達(dá)532 MHz。開發(fā)板帶有內(nèi)存為64 M的SDRAM和128 M的NAND Flash以及NOR Flash。LCD采用STN顯示帶有觸目屏為電阻式類型的3.5英寸的液晶屏。系統(tǒng)支持NAND Flash啟動和NOR Flash啟動兩種啟動方式。為了方便,我們一般采用NAND方式啟動。對于數(shù)據(jù)的收集與通信一般采用I2C總線接口進(jìn)行。其系統(tǒng)硬件設(shè)計如圖2所示。
3 軟件平臺的搭建
在PC機下安裝VMware 10虛擬機。系統(tǒng)的開發(fā)環(huán)境需在虛擬機中安裝Linux 14.04版本的操作系統(tǒng)。所搭載的交叉編譯環(huán)境為arm-linux-gcc 4.4.3版本。該編譯器可針對ARM平臺進(jìn)行特定的編譯。配置tftp方便開發(fā)板與Linux系統(tǒng)間的通訊,用來下載和上傳開發(fā)板與系統(tǒng)之間的資源。軟件開發(fā)平臺為 Qt Creator軟件。系統(tǒng)所需的軟件和資源包如表1所列。
在實際應(yīng)用中可以根據(jù)自己的需求進(jìn)行配置。在ubuntu軟件中心可以在線下載Qt Creator軟件并進(jìn)行安裝,非常方便。至此,系統(tǒng)所需的開發(fā)環(huán)境基本構(gòu)建完成,圖4所示是整個系統(tǒng)的開發(fā)流程。
4 應(yīng)用程序的開發(fā)
應(yīng)用程序開發(fā)分為初始化硬件及電池信息收集,應(yīng)用層圖形界面的設(shè)計與數(shù)據(jù)庫的使用兩部分。
對于電池信息狀態(tài)的采集,用C語言開發(fā)控制ARM相關(guān)寄存器和I2C總線接口,初始化時鐘,設(shè)置相關(guān)中斷等,具體的軟件流程圖如圖5所示。開發(fā)板上系統(tǒng)后,程序進(jìn)行一些硬件初始化,配置振蕩器,設(shè)置時鐘源;清中斷,使能中斷優(yōu)先級;初始化UART與GPIO端口。當(dāng)然對于I2C主機初始化是必須的。I2C有硬件I2C和模擬I2C兩種選擇。我們選用的是硬件I2C,對I2C相關(guān)寄存器進(jìn)行初始化設(shè)置。必要的硬件設(shè)置完成后開始參數(shù)初始化,將電池狀態(tài)保存到E2PROM中。主程序中的while循環(huán)主要用來進(jìn)行UART數(shù)據(jù)傳輸,根據(jù)LED燈指示的工作狀態(tài)對電池進(jìn)行保護控制,并根據(jù)獲取的電池狀態(tài)信息是否滿足循環(huán)體條件來判斷是否進(jìn)行下一次循環(huán)。
硬件系統(tǒng)每隔500 ms完成一次數(shù)據(jù)采集,數(shù)據(jù)包括23串電壓,4個溫度節(jié)點,每1 s更新一次SOC值,在點火信號丟失2分鐘后,系統(tǒng)自動關(guān)機,節(jié)省能耗。對于電池信息,I2C通信狀態(tài),溫度及容量狀態(tài)都有很好的監(jiān)視作用,其中系統(tǒng)只帶有欠壓保護,高溫保護等。應(yīng)用層圖形界面的設(shè)計主要用到基于C++的Qt庫的開發(fā)。包括界面布局,接口設(shè)置,MySQL數(shù)據(jù)庫的使用。相關(guān)函數(shù)通過信號與槽機制建立聯(lián)系等。比如語句QOBJECT::connect(btnButton1,SIGNAL(clicked()),this,SLOT(maxBateryValueslot()));建立了btnButton1按鈕與函數(shù)maxBateryValueslot()的聯(lián)系。應(yīng)用界面通過存儲在E2PROM上的當(dāng)前地址建立聯(lián)系。這是底層開發(fā)完成后預(yù)留的與應(yīng)用層進(jìn)行通信的接口。應(yīng)用程序開發(fā)完成后還需要移植到開發(fā)板上。在Qt Creator軟件上使用MySQL數(shù)據(jù)庫時需要用戶自己編譯數(shù)據(jù)庫驅(qū)動。對于數(shù)據(jù)庫驅(qū)動編譯,首先應(yīng)下載并安裝MySQL數(shù)據(jù)庫,注意安裝時選擇Custom Install定制安裝,然后編譯,在編譯時注意數(shù)據(jù)庫的lib文件和include頭文件。最后再將生成的qsqlmysql4.dll,libqsqlmysql4.a,qsqlmysqld4.dll,libqsqlmysqld4.a這四個文件都復(fù)制到數(shù)據(jù)庫驅(qū)動插件放置的目錄。項目在編譯鏈接通過后會在項目相應(yīng)的一個release文件夾(如:chen-build-desktop-Qt_5_5_0_Qt-5_5_0_Release文件夾)中,比如.exe文件就在此。然后將此.exe文件通過tftp方法傳到開發(fā)板的相應(yīng)目錄中。注意在提取應(yīng)用程序時可能需要將Qt5.5.0的.lib文件(如imports, lib, plugins, qtc-qmldbg, qtc-qmlobserver, translations等文件)存放在開發(fā)板的相關(guān)目錄下。最后在開發(fā)板的Linux終端輸入相關(guān)命令:
#可執(zhí)行文件名 –qws 即可運行。
這時,系統(tǒng)已基本開發(fā)完成。從結(jié)果中可以看到,當(dāng)圖6中的Charge State為0時表示此時電池正在充電,圖中的各個參數(shù)代表當(dāng)時電池的電池容量,當(dāng)前溫度,充電時間等。圖7表示此時電池正在放電,這時Charge State為1。
5 結(jié) 語
本文基于嵌入式Qt實現(xiàn)了對能源汽車的電池監(jiān)控,使其在使用壽命上有了非常大的提高,符合節(jié)能減排的原則。應(yīng)用嵌入式Qt開發(fā)操作界面使其更加簡潔,這在控制成本方面也起到了一定的作用,非常符合設(shè)計需求。
參考文獻(xiàn)
[1](英)Neil Matthew,Richard Stones.Linux程序設(shè)計[M].北京:人民郵電出版社,2010.
[2]貝爾.深入理解MySQL[M].楊濤,等,譯.北京:人民郵電出版社,2010.
[3]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].北京:人民郵電出版社,2008.
[4] 俞輝,李永,何旭莉,等.嵌入式linux程序設(shè)計案例與實驗教程[M].北京:機械工業(yè)出版社,2011.
[5]蔡志明.精通Qt4編程[M].北京:電子工業(yè)出版社,2011.
[6]華清遠(yuǎn)見嵌入式培訓(xùn)中心.嵌入式Linux應(yīng)用程序開發(fā)(第2版)[M].北京:人民郵電出版社,2009.
[7]譚浩強.C語言程序設(shè)計(第2版)[M].北京:清華大學(xué)出版社,2009.
[8]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.
[9](德)Michael Kerrisk.Linux/UNIX系統(tǒng)編程手冊(上冊) [M].孫劍,許從年,董健,等,譯.北京:人民郵電出版社,2014.
[10](德)Michael Kerrisk.Linux/UNIX系統(tǒng)編程手冊(下冊) [M].孫劍,許從年,董健,等,譯.北京:人民郵電出版社,2014.