李龍,鄧兆強,龔聰,金宇健,周建華(指導老師)
(邵陽學院信息工程學院,湖南邵陽,422000)
智能小車集成了多種高新技術,因此在國內外都深受重視。就目前高校來看,智能小車大多采用C51系列作為控制模塊,外加紅外避障模塊、尋跡傳感器模塊、電源模塊、直流電機及其驅動模塊構成[1],控制器將傳感器模塊發出的數據進行處理后發給驅動模塊,從而控制整個小車的運動。但傳感器受環境影響大,工作不穩定,本文將用STC89C52單片機外加各個模塊,提高精度及實時性,設計并實現智能小車循跡避障的優化。
智能探測小車采用前輪驅動,有左轉、右轉、直行、停止四種狀態。利用紅外對管對路面信號進行檢測,將信號傳輸到比較器處理之后送給STC89S52控制模塊進行實時控制,輸出相應的信號驅動直流電機,通過調結兩個電機的轉速選擇不同的狀態[2],從而達到循跡避障的目的,模塊設計圖如圖1所示。

圖1 模塊設計圖
1.2.1 控制模塊
STC89C52微處理器,工作電壓5V、DC電流50mA、晶振頻率11.0592MHz,輸出電壓為5VDC或3.3VDC,接上USB時無須外部供電或外部12VDC輸入低電壓,高性能,時鐘速度穩定,外部接口豐富,可外接各類型的傳感器模塊[3],非常適合用作本次小車的控制模塊。
1.2.2 驅動模塊
直流電機是能實現直流電能和機械能互相轉換的旋轉電機[4]。在智能小車上我們主要的運用其直流電能轉換成機械能的作用,來帶動輪子的轉動。直流電機調速性能好、控制簡單、過載能力較強、受電磁干擾影響小。為了小車的平穩行駛,本次設計選擇三個輪子,前面兩個輪子使用同類型額定電壓12V的直流電機接單片機的5V輸出驅動,后輪使用的是小滑輪起支撐作用來平穩運行。
1.2.3 紅外循跡避障模塊
本次采用的紅外循跡避障模塊(如圖2所示)由紅外發射與接收管和比較器組成,發射管發射出一定頻率的紅外線,當前方有物體時,根據物體的顏色不同反射出不同強度的紅外線被接收管接收,經過比較器電路處理之后,根據事先調節的判斷范圍輸出接口輸出高電平或低電平。可通過調節光敏感度改變檢測距離,有效距離范圍2~60cm,工作電壓為3.3~5V。該模塊可調范圍廣、工作穩定、反應迅速、模塊小巧便于安裝,適用于小車循跡避障、測量儀器等場所[5]。
1.2.4 電源模塊
因為AT89C52處理器的特性,我們只需要對其供電,保證其穩定的工作電壓就能運行整輛小車。在初步調試過程中,將單片機的USB口接主機就能正常工作,還能方便檢查。在完成拼裝,接入程序調試校準時,可以使用充電寶。整個硬件系統的電路圖如圖3所示。

圖3 智能探測小車電路圖
智能小車的各個模塊在連接完成后,還需要軟件對單片機進行控制,在即將偏離軌道或前方有障礙物時,傳感器將信號發送給單片機,單片機通過循跡避障程序控制驅動模塊,從而真正的實現小車循跡避障的功能。本系統由主函數、循跡函數、避障函數及延遲函數構成,以此達到模塊化控制[6]。在軟件開發環境上使用的是Keil 4,編程語言使用C語言,通過STC-ISP將hex文件下載到單片機來實現對各個模塊的控制,邏輯功能如表1所示。

表1 邏輯功能表
1.3.1 延時程序
單片機的延時程序通過執行指令來達到延時效果,這個時間等于執行的指令需要的時間,而一個指令需要的時間叫做指令周期,這個時間等于若干個機器周期。因為我們使用的為C語言,就需要將其轉化為等步驟的機器周期[7],而本單片機的機器周期=12*(1/11.0592)。
1.3.2 循跡程序
因為直流電機與單片機接了兩個接口:正向供電01和反向供電10,分別對應正轉和反轉。當一側的紅外對管感應到黑色軌跡時,就會通過循跡避障模塊將信號1傳輸給單片機,此時單片機所對這一側直流電機的兩個接口由01變為10,即對直流電機反向供電,另一側則保持不變,這樣可以讓小車在較高速度下能夠及時轉向,而不會在遇到幅度較大的彎道時因為轉向慢而偏離軌道,循跡流程如圖4所示。

圖4 循跡流程圖
1.3.3 避障程序
當中間的紅外對管前方檢測到障礙物時,就會通過循跡避障模塊將信號1傳給單片機,控制直流電機轉向,避障流程如圖5所示。考慮到障礙有不同的大小形狀,本次設計遇到障礙時一律右轉90°,并且障礙物的顏色也會對反應產生影響。同時,為避免循跡與避障發生沖突導致行駛異常,循跡時軌道上出現障礙時我們將情況1避障程序的優先級設置高于循跡程序,對于優先級我們可以通過改變代碼判斷順序或發生條件來實現[9]。

圖5 避障流程圖
首先燒入電機控制小程序,控制電機正反轉、停止均無誤。接著檢測循跡避障模塊,檢查紅外燈是否能正常亮燈,測試靈敏度是否能達到要求,兩個用于循跡的紅外對管分別位于小車的車頭兩側,垂直朝下,便于及時對路面進行判斷,之間的間隔應大于軌道寬度,具體位置以對軌跡的敏感度要使遇到黑線立即做出反應,同時又不會使小車憑空行駛為佳;一個用于避障的紅外對管位于小車車頭并朝向正前方,敏感度根據需要與障礙物相隔距離多遠轉彎來調節,并且因為轉向為90°,就需要我們調用延時函數,不斷觀測延時在多少時轉向會在90°左右。軟件調節上,我們利用PWM調速原理[10],兩側電機在相同時間里,短暫時間停止較快的一側電機,多次校準來達到兩邊轉速近乎一致來達到直行,這樣就避免因為速度不匹配而發生不必要的偏轉。調試中的小車如圖6所示。

圖6 循跡中的小車
本文實現了基于AT89S52的智能探測小車硬件和軟件的設計及優化,相較于普通的智能小車更加靈活、可靠,功能穩定,精度高,可滿足對系統的各項要求,同時使用硬件少,功耗、成本低,綠色環保,達到了預期效果。