張媛,湯舜彬
[摘 要] 研究了一種基于AGV理論的智能車輛導航系統(tǒng),即陸地自主行駛車輛。這個系統(tǒng)選擇紅外循跡作為該系統(tǒng)的導引方式,能讓小車沿著預定路徑行駛,遇障停止以及判斷不同路徑長短,從而進行規(guī)劃。這種自動導引的方式的導航系統(tǒng)小車可以廣泛應用于工廠車間的搬運工作中,大大減輕了車間搬運工作量。
[關 鍵 詞] STC12C5A60S2 單片機芯片;HC-05藍牙模塊;L293D驅動模塊;循跡 HJ-IR2
[中圖分類號] U471 [文獻標志碼] A [文章編號] 2096-0603(2018)06-0151-01
一、硬件設計
(一)STC12C5A60S2模塊
該芯片為插針式、單時鐘、1T機器周期,程序指令執(zhí)行速度快,功耗低,抗干擾極強的新生代8051單片機,其程序指令代碼完全兼容傳統(tǒng)8051芯片。
(二)驅動模塊
驅動部分采用雙路L293D直流電機驅動模塊,可通過程序控制小車前后左右四個方向的控制。在該項設計中使用了四驅智能小車核心集成板,這個開發(fā)板自帶了雙路L293D直流電機驅動,而且還集成了51最小系統(tǒng),全新集成LM2596S開關電源穩(wěn)壓芯片,支持6-12V寬電壓輸入,經過穩(wěn)壓后輸出多路5V給傳感器和單片機使用。
(三)循跡模塊
該智能小車系統(tǒng)紅外導引使用的是2個HJ-IR2不怕光紅外循跡傳感器模塊。當檢測到淺色地面時,紅外管發(fā)出的紅外信號被紅外接收管接收回來,經集成的芯片放大、比較后,點亮模塊上的信號輸出LED指示燈,同時可以輸出一個低平信號,其電平變化可以作為單片機的信號輸入檢測,通過程序控制外部各種驅動模塊之用,其中檢測到黑線則不反射紅外信號。
(四)光電傳感模塊
該系統(tǒng)采用E18-D80NK探測距離可調光電傳感器模塊。檢測到物體距離小于某個范圍時為低電平輸出。其中檢測距離可以根據(jù)要求進行調節(jié),調節(jié)方式為通過尾部的電位器旋鈕進行調節(jié)。
(五)藍牙模塊
HC-05是主從一體化的嵌入式串口通信模塊,具有兩種工作模式,分別為命令響應工作和自動連接工作。在自動連接工作模式下又分為主、從機和回環(huán)三個角色。當屬于命令工作模式時能執(zhí)行AT指令,例如,藍牙模塊與PC機相連時,用戶可通過串口調試助手向模塊發(fā)送各種AT指令進行相應配置,如設置藍牙為從機模式,設置藍牙的波特率、藍牙啟動密碼、任意地址鏈接模式等。其中模塊工作狀態(tài)的轉換可通過控制模塊外部引腳輸入電平來實現(xiàn)。
二、軟件設計
(一)系統(tǒng)數(shù)據(jù)流向
數(shù)據(jù)流向是單向部分:對光電避障模塊和紅外循跡模塊,單片機只需監(jiān)測輸出引腳電平變化數(shù)據(jù)即可。避障模塊檢測到低電平時即前方有障礙物,循跡模塊檢測到黑線時會給輸出端口一個高電平。
根據(jù)上述兩個模塊輸出端口電平變化,單片機對L293D輸入引腳根據(jù)信息輸出不同的電平,以此來實現(xiàn)相應方向控制。
數(shù)據(jù)流向雙向部分:藍牙模塊與單片機還有手機的通信,屬于全雙工通信。藍牙是作為一個信息傳遞的中介:藍牙模塊的引腳與單片機串口相連,實現(xiàn)雙向通信。藍牙與手機APP配對,實現(xiàn)無線通信。
(二)程序流程
程序一開始讓小車處于停止狀態(tài),此時對中斷允許寄存器和中斷控制寄存器進行設置,開啟總中斷和串口1中斷,選擇定時器1,16位數(shù)據(jù)模式,并且設定好初值TH1和TL1,使定時器1每1ms觸發(fā)一次,直到1000ms時將計時變量runtime值顯示到APP上。串口中斷開啟后一旦檢測到串口發(fā)來的數(shù)據(jù),單片機自動觸發(fā)串口中斷。
程序設置完中斷有關的寄存器后,執(zhí)行while(1)循環(huán),進入串口數(shù)據(jù)讀取判斷部分,串口讀取的數(shù)據(jù)賦給串口變量com,通過if結構對串口com值進行相應判斷。
如果串口com讀取的數(shù)據(jù)為字符“1”(也可轉為ASCII碼值,字符“1”的ASCII碼為0×31),小車開始循跡,進入下一判斷,通過循跡模塊的輸出引腳的變化,即通過鋪設的黑線路徑選擇相應的前進方向。程序中Left_moto_go,Left_moto_Stop,Right_moto_go,Right_moto_Stop這四個定義的程序分別代表小車的左右四電機的運轉情況,通過分別使用這四個程序指令,完成小車的方向操作。如果讀取串口的com變量為字符“2”(ASCII碼為0×32),則小車停止。同時在定時器中斷進行計時里也有對串口讀取數(shù)據(jù)值的判斷,這個判斷在讀取到字符“2”時,停止計時,此時手機APP停止接收時間數(shù)據(jù)。
定時器1的中斷函數(shù)經過初值設置,每1ms進行一次。此時引入靜態(tài)變量cnt,經過調用隨著中斷次數(shù)的增加cnt本身值也隨之增加,直到cnt為1000ms,cnt清0,執(zhí)行串口數(shù)據(jù)判斷,若端口數(shù)據(jù)變量com讀取的數(shù)據(jù)為字符“1”,時間變量runtime數(shù)值加1(runtime初值為0),并將runtime的數(shù)值通過藍牙送給APP界面顯示,直到com讀取數(shù)據(jù)為字符“2”時(即APP按下停止鍵),runtime清0,此時停止顯示時間。
這樣就實現(xiàn)了每1s計時一次并顯示的功能,循跡檢測不到黑線時小車停止,說明路線已經走完,此時強行給串口變量com賦值字符“2”,停止計時。智能車輛導航系統(tǒng)正是通過這個顯示的時間來判斷路徑的遠近。
由此計時可總結為:(1)路徑時間長短為啟動鍵按下到停止鍵按下后這一時間間隔。(2)路徑長短為循跡開始到路徑結束后的計時。