金乾坤,郭佑民,劉 娟,朱 鵬
(蘭州交通大學(xué)機(jī)電技術(shù)研究所, 蘭州730070)
基于ARM9的蓄電池在線監(jiān)測系統(tǒng),采用S3C2410芯片作為主處理器,在機(jī)車行駛的過程中對(duì)各節(jié)蓄電池電壓和溫度數(shù)據(jù)不停頓地采集、匯總、分析和存儲(chǔ)。同時(shí)通過外接LCD實(shí)時(shí)顯示電壓和溫度數(shù)據(jù)。最后SD卡轉(zhuǎn)存到PC機(jī),通過地面分析軟件繪制出電池電壓,溫度曲線。監(jiān)測系統(tǒng)能快速找出端電壓上升或下降較快的一只或幾只電池,將其確認(rèn)為需要更換的電池,同時(shí)所采集數(shù)據(jù)也可進(jìn)一步用于建立蓄電池質(zhì)量模型。
系統(tǒng)由上位機(jī)和下位機(jī)2部分組成。上位機(jī)采用S3C2410作為處理芯片,完成數(shù)據(jù)的收集,比較和分析,實(shí)時(shí)顯示和存儲(chǔ)。下位機(jī)采用AVR單片機(jī)ATmega16作為核心,主要用于對(duì)蓄電池電壓溫度的采集和上傳。上位機(jī)與下位機(jī)通過485總線通信,蓄電池4節(jié)為一組,由一個(gè)下位機(jī)控制。上位機(jī)采取對(duì)每個(gè)下位機(jī)輪詢的方式實(shí)現(xiàn)蓄電池?cái)?shù)據(jù)的收集。上位機(jī)所需電源由所有蓄電池提供,通過DM05-110s05電壓轉(zhuǎn)換芯片實(shí)現(xiàn)110 V~5 V的轉(zhuǎn)換,再經(jīng)ASM1117轉(zhuǎn)換為3.3 V供系統(tǒng)使用。下位機(jī)電源由它監(jiān)測的4節(jié)蓄電池提供,經(jīng)ASM1117轉(zhuǎn)換供下位機(jī)使用。系統(tǒng)結(jié)構(gòu)如圖1。
圖1 系統(tǒng)結(jié)構(gòu)圖
2.1.1 S3C2410芯片
S3C2410芯片是基于ARM920T內(nèi)核的16/32 bitRISC嵌入式微處理器,同時(shí)增加了豐富的外圍資源,有利于系統(tǒng)開發(fā)。ARM920T由ARM9TDMI、存儲(chǔ)管理單元(MMU)和高速緩存3部分組成。其中MMU可管理虛擬內(nèi)存,高速緩存由獨(dú)立的16 kbit地址和16 kbit數(shù)據(jù)高速Cached組成。
該芯片集成了1個(gè)LCD控制器,NAND FLASH控制器、SDRAM控制器、3個(gè)通道的UART等豐富的外部接口;在時(shí)鐘方面也有突出的特點(diǎn),該芯片集成了一個(gè)具有日歷功能的RTC(實(shí)時(shí)控制)和具有PLL(MPLL和UPLL)的芯片時(shí)鐘發(fā)生器。MPLL產(chǎn)生主時(shí)鐘,使處理器工作頻率最高達(dá)到203 MHz在。
時(shí)鐘電路分為系統(tǒng)主時(shí)鐘和實(shí)時(shí)時(shí)鐘(RTC)。系統(tǒng)主時(shí)鐘用于向CPU及其接口電路提供工作時(shí)鐘,RTC為系統(tǒng)提供確切的時(shí)間,用于記錄電池的電壓,溫度數(shù)據(jù)的時(shí)間及定期存儲(chǔ)電池參數(shù)。系統(tǒng)主時(shí)鐘通過設(shè)置時(shí)鐘模式位OM[3:2] =00,采用外接晶振,由內(nèi)部時(shí)鐘電路產(chǎn)生時(shí)鐘的方式,CPU原有的外部時(shí)鐘直接輸入功能被禁止。外接晶振的頻率是12 MHz,系統(tǒng)時(shí)鐘頻率可由軟件設(shè)置,提高了系統(tǒng)靈活性。
2.1.2 存儲(chǔ)器接口
由于本系統(tǒng)采用了嵌入式Linux操作系統(tǒng),且微處理器S3C2410沒有足夠的片內(nèi)存儲(chǔ)空間,需要對(duì)片外RAM和ROM進(jìn)行相應(yīng)的擴(kuò)展。本系統(tǒng)采用市場上運(yùn)用較多的K9F1208U0M,是64 M的8 bitNAND FLASH。其與處理器連接的電路如圖2。采用2片HY57V561620并聯(lián)構(gòu)建32 bit的SDRAM存儲(chǔ)器系統(tǒng),共64 Mbit的SDRAM存儲(chǔ)空間,可滿足嵌入式操作系統(tǒng)及各種較復(fù)雜算法的運(yùn)行。
圖2 NAND Flash 電路圖
2.1.3 LCD和SD卡接口
S3C2410集成了LCD控制器,LCD控制器相當(dāng)于嵌入式系統(tǒng)的顯卡,負(fù)責(zé)把顯存中的數(shù)據(jù)傳輸?shù)絃CD驅(qū)動(dòng)器,并產(chǎn)生必須的LCD控制器信號(hào)。設(shè)計(jì)中采集的電壓和溫度數(shù)據(jù)定時(shí)導(dǎo)入顯示緩沖區(qū),刷新顯示。S3C2410內(nèi)置有SD/MMC控制器,可以支持SD卡。系統(tǒng)采集的數(shù)據(jù)被保存在數(shù)據(jù)文件中,當(dāng)保存一定量的數(shù)據(jù)時(shí),掛載SD卡,把數(shù)據(jù)轉(zhuǎn)存到SD卡中。
下位機(jī)由ATMEGA16,溫度傳感器DS18B20,蓄電池電壓信號(hào)和485通信接口組成。主要功能是測量蓄電池電壓和溫度,并傳送給上位機(jī)。ATmega16自帶10 bitA/D轉(zhuǎn)換器,只需把電壓信號(hào)直接接入A/D口。DS18B20是1-Wire總線數(shù)字溫度傳感器,溫度測量范圍為-55℃~125℃,9 bit-12 bit可編程的轉(zhuǎn)換精度。溫度測量電路如圖3。
圖3 溫度測量電路
軟件結(jié)構(gòu)由3個(gè)層次組成,如圖4。設(shè)備驅(qū)動(dòng)層依賴于底層硬件,中間層Linux操作系統(tǒng)和文件系統(tǒng)是連接設(shè)備驅(qū)動(dòng)層和應(yīng)用程序?qū)拥募~帶。應(yīng)用程序?qū)又饕行铍姵乇O(jiān)測軟件和GUI。整個(gè)Linux系統(tǒng)共有4個(gè)部分:引導(dǎo)Linux 的Bootloader,系統(tǒng)選用u-boot1.3.2,Linux內(nèi)核2.6.18,Cramfs文件系統(tǒng),用戶空間。它們位于NAND Flash中不同的分區(qū)內(nèi),系統(tǒng)空間分配結(jié)構(gòu)如圖5。
圖4 軟件結(jié)構(gòu)圖
圖5 系統(tǒng)空間分配圖
監(jiān)測軟件采用C語言編寫,系統(tǒng)啟動(dòng)后自動(dòng)運(yùn)行。主要完成對(duì)下位機(jī)的查詢,接收下位機(jī)傳送的數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行處理和顯示,并保存在數(shù)據(jù)文件中。軟件流程如圖6。
圖6 軟件流程圖
基于ARM9的機(jī)車蓄電池狀態(tài)監(jiān)測系統(tǒng)依據(jù)功能的不同,具體實(shí)現(xiàn)分成兩部分。上位機(jī)采用ARM9內(nèi)核的S3C2410芯片作為主處理芯片,同時(shí)采用ATmega16作為下位機(jī)芯片,完成對(duì)機(jī)車蓄電池狀態(tài)(電池電壓,溫度)的采集、收集和存儲(chǔ)的過程。同時(shí)上位機(jī)使用Linux作為操作系統(tǒng),增加了系統(tǒng)的容錯(cuò)性和擴(kuò)展性。目前系統(tǒng)的設(shè)計(jì)已經(jīng)完成,并完成各模塊的功能試驗(yàn)。運(yùn)行情況表明:系統(tǒng)穩(wěn)定性好,測量精度較高。
[1] 盧鋒,吳永杰,康斌. 機(jī)車蓄電池檢測技術(shù)探討與應(yīng)用[J] . 鐵道機(jī)車車輛,2007(10).
[2] 韋東山. 嵌入式Linux應(yīng)用開發(fā)完全手冊[M] . 北京:人民郵電出版社,2008.
[3] 王宇行. ARM程序分析與設(shè)計(jì)[M] . 北京:北京航空航天大學(xué)出版社,2008.
[4] 張興波. 基于CC2420的機(jī)車蓄電池在線檢測系統(tǒng)設(shè)計(jì)[J] .儀表技術(shù),2008(6).