<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 基于LPC2104型CPU的汽車行使記錄儀

          基于LPC2104型CPU的汽車行使記錄儀

          ——
          作者:廖文良 褚藝賦 陳文薌 時間:2007-10-26 來源:國外電子元器件 收藏

            摘要:介紹基于型CPU的。該記錄儀采用大容量作為存儲載體,利用定時器中斷方式來實現秒間隔的數據采集與存儲,用利串行口中斷方式實現與微機的數據通信。

              關鍵詞:;

          引言

            隨著汽車擁有量的增加,發(fā)生交通事故的概率也隨之增加,發(fā)生事故后用傳統(tǒng)的方法進行分析、判斷、維修有一定的困難。這樣,就給人們提出了一個問題,怎樣及時、準備地分析故障的存在,客觀地分析事故的責任。由此聯系到飛機上裝的“黑匣子”,一旦飛機失事,“黑匣子”里的資料是判斷失事原因的重要依據。因為它的造價高、技術復雜,在普通汽車上使用有一定的難。本文介紹一種價格低,功能較齊全且能擴展的。

            本記錄儀采用帶ARM7內核的型CPU作為主控機,大容量作為存儲載體,帶有精確的時鐘電路,利用高精度A/D轉換器采集汽車傳感器轉換的模擬量,并直接記錄汽車信號燈等的各種開關量。同時利用串口實現與微機的數據通信,把汽車行駛記錄低度的信息以二進制文件的形式存儲到硬盤上。

          1 系統(tǒng)的硬件設計

            系統(tǒng)的總體框架如圖1所示。帶ARM7內核的LPC2104型CPU是汽車行駛記錄儀的核心,整個系統(tǒng)由信息采集模塊、信息處理及存儲模塊和串口通信模塊組成。

            LPC2104是Philips公司生產的一款支持實時仿真和跟蹤的ARM7TDMI-S CPU,內部集成有與片內存儲器控制器接口的ARM7局部總線、與中斷控制器接口的AMBA高性能總線(AHB)和連接片內外設功能的VLSI外設總線(VPB,ARM,AMBA總線的兼容超大規(guī)模集成電路),并嵌入了128KB高速Flash存儲器。LPC2104將ARM7TDMI-S配置為小端(Iittle-endian)字節(jié)順序,具有封裝小、功耗低、多個32位定時器、多種總線接口及多達9個外部中斷等優(yōu)點,非常適合作為汽車行駛記錄儀的主控CPU。同時,LPC2104還具有128位寬度的存儲器接口和獨特的加速結構,從而使得32位代碼能夠在最大時鐘頻率下運行。

          2 信息采集模塊設計

            汽車行駛記錄儀要求實時記錄車輛行駛的各種狀態(tài)信息,因此本系統(tǒng)將信息采集模塊分為開關量數據采集模塊、模擬量數據采集模塊、時鐘數據采集模塊。

          2.1 開關量數據采集模塊

            該模塊利用74LS165型并行輸入8位移位寄存器擴展16位并行輸入口,其硬件電路如圖2所示。其中利用LPC2104的3根I/O口線擴展為16位的輸入口線,圖中由2片74LS165串接擴展16位的輸入線,CLK為時鐘脈沖輸入端,D0-D7為并行輸入端,前級的數據輸出端QH與后級的信號輸入端SIN相連,S/L為低電平時,允許并行置入數據,S/L為高電平時允許串行移位。這樣左右方向燈、前車燈、開門信號、剎車燈信號等16路開關量經過光電耦合器隔離后并行輸入到2片74LS165中,再經74LS165轉換后,串行輸出給LPC2104進行處理。

          2.2 模擬量數據采集模塊

            在進行模擬數據采集時,水溫、水位等8路傳感器采集的信號先經過模擬信號調理環(huán)節(jié),將其整定在A/D轉換器參考電壓Vref決定的滿量程輸入電壓信號以內,然后經過A/D轉換器進行A/D轉換。該模塊采用美國德州儀器公司推出的TLC0838型8路8位逐次逼近型模、數轉換器,采樣頻率為100kHz,與外部通信采用SPI總線接口。LPC2104通過其內嵌的SPI總線接口與TLC0838進行通信,其硬件電路如圖3所示。其中SCK為SPI主機輸入或從機輸入的時鐘,MOSI為SPI主機到從機的數據傳輸,MISO為SPI從機到主機的數據傳輸,SSEL為SPI從機選擇。

            汽車速度的測量是通過計數速度傳感器產生的脈沖信號實現的。本系統(tǒng)利用AT89C2051型單片機來計數速度脈沖信號。該單片機可設定一個守量器來計數速度脈沖信號,并將其轉換成汽車的實際量程。同時根據行程和時間可計算汽車的速度,并通過串口UART0將數據傳送給LPC2104。

          2.3 時鐘數據采集模塊

            為了記錄行車的時間,使行駛記錄儀能夠實時記錄汽車狀態(tài),采用專門的時鐘模塊提供時間信號,本系統(tǒng)選用DS12887時鐘電路。DS12887是跨越2000年的時鐘電路,采用4位數表示年度的日歷系統(tǒng)。電路的晶體振蕩器、振蕩電路、充電電路和可充電鋰電池等一起封裝在芯片的止方,組成一個加厚的集成電路模塊。DS12887能夠自動存取并更新當前的時間,LPC2104可通過讀DS12887的內部時標寄存器得到當前的時間和日歷,也可通過選擇二進 進碼或BCD碼初始化電路的10個時標寄存器。

          3 信息處理及存儲模塊設計

            由于Flash的存儲結構適宜是固態(tài)存儲,EPROM的存儲結構適宜于動態(tài)存儲,因此,本系統(tǒng)根據實際需要,有用Flash固態(tài)存儲和EPROM動態(tài)存儲相結合的方式進行數據存儲和記憶,即用Flash固態(tài)存儲采集的汽車狀態(tài)數據,用EPROM動態(tài)存儲Flash最新存儲的扇區(qū)號和存儲地址。閃速存儲器選用美信公司生產的MX29F800BTC型,EPROM選用Microchip公司的24C32型,同時利用LPC2104內嵌的I2C總線接口與24C32進行通信。

            本系統(tǒng)工作時,首先由LPC2104主控CPU從24C32中讀取Flash最近存儲的扇區(qū)號和存儲地址,然后以此地址為參照,以這個地址的一個地址值為Flash的起點地址,以這個地址的下一個地址值為Flash的起點地址,按順序進行存儲。Flash需要存儲的數據有16路開關量信息、8路模擬量信息有及時鐘信息。本系統(tǒng)利用二字節(jié)(共16位)存儲16路開關量信息,利用8個字節(jié)的存儲空間存儲8路模擬量信息。為了節(jié)省存儲空間,系統(tǒng)并非每次存儲采集數據時都存儲時間標志。由于數據采集以固定的秒間隔來進行,因此,系統(tǒng)只是在剛開始運行時和每個扇區(qū)的起始位置采集并存儲時鐘信號作為時間標記,而后面數據的采集時間則以這些時間標記為參照。

            系統(tǒng)存儲的軟件流程如圖4所示。在本系統(tǒng)重裝上電運行時,需要記錄開始采集的時間信息。由于系統(tǒng)電源是由汽車電源提供的,所以開始采集的時間也就是汽車啟動的時間,以此作為汽車開始行駛的時間標記。在程序運行中,由主程序設定一個汽車啟動標志,在第一次寫數據之前汽車啟動標志有效,然后首先判斷當前存儲地址是否有某個扇區(qū)的首地址,如果是,則根據寫扇區(qū)的要求在第七個字節(jié)開始處存儲當前的時鐘信號,否則,在當前存儲地址處開始用10個字節(jié)存儲當前的時鐘信號,記錄汽車開始運行的起始時間,然后清除汽車啟動標志。扇區(qū)開始地址處記錄的時間信息是否是汽車開始運行的起始時間,可根據前一個扇區(qū)記錄的時間信息進行判斷。若前后兩個扇區(qū)記錄的數據是連續(xù)的,則后一個扇區(qū)頭記錄的時間信息不是表示汽車開始運行的起始時間,否則情況相反。

          4 串口通信模塊設計

            計算機可以通過串口隨時讀取行駛記錄儀存儲的數據。行駛記錄儀與計算機之間的串口通信遵循RS232協(xié)議。串行通信時,LPC2104依次將Flash中存儲的數據讀出并經UART0串口發(fā)出,然后經過MAX232電平轉換器送給計算機,再由計算機通過串口接收該數據。

          5 結束語

          汽車行駛記錄儀利用微機通過串口接收汽車行駛的數據,并對數據進行分析處理;利用Visual C++ 6.0作為開發(fā)工具,編寫微機數據分析處理程序,模擬顯示汽車運行時的狀態(tài);利用圖形顯示各分量的波形,如前向燈開關情況、左右方向燈開關情況、開門信息、剎車信號、水溫變化情況(范圍為0℃~100℃)等。將該行駛記錄儀安裝在汽車上進行測試,結果也較理想,能夠滿足設計要求。其測試結果如圖5所示。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();