楊佳義
(重慶移通學(xué)院智能工程學(xué)院,重慶 401520)
自動循跡小車是智能行走機(jī)器人的一個分支,其具備環(huán)境感知能力和對不同道路狀況的決策能力[1],這使得循跡小車能夠應(yīng)用于各種道路場景。設(shè)計的難點在于循跡算法的可靠性和軌跡運行,循跡基于傳感器的數(shù)據(jù),而軌跡調(diào)試需要精確行駛距離和時間[2]。智能汽車的自動循跡控制是自動駕駛系統(tǒng)研究的關(guān)鍵[3],筆者基于全國大學(xué)生智能汽車競賽提供的B型小車模型設(shè)計自動循跡控制系統(tǒng)[4]。
采用MC9S12XS128MA單片機(jī)作為主控MCU,系統(tǒng)由單片機(jī)電路、電機(jī)驅(qū)動模塊、編碼器、開關(guān)電源電路、線性穩(wěn)壓電路和傳感器模塊組成[5]。采用編碼器對電機(jī)速度進(jìn)行檢測,結(jié)合增量式PID算法對車速實現(xiàn)閉環(huán)調(diào)節(jié)控制[6],紅外傳感器檢測道路中的障礙信息[7],利用攝像頭、電磁感應(yīng)和運放電路來檢測道路信息,依據(jù)傳感器信號特征完成對轉(zhuǎn)向舵機(jī)和電機(jī)的控制??刂葡到y(tǒng)硬件框圖如圖1所示。
圖1 硬件設(shè)計圖
攝像頭采集道路信息傳送給單片機(jī)[8],電磁傳感器處理斷路的道路情況,結(jié)合紅外傳感器識別障礙物,采用霍爾元件HAL145檢測起跑線,提高道路識別的可靠性。采用雙BTS7960構(gòu)成的全橋電路驅(qū)動電機(jī)RS540,編碼器測試電機(jī)的轉(zhuǎn)速把小車運行速度反饋給主控制器,實現(xiàn)智能車閉環(huán)控制。
直接電源電壓供電紋波大,偶爾會出現(xiàn)毛刺現(xiàn)象,這將會對單片機(jī)系統(tǒng)的工作造成不良的影響[9],設(shè)計采用穩(wěn)壓芯片TPS7350,輸出固定且穩(wěn)定的5 V直流電源,為單片機(jī)、蜂鳴器、霍爾元件和編碼器供電,5 V穩(wěn)壓供電電路如圖2所示。舵機(jī)工作時電流相對較大,為了加大爬電距離,舵機(jī)供電在PCB上的走線與其他線路要有充分絕緣距離,且舵機(jī)電路可能會對傳感器等電路產(chǎn)生干擾,因此PCB布線充分考慮EMC(Electro Magnetic Compatibility)。舵機(jī)作為整車主要負(fù)載之一,供電電源需要穩(wěn)定高效,為避免舵機(jī)電流影響其他低壓傳感器的工作,綜合考慮采用MP1584EN開關(guān)電源產(chǎn)生5.5 V電源為舵機(jī)S-D5單獨供電,供電電路如圖3所示。
圖2 穩(wěn)壓5 V供電模塊
圖3 舵機(jī)MP1584EN開關(guān)電源電路
智能汽車系統(tǒng)中的電機(jī)是動力源,直流電機(jī)運行電流較大、干擾較多,小車采用調(diào)壓控制電機(jī)運行速度,因此選擇高效、可靠、可控的驅(qū)動電路及方式至關(guān)重要。設(shè)計采用74HC244D驅(qū)動放大,結(jié)合兩個BTS7960芯片,構(gòu)成全橋電機(jī)驅(qū)動電路,驅(qū)動電路如圖4所示。采用集成芯片,電路簡單,并且專用柵極驅(qū)動芯片所具有的硬件保護(hù)、過流保護(hù)等功能可以提高電路工作的可靠性。供電電壓應(yīng)用PWM(Pulse Width Modulation)技術(shù)調(diào)節(jié)占空比實現(xiàn),可以降低功率損耗,提高效率。
圖4 電機(jī)全橋驅(qū)動原理圖
為防止BTS7960存在高溫?zé)龤У娘L(fēng)險,本次驅(qū)動設(shè)計采用直插封裝的芯片,同時外加大散熱片,散熱片以鋁合金制成,降低材料重量的同時增強(qiáng)了散熱效率,再以硅脂填充芯片與散熱器的間隙進(jìn)一步增加散熱效率。小車運行時,流動的空氣經(jīng)過散熱片帶走部分熱量,降低發(fā)熱的程度。
小車運行速度通過編碼器檢測反饋,編碼器在電機(jī)的帶動下輸出連續(xù)的脈沖,電機(jī)轉(zhuǎn)速越高,編碼器輸出脈沖頻率越高,通過在固定的時間段內(nèi)對脈沖進(jìn)行計數(shù),計算判斷當(dāng)前的車速,編碼器接線電路如圖5所示。
圖5 編碼器電路
輔助調(diào)試電路能方便觀察智能車參數(shù),實時了解小車狀態(tài),配合使用調(diào)試開關(guān)、撥碼開關(guān)切換調(diào)試功能。采用LED顯示屏顯示PWM占空比、運行電流等,設(shè)計采用撥碼開關(guān)來開啟或屏蔽系統(tǒng)某些功能,如開啟或屏蔽起跑線,設(shè)置系統(tǒng)速度基值及對應(yīng)的關(guān)鍵參數(shù),是否屏蔽環(huán)島,是否開啟碰撞停車以及是否屏蔽測距傳感器等相關(guān)功能。調(diào)試按鍵電路實現(xiàn)某些功能,如系統(tǒng)部分運行參數(shù)設(shè)置,相關(guān)傳感器數(shù)據(jù)顯示,相關(guān)變量數(shù)值設(shè)定,賽道元素設(shè)置等功能。本系統(tǒng)設(shè)計了8個撥碼開關(guān)和5個調(diào)試按鍵用于系統(tǒng)調(diào)試。無論是硬件設(shè)計、軟件編寫,還是在實際場合的應(yīng)用,往往會出現(xiàn)沒有考慮到的錯誤,因此設(shè)計了蜂鳴器報警電路,方便出現(xiàn)異常情況時排查故障。
系統(tǒng)控制在MCU上電之后初始化芯片內(nèi)核和所需的外設(shè)模塊,循環(huán)采集傳感器數(shù)據(jù)并執(zhí)行循跡任務(wù),軟件控制流程如圖6所示。初始化模塊包括系統(tǒng)時鐘、定時器、中斷優(yōu)先級、IO口、PWM控制和A/D轉(zhuǎn)換的初始化,為了提高處理速度,使用XS128單片機(jī)鎖相環(huán)倍頻設(shè)置系統(tǒng)時鐘為80 MHz,設(shè)計定時器1為5 ms中斷,作為速度控制、碰撞停車、起跑線檢測的中斷控制。執(zhí)行循跡任務(wù)首先判斷是否偏離道路,通過攝像頭采集道路左右邊線計算左右偏差,由偏差值識別道路元素,判斷是直道、彎道、環(huán)島、十字路口或者斷路情況,不同的道路元素設(shè)定不同的轉(zhuǎn)向速度和角度,結(jié)合紅外傳感器檢測障礙物執(zhí)行避障程序。應(yīng)用PWM技術(shù)調(diào)節(jié)占空比控制電機(jī)的運行速度,反饋計算前進(jìn)速度和左右電機(jī)轉(zhuǎn)彎前進(jìn)的差速值,使用PID算法實時控制調(diào)節(jié),提高控制精度。當(dāng)霍爾元件檢測到終點線磁鐵時,執(zhí)行外部中斷停車控制。
圖6 軟件控制流程圖
小車行進(jìn)的動力采用RS540型號的有刷直流電機(jī),電機(jī)兩端的平均電壓與電機(jī)轉(zhuǎn)速成正比,設(shè)計采用脈沖寬度調(diào)制供電電壓實現(xiàn)小車的速度控制。通過改變PWM占空比控制電機(jī)端平均電壓,達(dá)到調(diào)速的目的[10],PWM初始化程序如下:
四個時鐘源A、SA、B、SB中選擇SA、SB作為PWM輸出通道的時鐘源,將PWM輸出通道設(shè)置為左對齊先輸出高電平然后翻轉(zhuǎn)的模式。通過PWMSCLA寄存器設(shè)置時鐘SA,其計算公式為:Clock SA=Clock A/(2*PWMSCLA),時鐘Clock A的頻率為80 MHz,可得Clock SA=40 MHz,同理可得Clock SB=2 MHz。由于電機(jī)PWM工作頻率為20 kHz,舵機(jī)PWM工作頻率為100 Hz,所以需將兩個PWM通道級聯(lián),設(shè)置PWMCTL寄存器將所有PWM輸出通道兩兩串聯(lián),令周期寄存器的值分別為PWMPER45=2 000、PWMPER67=20 000。PWMxx頻率計算公式為:PWMxx頻率=通道時鐘/PWMPERxx。小車的初始速度為0,將小車初始化占空比為0,測得舵機(jī)位于中點處的占空比為2 970,最后使能PWM通道。在控制系統(tǒng)中對PWMDTYxx占空比寄存器直接賦值,就能控制小車的速度與轉(zhuǎn)向。
算法程序中的參數(shù)受小車結(jié)構(gòu)、傳感器和控制精度的影響,通過仿真得到的參數(shù)只能作為參考值??刂葡到y(tǒng)通過現(xiàn)場調(diào)試獲得優(yōu)化參數(shù)。采集實際參數(shù)配合上位機(jī)串口監(jiān)控程序,實時顯示程序運行過程中各個數(shù)據(jù)變化過程,輔助計算待定參數(shù),確定參數(shù)的優(yōu)化數(shù)值。
舵機(jī)參數(shù)調(diào)試通過實際小車的運行姿態(tài)來判斷參數(shù)的范圍。小車舵機(jī)控制算法采用PD控制,逐漸增大比例增益P,直至小車運行過程中出現(xiàn)振蕩現(xiàn)象,再反過來,逐步減小比例增益P,直至振蕩消失,記錄此時的比例增益P,設(shè)定PD的比例增益P為當(dāng)前值的60%~70%。微分控制可以提高小車的預(yù)調(diào)節(jié)能力,將參數(shù)D的調(diào)節(jié)與循跡小車的彎道處理能力結(jié)合起來優(yōu)化微分參數(shù)D。
避障軌跡調(diào)試通過對距離的精準(zhǔn)采集,保證小車無論以何種速度執(zhí)行避障程序,都能夠恰好越過障礙物,回到設(shè)定軌跡。通過推動小車行駛10 cm記錄編碼器反饋脈沖數(shù),多次測試后確定小車行駛10 cm脈沖計數(shù)650次,將舵機(jī)擺動幅度與小車運動軌跡結(jié)合確定舵機(jī)PWM脈沖寬度輸出。
筆者設(shè)計了基于單片機(jī)MC9S12XS128MA的自動循跡小車的控制系統(tǒng),應(yīng)用code warrior開發(fā)調(diào)試,結(jié)合路況實現(xiàn)穩(wěn)定車速、環(huán)島處理、避障軌跡設(shè)計和數(shù)據(jù)濾波,能夠保證小車穩(wěn)定快速地跑完全程。通過對小車進(jìn)行多次運行調(diào)試,優(yōu)化算法和整定參數(shù),應(yīng)對不同外部環(huán)境小車能作出相應(yīng)的控制決策,實現(xiàn)小車的自動循跡控制。