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