《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 汽車記錄儀數(shù)據(jù)采集系統(tǒng)的設計

汽車記錄儀數(shù)據(jù)采集系統(tǒng)的設計

2009-05-07
作者:葉小嶺, 嚴海東

  摘? 要: 從硬軟件的角度研究了基于S3C2410 的汽車記錄儀采集系統(tǒng)" title="數(shù)據(jù)采集系統(tǒng)">數(shù)據(jù)采集系統(tǒng)的設計,對采集系統(tǒng)中三大主要模塊即:實時時鐘信號模塊,、車速采集模塊,、開關量模塊分別進行了研討,,經(jīng)過實驗證明,,將此采集系統(tǒng)應用于汽車記錄儀中,,該采集系統(tǒng)采集精度高,抗干擾性強,性能可靠,價格低廉,具有很好的應用前景和較高的通用性與實用性,。
  關鍵詞: 汽車記錄儀;? 數(shù)據(jù)采集; S3C2410

?

  隨著汽車產(chǎn)業(yè)的迅猛發(fā)展,,汽車記錄儀的需求也成倍增長,。汽車記錄儀又稱為“汽車黑匣子”,,能完整、準確地記錄汽車行駛狀態(tài)下的各種信息[1],,能將汽車的行駛軌跡,、制動性能,、開關量信號完整記錄,并能根據(jù)需要隨時調(diào)出數(shù)據(jù)進行分析或者通過專用軟件在電腦上再現(xiàn),。它被認為是確保汽車安全的有效手段,,可以迅速獲取有關行車數(shù)據(jù),改善營運狀況,成為車輛交通管理必不可少的設備,。數(shù)據(jù)采集系統(tǒng)作為汽車記錄儀的重要組成部分直接關系到記錄儀的各項性能,,對記錄儀整體的功能影響甚大。
1 硬件電路結構
1.1 實時時鐘模塊

  由于系統(tǒng)產(chǎn)生的各種數(shù)據(jù)和記錄都與時間密切相關,,對時鐘的實時性要求很高,,同時記錄儀本身存在著斷電的危險,為了準確記錄車輛行駛狀態(tài),,并對異常情況進行記錄,,因此選擇實時時鐘芯片來提供日期和時間。實時時鐘芯片是一種不僅能支持每天時間更新,,而且能夠進行日期更新的永久時鐘電路[2],。本文采用DALLAS公司的DS1302芯片,它性能高,、功耗低,,時鐘校準也較為容易,通過3V鋰電池和車內(nèi)蓄電池兩種方式供電,,可以保證在蓄電池出現(xiàn)故障的情況下,,該時鐘芯片仍然能夠正常工作,從而使記錄儀的數(shù)據(jù)同樣準確,、可靠,。其內(nèi)部自帶31B的靜態(tài)RAM,存儲容量滿足應用的需要,。數(shù)據(jù)在CLK的上升沿串行輸入,在進行單字節(jié)或多字節(jié)傳送時,,開始的第一個字節(jié)為命令字節(jié),用于指定31個字節(jié)中哪個將被訪問,。當進行任何數(shù)據(jù)傳送時,,其最高有效位MSB(位7)必須為邏輯1,如果為零,,則禁止寫DS1302,。其時鐘電路如圖1所示,Vcc1與3V鋰電池相連,Vcc2與蓄電池相連,,5,、6、7引腳分別接S3C2410的時鐘端,、數(shù)據(jù)端和復位端,通過主控制器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 開關量采集模塊
  開關量信號包括方向燈、倒燈,、車門,、遠光燈、近光燈,、剎車,、鳴號、車輛啟動等這類行駛過程中很重要的數(shù)字開關量,,將它們采集并保存下來對事后分析有很大幫助[4],。可以通過ARM芯片的I/O端口對這些信號進行輸入,。但這些信號是高壓信號,,直接接到ARM板上可能會損壞CPU,這里采用光耦芯片TLP521對它們進行隔離,,避免CPU受損,。在S3C2410中,可以通過GPnCON(n是I/O口的組號)寄存器對GPIO引腳的使用功能進行設置,。系統(tǒng)每隔0.2s對開關量信號采集一次,,采集來的開關量可以從GPnDAT寄存器中讀取。芯片的接口方式為4腳SPI,,能夠大大減少處理器需要提供的引腳數(shù)量[5],。當任一開關量輸入信號狀態(tài)發(fā)生變化時,,通過中斷的方式通知主處理器,從而減輕了處理器頻繁查詢的負擔,。圖3是一路開關信號采集電路,其他開關量電路與此相同,。
2 軟件的設計
? 記錄儀數(shù)據(jù)采集系統(tǒng)軟件要求上電復位后,首先進行自檢;然后顯示初始界面(包括當前時間,、行駛速度等),;最后根據(jù)速度傳感器傳過來的脈沖個數(shù)以及持續(xù)時間判斷汽車是否啟動,若未啟動則返回,若已啟動則進入各數(shù)據(jù)量的檢測。記錄儀軟件設計包括顯示,、速度采集,、實時時鐘、開關量采集,、數(shù)據(jù)傳送等, 采集系統(tǒng)軟件流程圖如圖4所示,。

