劉芳 張?zhí)锾? 牛夢(mèng)豪
摘 要:智能小車綜合利用傳感器、人工智能、自動(dòng)控制、視覺(jué)計(jì)算、體系結(jié)構(gòu)設(shè)計(jì)等多項(xiàng)技術(shù),是計(jì)算機(jī)科學(xué)、模式識(shí)別和智能控制技術(shù)發(fā)展到一定高度的產(chǎn)物,也是未來(lái)智能汽車的發(fā)展趨勢(shì)。本文介紹了一種基于STM32單片機(jī)的智能循跡避障小車硬件系統(tǒng)和軟件系統(tǒng)的設(shè)計(jì)。該智能小車以STM32單片機(jī)為主控芯片,采用紅外對(duì)管和超聲波傳感器作為檢測(cè)元件,使小車能按預(yù)定的軌道穩(wěn)定行駛,能正確地識(shí)別路徑、避障。
關(guān)鍵詞:循跡避障;STM32F103ZET6;紅外對(duì)管傳感器;超聲波傳感器;舵機(jī)
智能小車是一種可以進(jìn)行自主信息檢測(cè)、自主決策以及自主行駛的高度智能化設(shè)備,涉及的學(xué)科主要包括單片機(jī)原理、軟件編程、電機(jī)自動(dòng)控制、數(shù)字電路、模擬電路,以及硬件設(shè)計(jì)、信息采集、信號(hào)處理技術(shù)和人工智能技術(shù)等等。本文基于STM32主控芯片設(shè)計(jì)的智能小車包括兩個(gè)單元,其一是循跡單元,其二是避障單元。主要利用循跡單元、避障單元的外圍硬件設(shè)備結(jié)合軟件控制,設(shè)計(jì)出一個(gè)較為完整的自主控制系統(tǒng),使智能小車分別能夠按預(yù)設(shè)標(biāo)線完成循跡行駛和自主避障行駛。
1 工作原理
智能循跡避障小車的控制系統(tǒng)主要由以下四個(gè)模塊組成:紅外對(duì)管模塊、超聲波模塊、舵機(jī)模塊、電機(jī)驅(qū)動(dòng)模塊。循跡小車的控制原理是將紅外對(duì)管傳感器固定在小車前端,實(shí)時(shí)采集道路信息,將采集到的信息傳輸?shù)絊TM32處理器,處理器根據(jù)預(yù)設(shè)的程序調(diào)整小車電機(jī)的轉(zhuǎn)速進(jìn)而使小車可以按照預(yù)先規(guī)劃好的路線行駛實(shí)現(xiàn)循跡。避障小車的控制原理是將超聲波傳感器固定在舵機(jī)上并置于小車前端,由STM32處理器根據(jù)設(shè)定的程序調(diào)整超聲波測(cè)量角度,測(cè)量小車與障礙物的距離,從而實(shí)現(xiàn)避障功能。
2 硬件設(shè)計(jì)
(1)主控制器單元。該智能循跡小車的主控制器單元采用STM32F103ZET6單片機(jī),使用的是時(shí)鐘頻率為72MHz的ARM Cortex系列處理器。單片機(jī)的PB1、PB2端口用于循跡時(shí)紅外傳感器的輸入;PA2、PA3端口分別用于避障時(shí)超聲波傳感器的輸入和輸出;PB0端口用于舵機(jī)的輸入控制;PA4、PA5、PA6、PA7分別用于電機(jī)的正反轉(zhuǎn)控制。
(2)循跡單元。循跡單元是智能小車的重要組成部分,本設(shè)計(jì)采用的是具有反射功能的單光束紅外傳感器。傳感器兩個(gè)探頭分別為紅外線發(fā)射管和紅外線接收管。發(fā)射管發(fā)出紅外光線,傳感器根據(jù)接收管接收到紅外線的多少判斷黑線的位置。根據(jù)黑色吸光原理,當(dāng)照射到黑線時(shí),反射回來(lái)的光線較少,接收管不導(dǎo)通,輸出端輸出高電平。當(dāng)照射到白色表面時(shí),反射回來(lái)的光線較多,接收管導(dǎo)通,輸出端輸出低電平。單片機(jī)根據(jù)紅外對(duì)管傳感器輸出的信號(hào)來(lái)控制車輪轉(zhuǎn)向,從而實(shí)現(xiàn)小車的循跡功能。此小車循跡模塊由一個(gè)STM32主控板和兩個(gè)紅外傳感器模塊板組成,通過(guò)杜邦線將紅外傳感器模塊板與主控板板連接,實(shí)現(xiàn)信號(hào)傳入。兩個(gè)傳感器獨(dú)立工作,互不干擾,傳感器的數(shù)量與安裝位置沒(méi)有固定限制,可結(jié)合現(xiàn)場(chǎng)調(diào)試效果確定,以能使小車自主順暢運(yùn)行為準(zhǔn),紅外傳感器模塊板工作電壓為3.3-5V。兩個(gè)紅外端口分別對(duì)應(yīng)單片機(jī)的PB1、PB2口。
(3)避障單元。①超聲波模塊。本設(shè)計(jì)采用的是超聲測(cè)距波避障,其測(cè)距過(guò)程如下。首先,與TRIG相連的IO輸出一個(gè)不少于10us高電平觸發(fā)測(cè)距;緊接著,模塊自動(dòng)向某一方向發(fā)射8個(gè) 40khz的方波;發(fā)射的同時(shí),打開(kāi)程序中所用的定時(shí)器并檢測(cè)與ECHO相連的IO口電位,當(dāng)有信號(hào)返回時(shí),ECHO輸出高電平,此時(shí)關(guān)閉定時(shí)器,讀取定時(shí)器的計(jì)時(shí)時(shí)間即為超聲波從發(fā)出信號(hào)到在空中傳播,再到接收到返回信號(hào)的總時(shí)間。
小車與障礙物的距離:
式中,d為超聲波避障模塊與物體之間的距離,c為空氣中超聲波沿直線傳播的速度,t總為五次傳感器測(cè)量的時(shí)間和,n為測(cè)量次數(shù)。本設(shè)計(jì)中采取連續(xù)測(cè)量5次求平均值的方法來(lái)減小測(cè)量誤差。
②舵機(jī)模塊。從PB0端口輸入舵機(jī)的控制信號(hào),并產(chǎn)生周期為20ms的脈寬調(diào)制信號(hào),0.5ms-2.5ms的脈沖寬度變化對(duì)應(yīng)舵機(jī)0-180°的偏轉(zhuǎn)角變化,兩者變化基本上呈線性關(guān)系。通過(guò)控制單片機(jī)I/O輸入端,產(chǎn)生具有一定脈寬的信號(hào)并發(fā)送至舵機(jī),使舵機(jī)輸出對(duì)應(yīng)偏角直到處理器提供另一個(gè)脈寬信號(hào)再改變輸出的轉(zhuǎn)角。在此過(guò)程中無(wú)論外界對(duì)對(duì)舵機(jī)施加的力矩如何改變,舵機(jī)轉(zhuǎn)角都不會(huì)改變,直至主控模塊所發(fā)送下一個(gè)脈沖信號(hào),舵機(jī)角度才會(huì)發(fā)生相應(yīng)改變。
3 軟件設(shè)計(jì)
通過(guò)完成各模塊的初始化來(lái)實(shí)現(xiàn)智能小車軟件的設(shè)計(jì),并實(shí)現(xiàn)運(yùn)行過(guò)程中的自主控制。傳感器將采集到的信息以數(shù)字信號(hào)的形式傳遞到單片機(jī)輸入引腳。單片機(jī)依據(jù)此信號(hào)進(jìn)行判斷處理,以實(shí)現(xiàn)智能車的正常行駛。這些過(guò)程均需要通過(guò)軟件設(shè)計(jì)來(lái)實(shí)現(xiàn)。本設(shè)計(jì)的控制系統(tǒng)軟件設(shè)計(jì)基于Keil μVision 5編譯環(huán)境,使用C語(yǔ)言完成程序編寫(xiě)。
其中,傳感器對(duì)應(yīng)小車的運(yùn)動(dòng)形式如下表:
4 結(jié)語(yǔ)
本設(shè)計(jì)通過(guò)采用STM32F103Z6芯片的A/D轉(zhuǎn)換、GPIO口、串行口通信等內(nèi)部集成的一些功能完成了硬件的設(shè)計(jì)及軟件的開(kāi)發(fā),成功地實(shí)現(xiàn)了智能小車的循跡、避障功能。本文提出的基于STM32的智能循跡小車可應(yīng)用在中小學(xué)生的興趣教育等領(lǐng)域。通過(guò)制作循跡避障的智能小車,可以很好地掌握STM32開(kāi)發(fā)板的編程原理,同時(shí)鍛煉了大學(xué)生將綜合理論知識(shí)應(yīng)用到實(shí)踐中的能力和團(tuán)隊(duì)協(xié)作的能力。
參考文獻(xiàn):
[1]李帥男.基于STM32的循跡避障智能小車的設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2018,36(08):163-164.
[2]王楠,查志敏.基于STM32單片機(jī)的智能搬運(yùn)小車設(shè)計(jì)[J].大慶師范學(xué)院學(xué)報(bào),2017,37(06):14-17.
[3]駱第含,趙子豪,岳有山.智能小車的發(fā)展現(xiàn)狀與趨勢(shì)[J].河南科技,2017(23):92-93.