1 引言 隨著信息化、智能化、網絡化的發展,嵌入式系統技術獲得廣闊的發展空間,工業控制領域也進行著一場巨大的變革,以32位高端處理器為平臺的實時嵌入式軟硬件技術將應用在工業控制的各個角落。嵌入控制器因其體積小、可靠性高、功能強、靈活方便等許多優點,其應用已深入到工業、農業、教育、國防、科研以及日常生活等各個領域,對各行各業的技術改造、產品更新換代、加速自動化化 進程、提高生產率等方面起到了極其重要的推動作用。 現今,國內外雖有部分車輛安裝了超聲波倒車防撞報警裝置、基于DSP的智能車輛防撞系統、圖像處理技術的汽車追尾預警系統等,但是用于像裝載機這種廣泛用于城建、礦山、公路等工程的工程機械的障礙物監測預警系統卻沒有發現。所以建立一個對障礙物進行監測預警的系統,提前為駕駛員提供危險信號,讓駕駛員能及時采用有效措施是減少事故的有效方法[2~5]。 2 系統硬件設計 本系統以裝載機為研究對象,以實現信號采集、調理、傳送、顯示和預警為目的。把系統劃分為障礙物距離信號采集模塊、LCD顯示模塊、聲光報警模塊和處理器模塊這四個部分。其中以處理器為核心,通過總線和接口電路把信號輸入和輸出相連。系統做成框圖如圖1所示。 圖1 系統組成框圖 該Mini ARM模塊集成有C2290微控制器最小系統,USB主機控制器、10M以太網通信控制器以及NAND FLASH 電子盤,其硬件資源主要有:2M NOR FLASH、16K SRAM、2M/8M Bytes PSRAM、10M 以太網接口、2 路USB-Host 控制器、集成電子盤、2 路CAN控制器以及RTC等。 LCD顯示模塊使用內置T6963C的液晶顯示模塊,該模塊上已經實現了T6963C與行、列驅動器及顯示緩沖區RAM 的接口。 2.1 障礙物距離檢測電路的設計 對于障礙物的檢測方法有超聲波測距法、圖像處理法、激光測距法等。但是由于超聲波傳感器具有信息處理簡單、價格低廉、制作方便等優點。本系統采用超聲波測距法來對障礙物的距離進行檢測。 (1)超聲波測距的原理 超聲波發射器向某一方向發射超聲波,在發射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為c,根據計時器記錄的時間t,就可以計算出發射點距障礙物的距離s,即s=ct/2 (1)。 (2)超聲波測距電路 在本系統中超聲波測距電路是由MICROCHIP的PIC16C57設計而成的,選用的超聲波傳感器是T/R40-16壓電陶瓷傳感器。在工作中,主控器PIC16C57發出信號使發射端的超聲波換能器發出加以電壓激勵,其受激勵后以脈沖的形式發射超聲波,當超聲波接收器接收到回波信號時,傳回到主控器中,從脈沖信號開始發射時主控器中的定時器便開始計時,接收到回波信號時停止計時。所側出的時間間隔再乘以聲速就得到了兩倍的距離值。從而計算出障礙物到發射點的距離。其電路圖如圖2所示。 圖2 超聲波測距電路圖 距離值通過PIC16C57的10腳進行串行輸出,經MAX232芯片后與ARM的串口相連。芯片MAX232是為RS232標準串口設計的接口電路,它完成TTL電平和RS232電平的轉換。 2.2 聲光報警電路設計 本系統要求根據影響裝載機穩定性的障礙物距離的臨界值對危險狀況進行三級報警。當處于低危險狀況時,只有指示燈綠燈被點亮,提醒駕駛者注意;當危險級別增高時,指示燈黃燈點亮,同時伴隨有舒緩的蜂鳴聲,提醒駕駛者采取措施;當達到最高危險級別時,指示燈紅燈被點亮,同時蜂鳴聲由舒緩轉為急促,提醒駕駛者趕緊制動。 設計中,分別采用了LPC2290的P2.20(GPIOA4)驅動綠色LED,P2.21(GPIOA5)驅動黃色LED, P2.22(GPIOA6)驅動紅色LED,P2.23(GPIOA7)驅動蜂鳴器。所設計的報警電路如圖3所示。 圖3 報警電路圖 3 系統軟件設計 常用的嵌入式操作系統有VxWorks、Windows CE、嵌入式Linux和μC/OS-Ⅱ等,由于μC/OS-Ⅱ嵌入式系統具有公開源代碼,具有實時多任務內核來進行多任務調度等優點,所以本系統選用μC/OS-Ⅱ嵌入式操作系統。 由于采用模塊化編程,所以μC/OS-II下系統任務的劃分也是基于不同的功能模塊,每一個模塊被分解成一個或者多個任務,每個任務被安排一個優先級。這樣,一旦這些任務被建立起來,它們之間的調度情況就完全由μC/OS-II來完成。結合本系統的設計需求,程序中創建串口通信任務、報警任務、LCD顯示任務。其軟件流程框圖如圖4所示。 圖4 軟件流程框圖 上電后,首先進行硬件的初始化,然后對μC/OS-II操作系統進行初始化,建立任務,進行多任務調度。μC /OS - II的任務調度是搶占式的,所以在設置任務優先級的時候應該盡量考慮任務對實時性的要求。即使兩個任務的重要性是相同的,它們也必須有優先級上的差異,這也就意味著高優先級的任務在處理完成后必須進入等待或掛起狀態,否則低優先級的任務永遠也不可能執行。本系統中設置串口通信任務的優先級高于液晶顯示任務,液晶顯示任務的優先級又高于報警任務。 1.串口通信任務完成超聲波測距部分與ARM處理器之間的數據傳輸。串口通信部分主要包括兩部分內容:用戶接口函數和任務函數。串口共有5個用戶接口函數,分別為deopen()、dclose()、dread()、dwrite()和diocontrol()。 超聲波測距裝置和LPC2290進行通信的部分程序代碼如下: diocontrol(Uart0_Handles,UART0_SET_MODE, (void *)&Mode0); // 設置UART 模式 diocontrol(Uart0_Handles,UART0_SET_TIMEROUT,(void *)5); // 設置接收超時因子, 參數 =0 則關閉超時 diocontrol(Uart0_Handles, UART0_CLR_FIFO, (void *)0); // 清空接收軟FIFO while (1) {Rece_Count=dread(Uart0_Handles, UART_Rece _Buff,1); //讀取超聲波發送過來的第一個起始字節,放入緩沖區 if((Rece_Count>0)&&(UART_Rece_Buff[0]== ’@’)) //如果讀取成功且第一個字節為‘@’ {dread(Uart0_Handles,&UART_Rece_Buff,3); //接收后三位字節,分別為百位數、十位數、個位數 for(i=1;i<4;i++) UART_Rece_Buff[ i]=UART_Rece_Buff[ i]+48; //將十六進制數轉換為ASCII碼值 for(i=0;i<3;i++) sbuff[ i]=UART_Rece_Buff[i+1]; //接收的數據緩存到數組中,供LCD顯示部分調用 } } 2.液晶顯示任務主要是把ARM處理器中超聲波傳過來的數據顯示到液晶屏上,以方便駕駛員能實時看到障礙物的距離值。 顯示文字的部分程序代碼如下: { uint32 addr; uint8 i; for (i=0;i<24;i++) /* 找出目標地址 */ { addr = (y+i)*(GUI_LCM_XMAX>>3) + (x>>3); LCD_WriteTCommand3(LCD_ADR_POS, addr&0xFF, addr>>8); // 置地址指針 /* 輸出數據 */ LCD_WriteTCommand2(LCD_INC_WR, *Buff); Buff++; LCD_WriteTCommand2(LCD_INC_WR, *Buff); Buff++; LCD_WriteTCommand2(LCD_INC_WR,*Buff); Buff++; LCD_WriteTCommand2(LCD_NOC_WR,*Buff); Buff++; } LCD_WriteTCommand3(LCD_ADR_POS, 0x00, 0x00); // 重置地址指針 } 3.報警任務主要是通過ARM處理器把障礙物的距離值與不同報警條件下的臨界值進行比較,并完成相應的報警顯示。 4 調試及結果 系統調試用到了ADS集成開發環境及EasyJTAG-H仿真器。當把程序編寫好并把EasyJTAG-H仿真器的JTAG接口與MiniARM產品相連后,便可用調試軟件把程序下載到ARM板上,進行試驗。 超聲波每檢測一次串口輸出一組數據,數據傳輸的波特率為9600,包括一個起始位和三位數據位。結果表明:微處理器對不符合所設定格式的數據幀沒有響應,不接收所發送過來的數據,只對滿足要求的數據才進行相應的處理。 超聲波檢測的數據經調試結果表明,能及時的在LCD液晶顯示屏上準確的顯示出來,通訊穩定性高。同時對各種危險情況能準確的顯示其相應的報警現象。 本系統的精度分析,我們把超聲波傳感器的測量值與實際值進行比較繪制了如下表1。 表1 障礙物距離測量值與實際值對照表 當障礙物距離大于10m時,發現超聲波傳感器測量數據發生嚴重失真,經分析和實驗可得本系統對障礙物距離檢測的最大值為9.99m,同時由表1數據經分析計算可知測量誤差≤0.01m。 5 結論 所設計的對裝載機障礙物距離的監測預警系統,是以Mini ARM作為處理器針對裝載機的工作場地及需要監測的距離信號來考慮的,通過試驗驗證,該系統已完成了所需的功能要求,最大測量值為9.99m,誤差≤0.01m。安裝非常方便,便于使用。但該系統還有一個不足,即用超聲波傳感器檢測車輛前方路面信息時,如果是凸起的障礙物能有效的檢測到,但當前方為凹坑時便檢測不出來,所以有待于進一步研究。 |