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