金乾坤,郭佑民,劉 娟,朱 鵬
(蘭州交通大學機電技術研究所, 蘭州730070)
基于ARM9的蓄電池在線監測系統,采用S3C2410芯片作為主處理器,在機車行駛的過程中對各節蓄電池電壓和溫度數據不停頓地采集、匯總、分析和存儲。同時通過外接LCD實時顯示電壓和溫度數據。最后SD卡轉存到PC機,通過地面分析軟件繪制出電池電壓,溫度曲線。監測系統能快速找出端電壓上升或下降較快的一只或幾只電池,將其確認為需要更換的電池,同時所采集數據也可進一步用于建立蓄電池質量模型。
系統由上位機和下位機2部分組成。上位機采用S3C2410作為處理芯片,完成數據的收集,比較和分析,實時顯示和存儲。下位機采用AVR單片機ATmega16作為核心,主要用于對蓄電池電壓溫度的采集和上傳。上位機與下位機通過485總線通信,蓄電池4節為一組,由一個下位機控制。上位機采取對每個下位機輪詢的方式實現蓄電池數據的收集。上位機所需電源由所有蓄電池提供,通過DM05-110s05電壓轉換芯片實現110 V~5 V的轉換,再經ASM1117轉換為3.3 V供系統使用。下位機電源由它監測的4節蓄電池提供,經ASM1117轉換供下位機使用。系統結構如圖1。

圖1 系統結構圖
2.1.1 S3C2410芯片
S3C2410芯片是基于ARM920T內核的16/32 bitRISC嵌入式微處理器,同時增加了豐富的外圍資源,有利于系統開發。ARM920T由ARM9TDMI、存儲管理單元(MMU)和高速緩存3部分組成。其中MMU可管理虛擬內存,高速緩存由獨立的16 kbit地址和16 kbit數據高速Cached組成。
該芯片集成了1個LCD控制器,NAND FLASH控制器、SDRAM控制器、3個通道的UART等豐富的外部接口;在時鐘方面也有突出的特點,該芯片集成了一個具有日歷功能的RTC(實時控制)和具有PLL(MPLL和UPLL)的芯片時鐘發生器。MPLL產生主時鐘,使處理器工作頻率最高達到203 MHz在。
時鐘電路分為系統主時鐘和實時時鐘(RTC)。系統主時鐘用于向CPU及其接口電路提供工作時鐘,RTC為系統提供確切的時間,用于記錄電池的電壓,溫度數據的時間及定期存儲電池參數。系統主時鐘通過設置時鐘模式位OM[3:2] =00,采用外接晶振,由內部時鐘電路產生時鐘的方式,CPU原有的外部時鐘直接輸入功能被禁止。外接晶振的頻率是12 MHz,系統時鐘頻率可由軟件設置,提高了系統靈活性。
2.1.2 存儲器接口
由于本系統采用了嵌入式Linux操作系統,且微處理器S3C2410沒有足夠的片內存儲空間,需要對片外RAM和ROM進行相應的擴展。本系統采用市場上運用較多的K9F1208U0M,是64 M的8 bitNAND FLASH。其與處理器連接的電路如圖2。采用2片HY57V561620并聯構建32 bit的SDRAM存儲器系統,共64 Mbit的SDRAM存儲空間,可滿足嵌入式操作系統及各種較復雜算法的運行。

圖2 NAND Flash 電路圖
2.1.3 LCD和SD卡接口
S3C2410集成了LCD控制器,LCD控制器相當于嵌入式系統的顯卡,負責把顯存中的數據傳輸到LCD驅動器,并產生必須的LCD控制器信號。設計中采集的電壓和溫度數據定時導入顯示緩沖區,刷新顯示。S3C2410內置有SD/MMC控制器,可以支持SD卡。系統采集的數據被保存在數據文件中,當保存一定量的數據時,掛載SD卡,把數據轉存到SD卡中。
下位機由ATMEGA16,溫度傳感器DS18B20,蓄電池電壓信號和485通信接口組成。主要功能是測量蓄電池電壓和溫度,并傳送給上位機。ATmega16自帶10 bitA/D轉換器,只需把電壓信號直接接入A/D口。DS18B20是1-Wire總線數字溫度傳感器,溫度測量范圍為-55℃~125℃,9 bit-12 bit可編程的轉換精度。溫度測量電路如圖3。

圖3 溫度測量電路
軟件結構由3個層次組成,如圖4。設備驅動層依賴于底層硬件,中間層Linux操作系統和文件系統是連接設備驅動層和應用程序層的紐帶。應用程序層主要有蓄電池監測軟件和GUI。整個Linux系統共有4個部分:引導Linux 的Bootloader,系統選用u-boot1.3.2,Linux內核2.6.18,Cramfs文件系統,用戶空間。它們位于NAND Flash中不同的分區內,系統空間分配結構如圖5。

圖4 軟件結構圖

圖5 系統空間分配圖
監測軟件采用C語言編寫,系統啟動后自動運行。主要完成對下位機的查詢,接收下位機傳送的數據,對數據進行處理和顯示,并保存在數據文件中。軟件流程如圖6。

圖6 軟件流程圖
基于ARM9的機車蓄電池狀態監測系統依據功能的不同,具體實現分成兩部分。上位機采用ARM9內核的S3C2410芯片作為主處理芯片,同時采用ATmega16作為下位機芯片,完成對機車蓄電池狀態(電池電壓,溫度)的采集、收集和存儲的過程。同時上位機使用Linux作為操作系統,增加了系統的容錯性和擴展性。目前系統的設計已經完成,并完成各模塊的功能試驗。運行情況表明:系統穩定性好,測量精度較高。
[1] 盧鋒,吳永杰,康斌. 機車蓄電池檢測技術探討與應用[J] . 鐵道機車車輛,2007(10).
[2] 韋東山. 嵌入式Linux應用開發完全手冊[M] . 北京:人民郵電出版社,2008.
[3] 王宇行. ARM程序分析與設計[M] . 北京:北京航空航天大學出版社,2008.
[4] 張興波. 基于CC2420的機車蓄電池在線檢測系統設計[J] .儀表技術,2008(6).