??? 汽車記錄儀的初始化函數(shù)主要工作是為設備分配設備編號,設備的存取是通過一組固定的入口點來進行的,這套接口函數(shù)是由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,??     /*用來從設備中讀取數(shù)據(jù)*/
  release:?s3c2410_ts_release,
????              ?????/*file結構被釋放時,,將調(diào)用這個操作*/
  poll:?s3c2410_ts_poll,?
???             ????????? /*用來查詢讀取或者寫入是否會被阻塞*/
  };最后都需要一個清除函數(shù),該函數(shù)在模塊被移除前注銷接口,,并向系統(tǒng)中返回所有資源
  Static void _ _exit s3c2410_ts_exit (void)
  {???????????????????????? ……
???    unregister_chrdev(tsMajor, DEVICE_NAME);
???????????       ? ???……??????? },;
  設測速函數(shù)為void mk_int()(void)interrupt()。測量汽車的行駛速度,,實際上就是測量汽車速度傳感器產(chǎn)生的矩形脈沖寬度,。測得該脈沖的寬度后,然后根據(jù)公式(1)得出汽車的行駛速度,。
  K=(convert/(number*wave_width*co))*(real_speed/display_speed) (1)
  其中,,number表示速度傳感器轉一圈產(chǎn)生的脈沖數(shù),wave_width表示每個脈沖低電平的寬度,co代表車輛每行駛1km速度傳感器的轉數(shù),real_speed是車輛的標稱速度,,用于糾正系統(tǒng)誤差,display-speed是車輛的實測速度,用于糾正系統(tǒng)誤差,convert是車速的轉換系數(shù),,該系數(shù)與系統(tǒng)的晶體振蕩頻率有關。其他部分相關程序如下:
  (1)extern void flash_clear( ) extern void s3c2410_4k_clear( )清空S3C2410內(nèi)存中和實時時鐘芯片中的所有內(nèi)容,這些只是在出廠初始化時使用[6],。
  (2)extem void accident_time_record( )記錄每次PC機上載和下傳操作的時間,。
  (3)void accident_deal(void)非法關機處理程序[7]。記錄儀在運行的過程當中,,很有可能出現(xiàn)人為的或非人為的斷電現(xiàn)象,,在這種情況下,為了保證非法關機不丟失數(shù)據(jù),,在整個程序運行期間,,描述汽車運行狀態(tài)的一些重要的數(shù)據(jù)都保存在S3C2410中,當記錄儀一上電時,,就可以根據(jù)這些數(shù)據(jù)恢復到上次非法關機時刻的狀態(tài)[8],。
?系統(tǒng)通過LCD進行人機交換,,其顯示的基本函數(shù)如下:(1)void init_lcd( )LCD初始化程序; (2)void write_cmd(unsigned char cmd) 寫指令到指令寄存器,用來控制顯式模式,設置顯示寄存器的地址;(3)void write_hc(unsigned int word)寫8位數(shù)據(jù)到顯示寄存器,即顯示16×8點陣的半寬ASCII碼字符;(4)void write_word(unsigned int word) 寫16位數(shù)據(jù)到顯示寄存器;(5)void clear_lcd( )清除LCD顯示屏,并將光標移到起始位置。系統(tǒng)的整體軟件結構如圖5所示,。

?


  汽車記錄儀是汽車電子化,、智能化的一個重要應用。本文通過對汽車記錄儀數(shù)據(jù)采集系統(tǒng)的研究,,從硬件電路設計和軟件分析兩方面對實時時鐘信號、車速采集信號,、開關量信號分別進行了討論,,將此數(shù)據(jù)采集系統(tǒng)應用于汽車記錄儀中,具有抗干擾能力強,、精度高,、實用性好等優(yōu)點。
  系統(tǒng)涉及的三個模塊可以分別單獨修改制做,。主板的布線簡單,,成本較低。如果以后修改ARM電路板導致主板也需要修改的話可以降低整個系統(tǒng)的修改/升級成本,。
  系統(tǒng)包含一個掉電預備電源,,當出現(xiàn)外部干擾導致記錄儀意外掉電時,該電源能夠迅速觸發(fā)中斷,,從而保證實時數(shù)據(jù)不丟失,。
  系統(tǒng)主機模塊采用高效的32位ARM嵌入式處理器為核心,能夠有效地提高系統(tǒng)實時性,。優(yōu)化編寫的代碼對多任務進行了統(tǒng)籌兼顧地合理調(diào)度,,有效地保證了實時性。此外,,處理器豐富的內(nèi)外部中斷源的使用為復雜程序的靈活轉換提供了方便,,減輕了處理器負擔。

?

參考文獻
[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.

?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉載的所有的文章,、圖片,、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者,。如涉及作品內(nèi)容,、版權和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。