李龍,鄧兆強,龔聰,金宇健,周建華(指導(dǎo)老師)
(邵陽學院信息工程學院,湖南邵陽,422000)
智能小車集成了多種高新技術(shù),因此在國內(nèi)外都深受重視。就目前高校來看,智能小車大多采用C51系列作為控制模塊,外加紅外避障模塊、尋跡傳感器模塊、電源模塊、直流電機及其驅(qū)動模塊構(gòu)成[1],控制器將傳感器模塊發(fā)出的數(shù)據(jù)進行處理后發(fā)給驅(qū)動模塊,從而控制整個小車的運動。但傳感器受環(huán)境影響大,工作不穩(wěn)定,本文將用STC89C52單片機外加各個模塊,提高精度及實時性,設(shè)計并實現(xiàn)智能小車循跡避障的優(yōu)化。
智能探測小車采用前輪驅(qū)動,有左轉(zhuǎn)、右轉(zhuǎn)、直行、停止四種狀態(tài)。利用紅外對管對路面信號進行檢測,將信號傳輸?shù)奖容^器處理之后送給STC89S52控制模塊進行實時控制,輸出相應(yīng)的信號驅(qū)動直流電機,通過調(diào)結(jié)兩個電機的轉(zhuǎn)速選擇不同的狀態(tài)[2],從而達到循跡避障的目的,模塊設(shè)計圖如圖1所示。
圖1 模塊設(shè)計圖
1.2.1 控制模塊
STC89C52微處理器,工作電壓5V、DC電流50mA、晶振頻率11.0592MHz,輸出電壓為5VDC或3.3VDC,接上USB時無須外部供電或外部12VDC輸入低電壓,高性能,時鐘速度穩(wěn)定,外部接口豐富,可外接各類型的傳感器模塊[3],非常適合用作本次小車的控制模塊。
1.2.2 驅(qū)動模塊
直流電機是能實現(xiàn)直流電能和機械能互相轉(zhuǎn)換的旋轉(zhuǎn)電機[4]。在智能小車上我們主要的運用其直流電能轉(zhuǎn)換成機械能的作用,來帶動輪子的轉(zhuǎn)動。直流電機調(diào)速性能好、控制簡單、過載能力較強、受電磁干擾影響小。為了小車的平穩(wěn)行駛,本次設(shè)計選擇三個輪子,前面兩個輪子使用同類型額定電壓12V的直流電機接單片機的5V輸出驅(qū)動,后輪使用的是小滑輪起支撐作用來平穩(wěn)運行。
1.2.3 紅外循跡避障模塊
本次采用的紅外循跡避障模塊(如圖2所示)由紅外發(fā)射與接收管和比較器組成,發(fā)射管發(fā)射出一定頻率的紅外線,當前方有物體時,根據(jù)物體的顏色不同反射出不同強度的紅外線被接收管接收,經(jīng)過比較器電路處理之后,根據(jù)事先調(diào)節(jié)的判斷范圍輸出接口輸出高電平或低電平??赏ㄟ^調(diào)節(jié)光敏感度改變檢測距離,有效距離范圍2~60cm,工作電壓為3.3~5V。該模塊可調(diào)范圍廣、工作穩(wěn)定、反應(yīng)迅速、模塊小巧便于安裝,適用于小車循跡避障、測量儀器等場所[5]。
1.2.4 電源模塊
因為AT89C52處理器的特性,我們只需要對其供電,保證其穩(wěn)定的工作電壓就能運行整輛小車。在初步調(diào)試過程中,將單片機的USB口接主機就能正常工作,還能方便檢查。在完成拼裝,接入程序調(diào)試校準時,可以使用充電寶。整個硬件系統(tǒng)的電路圖如圖3所示。
圖3 智能探測小車電路圖
智能小車的各個模塊在連接完成后,還需要軟件對單片機進行控制,在即將偏離軌道或前方有障礙物時,傳感器將信號發(fā)送給單片機,單片機通過循跡避障程序控制驅(qū)動模塊,從而真正的實現(xiàn)小車循跡避障的功能。本系統(tǒng)由主函數(shù)、循跡函數(shù)、避障函數(shù)及延遲函數(shù)構(gòu)成,以此達到模塊化控制[6]。在軟件開發(fā)環(huán)境上使用的是Keil 4,編程語言使用C語言,通過STC-ISP將hex文件下載到單片機來實現(xiàn)對各個模塊的控制,邏輯功能如表1所示。
表1 邏輯功能表
1.3.1 延時程序
單片機的延時程序通過執(zhí)行指令來達到延時效果,這個時間等于執(zhí)行的指令需要的時間,而一個指令需要的時間叫做指令周期,這個時間等于若干個機器周期。因為我們使用的為C語言,就需要將其轉(zhuǎn)化為等步驟的機器周期[7],而本單片機的機器周期=12*(1/11.0592)。
1.3.2 循跡程序
因為直流電機與單片機接了兩個接口:正向供電01和反向供電10,分別對應(yīng)正轉(zhuǎn)和反轉(zhuǎn)。當一側(cè)的紅外對管感應(yīng)到黑色軌跡時,就會通過循跡避障模塊將信號1傳輸給單片機,此時單片機所對這一側(cè)直流電機的兩個接口由01變?yōu)?0,即對直流電機反向供電,另一側(cè)則保持不變,這樣可以讓小車在較高速度下能夠及時轉(zhuǎn)向,而不會在遇到幅度較大的彎道時因為轉(zhuǎn)向慢而偏離軌道,循跡流程如圖4所示。
圖4 循跡流程圖
1.3.3 避障程序
當中間的紅外對管前方檢測到障礙物時,就會通過循跡避障模塊將信號1傳給單片機,控制直流電機轉(zhuǎn)向,避障流程如圖5所示。考慮到障礙有不同的大小形狀,本次設(shè)計遇到障礙時一律右轉(zhuǎn)90°,并且障礙物的顏色也會對反應(yīng)產(chǎn)生影響。同時,為避免循跡與避障發(fā)生沖突導(dǎo)致行駛異常,循跡時軌道上出現(xiàn)障礙時我們將情況1避障程序的優(yōu)先級設(shè)置高于循跡程序,對于優(yōu)先級我們可以通過改變代碼判斷順序或發(fā)生條件來實現(xiàn)[9]。
圖5 避障流程圖
首先燒入電機控制小程序,控制電機正反轉(zhuǎn)、停止均無誤。接著檢測循跡避障模塊,檢查紅外燈是否能正常亮燈,測試靈敏度是否能達到要求,兩個用于循跡的紅外對管分別位于小車的車頭兩側(cè),垂直朝下,便于及時對路面進行判斷,之間的間隔應(yīng)大于軌道寬度,具體位置以對軌跡的敏感度要使遇到黑線立即做出反應(yīng),同時又不會使小車憑空行駛為佳;一個用于避障的紅外對管位于小車車頭并朝向正前方,敏感度根據(jù)需要與障礙物相隔距離多遠轉(zhuǎn)彎來調(diào)節(jié),并且因為轉(zhuǎn)向為90°,就需要我們調(diào)用延時函數(shù),不斷觀測延時在多少時轉(zhuǎn)向會在90°左右。軟件調(diào)節(jié)上,我們利用PWM調(diào)速原理[10],兩側(cè)電機在相同時間里,短暫時間停止較快的一側(cè)電機,多次校準來達到兩邊轉(zhuǎn)速近乎一致來達到直行,這樣就避免因為速度不匹配而發(fā)生不必要的偏轉(zhuǎn)。調(diào)試中的小車如圖6所示。
圖6 循跡中的小車
本文實現(xiàn)了基于AT89S52的智能探測小車硬件和軟件的設(shè)計及優(yōu)化,相較于普通的智能小車更加靈活、可靠,功能穩(wěn)定,精度高,可滿足對系統(tǒng)的各項要求,同時使用硬件少,功耗、成本低,綠色環(huán)保,達到了預(yù)期效果。