余昕 王梓璇 楊詩潔 陸瑞敏 徐思琪
西南石油大學電氣信息學院
前言:智能化作為現代科技進步的新興產物,必定是大勢所趨。智能避障小車的出現為家用掃地機器人、自動運輸機器人和自主勘探機器人等智能產品的設計和推廣打下了堅實的基礎。同時,對于我國的商業,軍事,航天,運輸,石油,水利等多種領域的快速發展也起到推波助瀾的作用。隨著我國工業、農業、太空探索等領域的不斷發展,必然會驅動產生更多的實用型智能車,因此,這方面的研究存在巨大潛力。針對當前大多數智能小車以單一的超聲波傳感器進行檢測及避障的不準確性,本文介紹了一種基于C51的智能避障系統,利用STC89C51單片機作為核心模塊,以keil軟件為開發環境,采用超聲波測距和紅外避障等多傳感器信息融合的采集系統,通過對數據的算法優化,提升小車對環境的感測精度,有效提高了小車的避障成功率。
系統總體結構如圖1所示。該系統由以下幾部分組成:小車平臺(包含四個電機)、STC89C51單片機、信息采集模塊(含超聲波測距傳感器HC-SR04和紅外避障傳感器)、電機驅動模塊(ULN2003)、電源模塊(5V直流電源)、顯示模塊(LCD1602)等。因為車頭是信息采集的主要部位,要盡量滿足信息采集的全面性,而且必須具備測距精度高,時效快的特點,將信息采集模塊按圖2所示分布。

圖1 系統方案總體框圖

圖2 信息采集模塊分布示意圖
車頭前方安裝兩個HC-SR04超聲波測距模塊,該模塊的有效測量距離為2cm-400cm,其測量的精度為3mm,測量角度為15o。為擴大整個小車探測障礙物的能力,在超聲波旁邊放置兩個紅外避障模塊,其朝向為超聲波左右10o,再在小車車頭的左右45o放置同樣的兩個紅外避障模塊(圖中的左1、左2、右2、右1)。此設計中車頭前方的兩種不同的傳感器優勢互補,有效提升了小車對環境的感測精度。
電機驅動電路采用ULN2003芯片控制實現,可由單片機直接控制。用單片機的P1.0-P1.3的4個I/O口控制該驅動芯片,從而驅動步進電機,形成五項四線電機電路,從而控制小車的前進,并且通過單邊轉動,可以控制小車的轉彎。電源模塊采用5V直流電源給ULN2003供電,在5V的工作電壓下ULN2003能與TTL和CMOS電路直接相連,工作電壓高,工作電流大。電源模塊的設計除了考慮系統各模塊電壓和電流等參數來確保系統工作穩定性,也最大程度地實現了各模塊電源轉換效率、降低噪聲、防止干擾等方面的優化。系統各硬件模塊性能穩定、操作簡單,符合智能小車的性能要求。
STC89C51單片機負責小車超聲波傳感器、紅外傳感器數據的采集、讀取,進行避障算法的運算,并控制小車電機驅動模塊實現小車行前進、遇障轉彎、停止等功能,從而控制小車高效、準確避障;超聲波測距模塊負責對前方障礙物進行探測,將測得的信息反饋給主控模塊進行測距操作;紅外避障模塊負責對小車左右兩邊的障礙物進行探測,并對前方超聲波測距模塊的測距死角區域的障礙物進行探測,將障礙物的信息反饋給主控模塊以便主控模塊做出避障反應;顯示模塊負責將超聲波測距模塊測得的距離信息顯示出來,以便能夠直觀方便的了解車輛距離前方障礙物的距離信息。該系統在啟動前一直處于超聲波測距狀態,通過一個按鍵實現對小車的啟動,然后小車向前,當超聲波探測的距離小于30cm時,返回單片機來讓小車短暫停止來判斷小車的紅外避障模塊是否探測到障礙物,如果探測到障礙物單片機做出避障算法并將相應的信息傳遞給電機驅動電路,從而實現小車的停止與轉彎。
本系統軟件采用模塊化結構,由主程序、避障子程序、電機驅動程序、測量子程序、顯示子程序構成,如圖3所示。STC89C51單片機控制器軟件模塊實現了小車實時接受控制命令,對超聲波傳感器模塊、紅外傳感器模塊收集的數據進行優化,對智能小車避障策略進行選擇,LCD實時顯示障礙物距離,并通過軟件調節驅動直流電機的PWM信號的大小,控制左右輪轉速,實現小車各種避障動作。
小車的避障策略如圖4所示。當小車通過按鍵啟動后,小車向前行駛,同時超聲波測距模塊和紅外避障模塊開始工作,探測障礙物的大小距離等信息。當超聲波探測到的距離小于30cm時,紅外避障模塊探測左右兩邊是否存在障礙物,當左邊有障礙物時,小車向右轉彎直至超聲波探測到的距離大于30cm時且左邊的紅外探測到物障礙物,則繼續向前行駛,直至下一次遇到障礙物,反之亦然;當超聲波探測到的距離信息小于30cm且左右兩邊均沒有探測到障礙物,則小車默認右轉;當超聲波探測到的距離信息小于30cm且左右兩邊都存在障礙物時,小車停止。

