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