智能車輛是當(dāng)今車輛工程領(lǐng)域研究的前沿,它體現(xiàn)了車輛工程、人工智能、自動(dòng)控制、計(jì)算機(jī)等多個(gè)學(xué)科領(lǐng)域理論技術(shù)的交叉和綜合,是未來汽車發(fā)展的趨勢(shì)。以往智能小車在軟件設(shè)計(jì)上多采用單程序控制,不利于智能車在外部環(huán)境改變時(shí)做出快速反應(yīng),為使智能車系統(tǒng)反應(yīng)更為快速,該智能車應(yīng)用μC/OS-Ⅱ系統(tǒng),該系統(tǒng)適合小型控制系統(tǒng),具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良等特點(diǎn)。且選用功耗較低、資源更為豐富的AVR系列ATmega16單片機(jī)作為核心控制單元。
采用紅外探測法實(shí)現(xiàn)尋跡功能,即將紅外光電傳感器固定在底盤前沿,利用其在不同顏色的物體表面具有不同的反射性質(zhì)的特點(diǎn),在小車行駛過程中不斷地向地面發(fā)射紅外光,單片機(jī)就是否收到反射回來的紅外光為依據(jù)來確定黑線的位置和小車的行走路線。并在后輪上粘上均勻分布的黑白條紋,根據(jù)光電反射原理,測量車速。為保證智能車在行駛過程具有良好的操穩(wěn)性和平順性,控制系統(tǒng)對(duì)直流電機(jī)驅(qū)動(dòng)控制提出了較為理想的解決方案。
1 硬件系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)
智能車的硬件部分以AVR系列ATmega 16單片機(jī)為核心控制器,由核心控制單元、電源管理模塊、路徑識(shí)別模塊、轉(zhuǎn)向控制模塊、電機(jī)驅(qū)動(dòng)模塊和速度及路程檢測模塊等組成。智能車控制系統(tǒng)總體結(jié)構(gòu)如圖1所示。
1.1 核心控制單元
智能車采用ATmage16型單片機(jī)作為主控CPU其主要特點(diǎn)為高性能、低功耗、高性價(jià)比,資源豐富,并且支持高級(jí)語言編程,在運(yùn)行速度。內(nèi)存容量,內(nèi)部功能模塊集成化等諸多方面比MCS-51系列先進(jìn)。在智能車系統(tǒng)設(shè)計(jì)中,單片機(jī)的I/O資源分配如下:PB3,PD7為伺服電動(dòng)機(jī)的PWM控制信號(hào)輸出引腳;PD0~PD3為驅(qū)動(dòng)電機(jī)正反轉(zhuǎn)引腳;路徑識(shí)別系統(tǒng)經(jīng)排線由PA0~PA6輸入至單片機(jī)。
1.2 電源管理模塊
為避免電機(jī)等器件對(duì)系統(tǒng)產(chǎn)生干擾,智能車的各功能模塊單獨(dú)供電。采用12 V蓄電池為直流電機(jī)供電,將12 V電壓降壓、穩(wěn)壓后給單片機(jī)系統(tǒng)和其他芯片供電。相對(duì)于其他類型的電源,蓄電池具有較強(qiáng)的電流驅(qū)動(dòng)能力以及穩(wěn)定的電壓輸出性能??紤]到蓄電池的體積大,在車體設(shè)計(jì)時(shí)留出了足夠的空間。
在穩(wěn)壓時(shí),采用兩片7812芯片將電壓穩(wěn)壓至12 V后給直流電機(jī)供電,然后采用2576將電壓穩(wěn)至5 V。2576的輸出電流最大可到3 A,完全滿足系統(tǒng)要求。
1.3 路徑識(shí)別模塊
智能車采用紅外探測法實(shí)現(xiàn)小車在黑色地板上循白線行走,為了提高控制精度,要求傳感器排列緊密,越近越好。但傳感器排列緊密,傳感器發(fā)射管的光線可能會(huì)從地面反射進(jìn)入臨近傳感器的接收管。為消除傳感器之間互相干擾,傳感器共分為7組,由PA0~PA6這7個(gè)I/O口直接供MCU讀取傳感器數(shù)據(jù)。利用紅外線在不同顏色的物體表面具有不同的反射性質(zhì)的特點(diǎn),在智能車行駛過程中傳感器不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色紙質(zhì)地板時(shí)發(fā)生漫反射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光(原理圖為圖2所示)。單片機(jī)就是否收到反射回來的紅外光為依據(jù)來確定黑線的位置和小車的行走路線。
1.4 電機(jī)驅(qū)動(dòng)模塊
在電機(jī)驅(qū)動(dòng)方面,采用運(yùn)用L298作為電機(jī)驅(qū)動(dòng)芯片,A,B兩個(gè)電機(jī)分別控制左面和右面各兩個(gè)輪。通過調(diào)節(jié)兩輪的轉(zhuǎn)速來實(shí)現(xiàn)智能車的轉(zhuǎn)向,即由單片機(jī)控制進(jìn)行PWM變頻調(diào)速,通過程序設(shè)計(jì)改變脈沖調(diào)寬波形的占空比,從而實(shí)現(xiàn)調(diào)速。轉(zhuǎn)向角度不同,則兩電動(dòng)機(jī)的轉(zhuǎn)速差異不同。當(dāng)小車處于較大的偏離狀態(tài)時(shí),需把一個(gè)電機(jī)的速度調(diào)至極低,另一電機(jī)全速運(yùn)行,從而在較短時(shí)間內(nèi)完成路線的調(diào)整。
通過設(shè)定電機(jī)的正轉(zhuǎn)和反轉(zhuǎn)來控制智能車的前進(jìn)和后退。這種電路設(shè)計(jì)簡易高效,并能確保前后兩輪同步。
1.5 車速檢測模塊
智能車系統(tǒng)通過車速檢測模塊來讀取實(shí)時(shí)車速。采用在后輪上粘貼均勻分布有黑白條紋的方法。利用圖3的檢測電路來對(duì)車輪上的黑白條紋進(jìn)行檢測。根據(jù)光電反射原理,在車輪轉(zhuǎn)動(dòng)時(shí),紅外接收管接收到反射光強(qiáng)弱高低變化,就會(huì)產(chǎn)生與車輪轉(zhuǎn)速相對(duì)應(yīng)的脈沖信號(hào),將該脈沖信號(hào)進(jìn)行放大整形后輸入單片機(jī)的輸入捕獲引腳PA7,記錄單位時(shí)間內(nèi)所得到的脈沖數(shù),就能夠表示出當(dāng)前車速,同時(shí)通過累加可以計(jì)算出小車所行走的路程。
2 軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
為使智能車在環(huán)境改變時(shí)做出更為及時(shí)準(zhǔn)確的響應(yīng),在程序設(shè)計(jì)時(shí)應(yīng)用μC/OS-Ⅱ系統(tǒng)。μC/OS-Ⅱ適合小型控制系統(tǒng),具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn),最小內(nèi)核可編譯至2 KB。μC/OS-Ⅱ的代碼是用C語言編寫,可以直接移植到有C語言編譯器的處理器上。移植主要都集中在多任務(wù)切換的實(shí)現(xiàn)上,由于這部分代碼用于保存和恢復(fù)CPU現(xiàn)場(即寫/讀相關(guān)寄存器),不能用C語言,只能使用匯編語言完成,即編寫OS CPU A.S文件。另外還需要修改體系結(jié)構(gòu)相關(guān)的OS CPU.H文件和用戶規(guī)定任務(wù)棧初始化結(jié)構(gòu)的OS CPU C.C文件。
μC/OS-Ⅱ是采用的可剝奪型實(shí)時(shí)多任務(wù)內(nèi)核??蓜儕Z型的實(shí)時(shí)內(nèi)核在任何時(shí)候都運(yùn)行就緒了的最高優(yōu)先級(jí)的任務(wù)。μC/OS-Ⅱ中最多可以支持64個(gè)任務(wù),分別對(duì)應(yīng)優(yōu)先級(jí)0~63,其中0為最高優(yōu)先級(jí)。在該系統(tǒng)設(shè)計(jì)中,共應(yīng)用了7個(gè)優(yōu)先級(jí),其中,操作系統(tǒng)建立任務(wù),即Task Start()的優(yōu)先級(jí)最高。調(diào)度工作可以分為兩部分:最高優(yōu)先級(jí)任務(wù)的尋找和任務(wù)切換。
在該系統(tǒng)中,共定義了路徑識(shí)別、光電轉(zhuǎn)盤檢測等7個(gè)任務(wù),控制器任務(wù)劃分及說明如表1所示。其調(diào)度和通信實(shí)現(xiàn)流程如下:系統(tǒng)執(zhí)行Task Start(),在初始化任務(wù)執(zhí)行完成后,利用μC/OS-Ⅱ的OSTaskDel()函數(shù)將這個(gè)任務(wù)返回并處于休眠狀態(tài)。此時(shí),Task Po-sition Check()成為優(yōu)先級(jí)最高的任務(wù),將會(huì)一直執(zhí)行。當(dāng)Task Position Check()檢測到路徑有所改變,通過郵箱傳送數(shù)據(jù)到Task Control(),并由TaskControl()控制PWM波輸出的改變。任務(wù)Task Op-tical_Wheel()的優(yōu)先級(jí)稍低,同樣會(huì)一直執(zhí)行,即當(dāng)任務(wù)Task_Optical_Wheel()檢測到黑白跳變時(shí),任務(wù)中的變量加1,Task_Optical_Wheel()每隔1 s向任務(wù)Task_Path_Calculate()和Task_Speed_Calculate()發(fā)送1次消息,分別計(jì)算速度和已走的累加路程,控制器任務(wù)關(guān)系圖如圖4所示。
2.1 路徑黑線的識(shí)別
路徑黑線的識(shí)別的準(zhǔn)確程度決定智能車能否完成快速、穩(wěn)定的尋線。識(shí)別裝置由高發(fā)射功率紅外光電二極管和高靈敏度光電晶體管組成,以非接觸檢測方式,檢測距離可調(diào)整達(dá)4~20 mm。為了精確測定智能車的相對(duì)位置,將7對(duì)ST178并排安放在車底盤下部的前端,其分布垂直于智能車行走的方向。當(dāng)車行走時(shí),保持7個(gè)發(fā)光管發(fā)光,當(dāng)某一個(gè)光電對(duì)管的下方為黑色軌跡時(shí),相應(yīng)的接收管輸出為高電平,而下方為白色路面的接收管輸出為低電平。再經(jīng)數(shù)據(jù)處理后,控制系統(tǒng)就可以分析出當(dāng)前車行走的位置,從而達(dá)到調(diào)整智能車運(yùn)行狀態(tài)的目的。例如,假設(shè)路面黑線的寬度為三組紅外線對(duì)管的寬度,當(dāng)黑線在車體中間時(shí),7個(gè)輸入引腳為28H(0011100);當(dāng)車體左或右偏時(shí),接收到的數(shù)據(jù)會(huì)改變,即“1”會(huì)相應(yīng)的左移或右移,如0001110(右偏)、0111000(左偏),偏移幅度不同,“1”的移動(dòng)位數(shù)便不同。
2.2 轉(zhuǎn)向控制模塊
采用PWM(脈沖寬度調(diào)制)控制,配用L298驅(qū)動(dòng)電路實(shí)現(xiàn)直流電機(jī)的調(diào)速,方法簡單且調(diào)速范圍大,它利用的是直流斬波原理,假定高電平導(dǎo)通,在一個(gè)周期T內(nèi)導(dǎo)通時(shí)間為t,那么一個(gè)周期T內(nèi)的平均電壓U=(t/T)VCC=qVCC,其中占空比q=t/T。
電機(jī)的轉(zhuǎn)速與電機(jī)兩端的電壓成正比,而電機(jī)兩端的電壓與控制波形的占空比成正比,因此電機(jī)的速度與占空比成正比,占空比越大,電機(jī)轉(zhuǎn)的越快,當(dāng)占空比q=1時(shí),電機(jī)轉(zhuǎn)速達(dá)到最大。該智能車系統(tǒng)采用8 MHz的晶體振蕩器,PWM信號(hào)引腳OCRO/2的頻率為:
式中:變量N代表分頻因子:1.8,32,64,128,256或1 024。占空比計(jì)算公式為:
t/T=(OCR0/1/256)
2.3 車速及路程測量模塊
在智能車車后輪上粘貼均勻分布有黑白條紋。在輪轉(zhuǎn)動(dòng)的過程中,紅外傳感器會(huì)不斷檢測到黑、白條紋的出現(xiàn)。當(dāng)紅外傳感器檢測到的為黑條紋時(shí),輸入電壓為高電平,當(dāng)檢測到的為白條紋時(shí)輸入電壓為低電平。若傳感器檢測到電平跳變,則計(jì)數(shù)變量加1。時(shí)鐘每秒產(chǎn)生一次中斷,Task_Clock()進(jìn)程通過郵箱向Task Speed_Calculate()進(jìn)程發(fā)送數(shù)據(jù),由此可算出小車速度:速度=數(shù)據(jù)/每圈條紋數(shù)。如圖5,圖6所示。
3 結(jié) 語
本文介紹了一種智能尋跡模型車的設(shè)計(jì)與實(shí)現(xiàn)。實(shí)踐證明,該智能車定位準(zhǔn)確,系統(tǒng)響應(yīng)快且穩(wěn)定,具備良好的動(dòng)力性能和精確的轉(zhuǎn)向性能,證明了μC/OS-Ⅱ系統(tǒng)的有效性和穩(wěn)定性。相比同類智能車,該模型車還具有高性能、低功耗的優(yōu)點(diǎn)。