摘? 要: 從硬軟件的角度研究了基于S3C2410 的汽車記錄儀采集系統(tǒng)" title="數據采集系統(tǒng)">數據采集系統(tǒng)的設計,對采集系統(tǒng)中三大主要模塊即:實時時鐘信號模塊、車速采集模塊、開關量模塊分別進行了研討,經過實驗證明,將此采集系統(tǒng)應用于汽車記錄儀中,該采集系統(tǒng)采集精度高,抗干擾性強,性能可靠,價格低廉,具有很好的應用前景和較高的通用性與實用性。
關鍵詞: 汽車記錄儀;? 數據采集; S3C2410
?
隨著汽車產業(yè)的迅猛發(fā)展,汽車記錄儀的需求也成倍增長。汽車記錄儀又稱為“汽車黑匣子”,能完整、準確地記錄汽車行駛狀態(tài)下的各種信息[1],能將汽車的行駛軌跡、制動性能、開關量信號完整記錄,并能根據需要隨時調出數據進行分析或者通過專用軟件在電腦上再現(xiàn)。它被認為是確保汽車安全的有效手段,可以迅速獲取有關行車數據,改善營運狀況,成為車輛交通管理必不可少的設備。數據采集系統(tǒng)作為汽車記錄儀的重要組成部分直接關系到記錄儀的各項性能,對記錄儀整體的功能影響甚大。
1 硬件電路結構
1.1 實時時鐘模塊
由于系統(tǒng)產生的各種數據和記錄都與時間密切相關,對時鐘的實時性要求很高,同時記錄儀本身存在著斷電的危險,為了準確記錄車輛行駛狀態(tài),并對異常情況進行記錄,因此選擇實時時鐘芯片來提供日期和時間。實時時鐘芯片是一種不僅能支持每天時間更新,而且能夠進行日期更新的永久時鐘電路[2]。本文采用DALLAS公司的DS1302芯片,它性能高、功耗低,時鐘校準也較為容易,通過3V鋰電池和車內蓄電池兩種方式供電,可以保證在蓄電池出現(xiàn)故障的情況下,該時鐘芯片仍然能夠正常工作,從而使記錄儀的數據同樣準確、可靠。其內部自帶31B的靜態(tài)RAM,存儲容量滿足應用的需要。數據在CLK的上升沿串行輸入,在進行單字節(jié)或多字節(jié)傳送時,開始的第一個字節(jié)為命令字節(jié),用于指定31個字節(jié)中哪個將被訪問。當進行任何數據傳送時,其最高有效位MSB(位7)必須為邏輯1,如果為零,則禁止寫DS1302。其時鐘電路如圖1所示,Vcc1與3V鋰電池相連,Vcc2與蓄電池相連,5、6、7引腳分別接S3C2410的時鐘端、數據端和復位端,通過主控制器S3C2410對時鐘模塊進行統(tǒng)一管理。
?
1.2 車速采集模塊
記錄儀從車輛啟動開始就不停地對車輛的速度進行實時檢測,并實時保存。速度是一個模擬變量,是時刻變化的。車速信號通過傳感器以脈沖形式輸入,為了防止周圍環(huán)境及本身的干擾,采用單光耦芯片TLP521,切斷輸入和輸出通道間直接的電信號聯(lián)系,主要就是通過電-光-電的變換將電信號隔離開來。通過屏蔽和光耦隔離,得到波形干凈的信號。為了得到良好的矩形波,使車速測量達到一定的精度,本系統(tǒng)采用施密特觸發(fā)器LM311來完成波形的整形,信號采集功能完成后,采集到的信號需要送到可編程邏輯器件中進一步處理,然后再傳送給主芯片S3C2410,盡量將所有的干擾信號在進入主控制器之前降到最低。在實際控制過程中各種干擾信號是不可避免的,為了盡可能地消除或減少干擾信號對系統(tǒng)的控制作用,除了在系統(tǒng)硬件及環(huán)境方面采取措施以外,在控制算法上也采取了一定的措施來抑制干擾信號的影響,在程序中采用連續(xù)多次采樣求平均值的辦法予以濾波[3]。車速脈沖采集模塊硬件電路如圖2所示。
1.3 開關量采集模塊
開關量信號包括方向燈、倒燈、車門、遠光燈、近光燈、剎車、鳴號、車輛啟動等這類行駛過程中很重要的數字開關量,將它們采集并保存下來對事后分析有很大幫助[4]??梢酝ㄟ^ARM芯片的I/O端口對這些信號進行輸入。但這些信號是高壓信號,直接接到ARM板上可能會損壞CPU,這里采用光耦芯片TLP521對它們進行隔離,避免CPU受損。在S3C2410中,可以通過GPnCON(n是I/O口的組號)寄存器對GPIO引腳的使用功能進行設置。系統(tǒng)每隔0.2s對開關量信號采集一次,采集來的開關量可以從GPnDAT寄存器中讀取。芯片的接口方式為4腳SPI,能夠大大減少處理器需要提供的引腳數量[5]。當任一開關量輸入信號狀態(tài)發(fā)生變化時,通過中斷的方式通知主處理器,從而減輕了處理器頻繁查詢的負擔。圖3是一路開關信號采集電路,其他開關量電路與此相同。
2 軟件的設計
? 記錄儀數據采集系統(tǒng)軟件要求上電復位后,首先進行自檢;然后顯示初始界面(包括當前時間、行駛速度等);最后根據速度傳感器傳過來的脈沖個數以及持續(xù)時間判斷汽車是否啟動,若未啟動則返回,若已啟動則進入各數據量的檢測。記錄儀軟件設計包括顯示、速度采集、實時時鐘、開關量采集、數據傳送等, 采集系統(tǒng)軟件流程圖如圖4所示。
??? 汽車記錄儀的初始化函數主要工作是為設備分配設備編號,設備的存取是通過一組固定的入口點來進行的,這套接口函數是由file_operations結構定義的,汽車記錄儀主要包括以下成員:
Static int _ _init s3c2410_ts_init (void)
{ ?????????????????????????? … …
ret = register_chrdev(0,DEVICE_NAME, &s3c2410_fops);};
static struct file_operations s3c2410_fops = {
owner: THIS_MODULE,
??????????????????????????? ?/*指向擁有該結構的模塊的指針*/?
open: s3c2410_ts_open,???????????/*打開設備*/
read: s3c2410_ts_read,?? /*用來從設備中讀取數據*/
release:?s3c2410_ts_release,
???? ?????/*file結構被釋放時,將調用這個操作*/
poll:?s3c2410_ts_poll,?
??? ????????? /*用來查詢讀取或者寫入是否會被阻塞*/
};最后都需要一個清除函數,該函數在模塊被移除前注銷接口,并向系統(tǒng)中返回所有資源
Static void _ _exit s3c2410_ts_exit (void)
{???????????????????????? ……
??? unregister_chrdev(tsMajor, DEVICE_NAME);
??????????? ? ???……??????? };
設測速函數為void mk_int()(void)interrupt()。測量汽車的行駛速度,實際上就是測量汽車速度傳感器產生的矩形脈沖寬度。測得該脈沖的寬度后,然后根據公式(1)得出汽車的行駛速度。
K=(convert/(number*wave_width*co))*(real_speed/display_speed) (1)
其中,number表示速度傳感器轉一圈產生的脈沖數,wave_width表示每個脈沖低電平的寬度,co代表車輛每行駛1km速度傳感器的轉數,real_speed是車輛的標稱速度,用于糾正系統(tǒng)誤差,display-speed是車輛的實測速度,用于糾正系統(tǒng)誤差,convert是車速的轉換系數,該系數與系統(tǒng)的晶體振蕩頻率有關。其他部分相關程序如下:
(1)extern void flash_clear( ) extern void s3c2410_4k_clear( )清空S3C2410內存中和實時時鐘芯片中的所有內容,這些只是在出廠初始化時使用[6]。
(2)extem void accident_time_record( )記錄每次PC機上載和下傳操作的時間。
(3)void accident_deal(void)非法關機處理程序[7]。記錄儀在運行的過程當中,很有可能出現(xiàn)人為的或非人為的斷電現(xiàn)象,在這種情況下,為了保證非法關機不丟失數據,在整個程序運行期間,描述汽車運行狀態(tài)的一些重要的數據都保存在S3C2410中,當記錄儀一上電時,就可以根據這些數據恢復到上次非法關機時刻的狀態(tài)[8]。
?系統(tǒng)通過LCD進行人機交換,其顯示的基本函數如下:(1)void init_lcd( )LCD初始化程序; (2)void write_cmd(unsigned char cmd) 寫指令到指令寄存器,用來控制顯式模式,設置顯示寄存器的地址;(3)void write_hc(unsigned int word)寫8位數據到顯示寄存器,即顯示16×8點陣的半寬ASCII碼字符;(4)void write_word(unsigned int word) 寫16位數據到顯示寄存器;(5)void clear_lcd( )清除LCD顯示屏,并將光標移到起始位置。系統(tǒng)的整體軟件結構如圖5所示。
?
汽車記錄儀是汽車電子化、智能化的一個重要應用。本文通過對汽車記錄儀數據采集系統(tǒng)的研究,從硬件電路設計和軟件分析兩方面對實時時鐘信號、車速采集信號、開關量信號分別進行了討論,將此數據采集系統(tǒng)應用于汽車記錄儀中,具有抗干擾能力強、精度高、實用性好等優(yōu)點。
系統(tǒng)涉及的三個模塊可以分別單獨修改制做。主板的布線簡單,成本較低。如果以后修改ARM電路板導致主板也需要修改的話可以降低整個系統(tǒng)的修改/升級成本。
系統(tǒng)包含一個掉電預備電源,當出現(xiàn)外部干擾導致記錄儀意外掉電時,該電源能夠迅速觸發(fā)中斷,從而保證實時數據不丟失。
系統(tǒng)主機模塊采用高效的32位ARM嵌入式處理器為核心,能夠有效地提高系統(tǒng)實時性。優(yōu)化編寫的代碼對多任務進行了統(tǒng)籌兼顧地合理調度,有效地保證了實時性。此外,處理器豐富的內外部中斷源的使用為復雜程序的靈活轉換提供了方便,減輕了處理器負擔。
?
參考文獻
[1] ?陸文昌.汽車行駛記錄儀的現(xiàn)狀與發(fā)展趨勢[J]. 汽車電器, 2005(5):1-2.
[2] ?唐建湘,陳特放,石英春.基于嵌入式系統(tǒng)汽車行駛記錄儀的研制[J]. 計算機測量與控制, 2007(7):837-839.
[3] ?CHET N C. Design of black box for moving vehicle?warning system. Student Conference on Research and
?Development 2003 Proceedings ,Putrajaya,Malasia. 2003.
[4]?ROLAND R, COTTA S. Accident and event data recording:?a European perspective, Jiurnal of Transportion Law,
?Logistics,and Policy,2004.
[5] ?于明,范書瑞,曾祥燁.ARM9嵌入式系統(tǒng)設計與開發(fā)教程.北京:電子工業(yè)出版社,2006:108-116.
[6] ?Samsung Electronics,User′s Manual S3C2410 Revision?1.2. 2005,3:36-40.
[7] ?SLOSS A N, SYMES D. ARM嵌入式系統(tǒng)開發(fā)——軟件設計與優(yōu)化[M]. 北京:北京航空航天大學出版社,2005.
[8] ?肖兵,劉魁一.汽車技術實訓教學系統(tǒng)的軟件設計[J].微計算機信息,2007(20):231-233.
[9] ?黃艷玲,李立偉.多功能汽車行駛狀態(tài)記錄儀的設計[J].電子技術應用,2006,32(3):102-104.
?