歡迎您訪問鄭州興邦電子股份有限公司官方網站!
    阿里巴巴誠信通企業
    全國咨詢熱線:40000-63966
    興邦電子,中國水控機第一品牌

    聯系興邦電子

    全國咨詢熱線:40000-63966

    售后:0371-55132951/55132952

    工廠:河南省 鄭州市 高新區蓮花街電子電器產業園

    一種用于車輛測速的數據采集系統

    文章出處:http://www.xujuanpiju.com 作者:王水波,宋煥生,王國強,郭 亞,鄭 輝   人氣: 發表時間:2011年12月07日

    [文章內容簡介]:車輛超速等交通違規行為的抓拍要求對車速進行精確檢測,傳統線圈檢測器存在測速精度不高等缺點。該文設計一種用于車輛測速的交通數據采集系統,以CPLD為控制核心,通過設計相關的數據采集電路,實現對車輛交通數據的采集。通過CH365接口芯片,將數據實時地傳到計算機中進行分析處理,并輸出不同信號,滿足不同檢測需求。實驗表明,該系統設計合理,能較好地用于車輛測速等交通檢測系統中。

        1 概述 

        車速是交通信息中一個重要參數,車速檢測對城市交通控制與管理有著重要的作用和意義[1]。通常,這些信息的獲取是靠各種檢測設備來完成的,現有的交通檢測設備主要有環形線圈檢測器、視頻檢測器和微波檢測器,其中,環形線圈檢測器[1-2]由于其性能穩定可靠、靈敏度高、檢測數據精確和成本低等優點而被廣泛使用。 

        環形線圈檢測器是一種基于電磁感應現象的車輛檢測設備,利用車輛經過檢測區域時,引起線圈電感發生變化的原理來工作。車輛檢測器檢測出這個電感變化量,就能檢測出車輛的通過或存在情況。檢測這個電感的變化量有2種方式:(1)利用相位鎖存器和相位比較器的技術來檢測相位變化[1-4];(2)利用耦合振蕩電路對振蕩頻率進行檢測[5-6]。 

        傳統的線圈檢測器主要用于檢測車輛的存在或通過情況,在速度的檢測上,存在很大缺陷:(1)由于環形線圈的工作頻率與靈敏度、線圈匝數和線圈埋設深度有關,經過處理后的二值化結果會有較大波動,很難精確檢測車速;(2)傳統的線圈檢測器是以獨立的單個線圈來工作的,當有車輛經過不同線圈邊緣時,會發生“誤觸發”,也會導致速度檢測的不準確性。
     
        本文針對現有線圈檢測器的設計方式和檢測功能進行研究,并在第2種檢測方式的基礎上,設計一種可用于車輛測速的交通數據采集系統。該系統采用可編程邏輯器件,在短時間內,同時完成多通道數據采集功能的設計,也能根據需要,隨時更改設計,使系統占有資源少,開發周期短,設計方便。該系統采集的數據可通過CH365接口芯片和PCI總線實時地傳輸到計算機中,可以為各種檢測提供需要的數據信息,尤其適合同時實現多通道數據的采集,提高了數據的采集效率和精度。 

        2 系統總體設計 

        利用可編程器件,簡化系統的硬件設計,使系統具有小型化和簡易化的特點。本系統采用Altera公司MAX7000系列芯片(EPM7128STC-100-10)。其片上資源很豐富,可以滿足現階段的設計需要,系統總體設計框圖如圖1所示。

        為了調節振蕩頻率,在多個通道同時工作時,避免線圈間的頻率干擾,在耦合振蕩電路中,加入電子開關選擇電路,這樣,在實現多通道數據采集時,可以保證檢測精度。另外,它還具有靈敏度的調節功能。 

        振蕩電路引起的頻率變化是個模擬信號,檢測頻率的變化是通過設計合適的計數電路來完成的,信號整形電路是用來完成從模擬信號到數字信號的轉換。有源晶振電路輸出一個高頻(30 MHz)時鐘脈沖信號,作為計數電路的基準信號。電源模塊電路提供+12 V和+5 V輸出電壓,為耦合振蕩電路和CPLD的正常工作提供所需電壓。JTAG接口電路為編程下載和隨時更改設計,提供一個快速途徑。 

        為使系統正常工作,該系統還配有復位電路、LED輸出顯示電路等外圍電路。整個數據采集電路的設計都集中在CPLD芯片中完成。 

        2.1 耦合振蕩電路 

        機動車經過埋有線圈的路面時,會產生耦合振蕩電路頻率的變化,該變化是由地埋線圈構成的耦合振蕩電路引起的。系統中的耦合振蕩電路如圖2所示。

        可以看出,這是一個電容反饋3點式振蕩電路[6]。電源+12 V通過高頻扼流圈LC加到三極管BJT上,扼流圈LC的功能是避免電源對振蕩回路的高頻信號造成短路。 

        2.2 CPLD的硬件設計CPLD完成對數據的采集和提供與CH365進行數據傳輸的接口信號,將待測信號在CPLD中進行分頻處理,對已知的高頻信號進行計數。CPLD的硬件設計采用原理圖和AHDL硬件描述語言相結合的方式,頂層設計采用原理圖輸入方式,圖3給出了該部分頂層設計電路圖。

        在圖3中,LOOP1和LOOP2是2路經過信號整形電路后的數字信號;CLK30M是有源晶振電路輸出的高頻基準信號,輸出頻率為30 MHz;模塊LOOP_CNT完成分頻和計數,其原理設計是采用AHDL來實現的,其語言描述程序為
        SUBDESIGN LOOP_CNT
        (SIG: INPUT; FROM LOOP DETECTOR
        CLK: INPUT; 30M CLOCK
        /CLR: INPUT; CLEAR INT_REQ AND END_REG[]
        RESULT[15..0]: OUTPUT; COUNT RESULT)
        VARIABLE
        …
        BEGIN
        …
        END;
        模塊BUSMUX通過地址總線,對線圈通道采集到的數據進行選擇,通過不同的地址來讀取不同線圈通道中的數據,

        實現數據的實時傳輸。模塊CPU_INTERFACE將采集到的數據通過PCI接口芯片CH365和PCI總線傳入計算機中。編寫相應的軟件程序,能實時讀取線圈通道中的數據,對采集到的數據進行分析和處理,從而檢測出車輛的存在或通過情況。 

        3 硬件設計仿真 

        借助AHDL硬件描述語言和MAX PLUS II開發工具,可以得到如圖4所示的仿真結果。

        當讀選通信號(RD)有效(低電平)時,可以通過不同的地址讀出檢測到的計數值,每個線圈通道所檢測到的計數結果都是2 Byte。圖中,A和D分別是16 bit的地址總線和8 bit的數據總線;H000和H0001對應一個線圈通道;H0002和H0003對應另一個線圈通道。當計算機讀完數據后,可以在寫選通信號(WR)有效(低電平)時,在某一地址上寫入數據,并清除存儲器中已讀數據,為下一次計算機進行讀數據操作做準備。 

        4 數據采集系統的軟件實現 

        軟件功能的實現是在Visual C++6.0集成開發環境上,采用C語言進行編程的,可運行在Windows XP操作系統上。
    數據采集的軟件是通過對PCI接口芯片CH365編寫相應的程序來實現的,CH365有豐富的地址、數據總線以及讀寫選通信號,為實現數據與計算機通信提供一個可靠接口。其軟件實現過程如下:
        (1)裝載CH365設備和獲取相關的參數信息,如果CH365動態鏈接庫裝載成功,就能打開設備,獲取IO基地址,讀取數據。如果打開CH365設備失敗,返回重新裝載。
        if(LoadLibrary("CH365DLL.DLL")==NULL) return;
        //裝載CH365動態鏈接庫
        if(CH365mOpenDevice(Device_Number,TRUE,TRUE)== INVALID_HANDLE_VALUE ) return;
        if(CH365mGetIoBaseAddr(Device_Number,&mIoBase)== FALSE) printf("ERROR");
        if(CH365mSetA15_A8(Device_Number,data)==FALSE) printf("ERROR"); 

        (2)讀取相應端口中的數據。CH365設備打開成功后,設置不同的端口地址,在CH365讀選通信號(RD)有效(低電平)時,讀取對應端口中的數據,下面是2通道端口數據的讀取。
        CH365mReadIoWord(Device_Number,&mIoBase->mCh365IoPort [0x00], &mWord);
        CH365mReadIoWord(Device_Number,&mIoBase->mCh365IoPort [0x02], &mWord2); 

        (3)將端口地址中的數據清除,為下次讀取數據做準備。一次數據讀取完后,在CH365寫選通信號(WR)有效(低電平)時,在相應端口地址中寫入數據,以清除計算機已讀完的數據,為計算機下  一次讀數據做準備,下面是實現該過程的程序語句:
        if(CH365mSetA15_A8(Device_Number,data)==FALSE) printf("ERROR");
        if(CH365mWriteIoByte(Device_Number,&mIoBase->mCh365Io Port[0x00], 0x00)==FALSE) printf("ERROR");
        //在端口0x00中寫入數據
        if(CH365mWriteIoByte(Device_Number,&mIoBase->mCh365Io Port[0x02], 0x00)==FALSE) printf("ERROR");
        //在端口0x02中寫入數據 

        5 實驗結果分析 

        利用該系統和數據采集軟件,在某路面上進行實車采集,其結果如圖5、圖6所示。

        圖5顯示了沒有車輛經過時的采集情況。當無車經過時,其振蕩頻率穩定,采集的數據顯示為直線,出現個別數值較大的數據,屬于正常情況。圖中還顯示了當前采集數據對應的實際數值,根據測得的頻率,該數值與實際計算結果一致。圖6是其中某一通道有車輛經過時的情況。可以看出,該通道在有車輛通過時,其數據會出現一個小波動。這是因為有車經過時,其振蕩頻率要增大,計數值必然會減小,這也與實際情形吻合。
     
        6 結束語 

        針對現有線圈檢測器不能很好地應用于車速檢測,設計一種用于車速檢測的數據采集系統。該系統選用CPLD作為核心器件,精簡了系統的結構設計。系統的功能設計不僅利用模擬仿真,證實其正確性,而且在實驗中,驗證了系統的可靠性,該系統可應用于車輛測速等交通檢測中。

    本文關鍵詞:車輛測速,數據采集,采集系統,芯片
    回到頂部