圖3 軟件設計圖

圖4 避障策略框圖
設計方案中采用HC-SR04超聲波測距模塊,該模塊主要由發射部分和接收部分組成,該模塊由主控單片機控制P2.1口發出8個40KHz的方波,檢測是否有信號返回,當有信號返回時,測距模塊反饋給單片機P2.0口一個高電平。該模塊可直接與單片機相連,由單片機驅動該模塊進行測距,利用單片機的定時器T0計時計算出所測距離S,如公式(4.1)所示。

紅外避障電路由光電二極管組成,采用LM393比較器對電壓值進行比較,利用電位器調節參考電壓,從而實現對障礙物的探測。當接收二極管沒有接收到有障礙物信息時,LM393指示燈處于長滅狀態。當接收二極管接收到有障礙物信息時,LM393輸出一個低電平,此時指示燈亮。
與超聲波模塊相似,其電源依舊與單片機共用,將該模塊的OUT端與單片機的I/O端口相連即可。根據布局方案,本設計采用四個紅外避障模塊,依次檢測左右兩邊的障礙物分別與單片機的引腳連接。
小車軟硬件平臺設計完畢后。為了驗證智能小車的避障性能,在實物環境下對其進行實驗測試。智能小車在前進過程中信息采集系統不斷探測前方周圍是否有障礙物,當存在障礙物時,能夠判斷出相應障礙物的方向和距離,并采取相應的避障動作。
當小車遇到墻角時,小車按照圖中箭頭所示的路徑行駛,在距離前方障礙物較近時,小車開始轉彎,直到與障礙物基本平行時再前進,右邊探測到障礙物,則再向左轉,最終成功躲避障礙物。
順利通過躲避墻角障礙物后,再按照圖5所示擺放障礙物,當小車遇到多障礙物時,按照圖中箭頭所示的路徑行駛,小車在前進的過程中遇到障礙物,由于此時左右兩邊均沒有障礙物,所以此時小車左轉,轉過來之后小車前進,左邊的紅外避障模塊探測到左邊的障礙物后往右轉,然后小車再次探測到前方障礙物,再向右轉,從兩個障礙物之間穿過。

圖5 多障礙物避障
根據上述的測試過程,對小車在多障礙物時能夠準確躲避的效果進行了統計,結果如表1所示。

表1 避障測試結果
總結:本設計采用 STC89C51芯片對直流電機進行控制,同時采用超聲波以及紅外傳感器檢測周圍障礙,再由芯片做出判斷,選擇正確路線。液晶顯示器由單片機控制進行讀寫操作,并在其上面顯示數據。智能小車避障系統中用了紅外傳感器及超聲波傳感器,通過輸出端口輸出相應的電機驅動信號控制小車,實現相應的動作來達到避開障礙物的目的。利用紅外傳感器、超聲波傳感器檢測道路上的障礙,控制電動小車的自動避障,并通過液晶顯示距離。整個系統的電路結構較簡單,可靠性能高,實際測試效果較好,很好的滿足了題目的要求,并在題目的要求基礎上有一定創意和發揮,使整個設計更加人性化。