天津職業(yè)技術(shù)師范大學(xué)工程實(shí)訓(xùn)中心 劉衛(wèi)華 戴健雄
引言:本文設(shè)計(jì)將傳統(tǒng)智能循跡小車系統(tǒng)和開源電子設(shè)計(jì)Arduino結(jié)合設(shè)計(jì)智能循跡小車系統(tǒng),并通過PID算法實(shí)現(xiàn)智能調(diào)節(jié)。論文介紹了設(shè)計(jì)的思路和一些用到的基本的原理及系統(tǒng)的硬件、軟件設(shè)計(jì)知識。
Arduino是一個(gè)基于開放源代碼的軟硬體平臺,構(gòu)建于開放原始碼simple I/O介面版,并且具有使用類似Java,C語言的Processing/Wiring開發(fā)環(huán)境。Arduino能通過各種各樣的傳感器來感知環(huán)境,通過控制燈光、電機(jī)和其他的裝置來反饋、影響環(huán)境。板子上的微控制器可以通過Arduino的編程語言來編寫程序,編譯成二進(jìn)制文件,燒錄進(jìn)微控制器。對Arduino的編程是利用Arduino編程語言和Arduino開發(fā)環(huán)境來實(shí)現(xiàn)的。基于Arduino的項(xiàng)目設(shè)計(jì),可以只包含Arduino軟件平臺,也可以結(jié)合Arduino相應(yīng)的硬件電路設(shè)計(jì)。
設(shè)計(jì)微型小車,能在如圖1所示的參數(shù)測試場景中實(shí)現(xiàn)自動循跡或紅外搖控控制。
圖1 測試場景及參數(shù)
根據(jù)要求,硬件應(yīng)全面兼容Arduino,并具有通信和下載接口,具有光電傳感器能感知地面黑線,具有可控驅(qū)動電機(jī),具有紅外搖控接收裝置,具有一定的人機(jī)接口,LED指示和按鍵等。
根據(jù)小車的功能,設(shè)計(jì)的系統(tǒng)方框圖2所示。
圖2 系統(tǒng)方框圖
為了實(shí)現(xiàn)的微型化,以及充分發(fā)揮Arduino開放性,在功能框圖的基礎(chǔ)上增加了串口、ISP下載口、紅外線接收、按鍵及兩個(gè)LED指示燈,并對標(biāo)準(zhǔn)的Arduino電路進(jìn)行了簡化,取消外圍晶振電路和復(fù)位電路。主控芯片使用了AVR ATMEGA8L,低電壓單片機(jī)。光電傳感器使用了SANYO光電反射管SIP-315-34。本小車沒有倒退動作,所以不需要電機(jī)的反轉(zhuǎn)。為了實(shí)現(xiàn)的轉(zhuǎn)彎等動作,要求通過改變控制信號的高低電平比例(即PWM)來控制電機(jī)的轉(zhuǎn)速。為了實(shí)現(xiàn)小車的紅外功能,并充分利用主控芯片的資源,增加一只一體化紅外接收頭NB0038;將RXD和TXD及地線通過排針引出,可通過專門的USB轉(zhuǎn)TTL串口線與小車進(jìn)行通信;增加了一個(gè)按鍵和兩個(gè)LED指示電路,用于電路調(diào)試及功能指示。
下面將介紹如何使小車實(shí)現(xiàn)自主循跡,并具有一定的智能性。
設(shè)計(jì)的主程序流程圖如圖3所示。
圖3 主程序流程圖
為了實(shí)現(xiàn)走直線以及轉(zhuǎn)彎等動作,這就要求小車的兩個(gè)電機(jī)轉(zhuǎn)速可調(diào)。使用PWM(脈沖寬度調(diào)節(jié))的技術(shù),通過改變脈沖高電平的比例(占空比)來改變等效有效值。在Arduino中我們使用AnalogWrite(pin,Value)來實(shí)現(xiàn)數(shù)字IO口PWM輸出,輸出的PWM信號頻率大約400Hz。 本設(shè)計(jì)中pin取值為9和10分別對應(yīng)電機(jī)1和2,Value設(shè)置輸出的信號占空比,范圍0-255,0對應(yīng)電機(jī)停轉(zhuǎn),255為最快轉(zhuǎn)速。
本設(shè)計(jì)中,使用脈沖光來排除環(huán)境光線的干擾,并按順序掃描來防止傳感器之間的相互干擾。微控制器先關(guān)閉LED并掃描傳感器,采樣輸出電壓,打開LED并且再次采樣輸出電壓。兩次采樣的差值作為LED的光敏電流和環(huán)境光線被排除后的輸出電壓。其余的傳感器也按上述順序進(jìn)行掃描。流程圖如圖4所示。
通過相同的方法分別采集了傳感器在黑線和白紙上的值,分別存入mySensB和mySensW數(shù)組。將被跟蹤的線的位置是與中心值對比,定位誤差同比例、積分、差分濾波器一起被處理來生成控制命令,控制左右輪使小車按軌跡快速行駛。
圖4 傳感器采集流程圖
系統(tǒng)測試過程中,采取順時(shí)針和逆時(shí)針兩個(gè)方向的測試方法,以此來檢測智能小車左右轉(zhuǎn)的效果。
經(jīng)過順時(shí)針、逆時(shí)針各10次,每次1圈的實(shí)際測試。系統(tǒng)在順時(shí)針運(yùn)動時(shí),主要執(zhí)行右轉(zhuǎn)和直行這兩種運(yùn)動控制;在逆時(shí)針運(yùn)動時(shí),主要執(zhí)行左轉(zhuǎn)和直行這兩種運(yùn)動控制。在每組測試過程中,逆時(shí)針的運(yùn)動時(shí)間相對順時(shí)針的運(yùn)動時(shí)間較長,則可大致得出結(jié)論:左轉(zhuǎn)控制的響應(yīng)時(shí)間慢于右轉(zhuǎn)控制。另外,起點(diǎn)位于彎道的運(yùn)行時(shí)間要長于起點(diǎn)位于直道的運(yùn)行時(shí)間。實(shí)物小車如圖5所示。
圖5 實(shí)物小車
本設(shè)計(jì)可用于電子、自動化等專業(yè)的實(shí)訓(xùn)課程訓(xùn)練,可以由學(xué)生參考本電路,設(shè)計(jì)電路板及機(jī)械等,也可提供設(shè)計(jì)好的智能小車平臺,實(shí)現(xiàn)Arduino平臺的編程學(xué)習(xí)、代碼算法學(xué)習(xí)以及應(yīng)用平臺進(jìn)行競賽活動。