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