劉紅蕾,張鍵洋,郝 寧,周立超,許雪梅
摘 要:為使傳統智能車在環境改變時做出更為及時的響應,設計并實現了一種基于μC/OS-Ⅱ系統的智能尋跡模型車。采用高性能、低功耗的AVR系列8位ATmega 16單片機為核心控制單元。在程序設計時應用μC/OS-Ⅱ系統。采用紅外探測法,根據單片機是否收到反射回來的紅外光為依據來確定黑線的位置,由單片機控制進行PWM變頻調速,實現小車沿黑線行駛。該智能車定位準確,系統響應快且穩定,證明了μC/OS-Ⅱ系統的有效性。
關鍵詞:智能車;μC/OS-Ⅱ系統;路徑識別;脈沖寬度調制;AVR單片機
中圖分類號:TP368.1文獻標識碼:A
文章編號:1004-373X(2009)20-023-03
Design and Implementation of Intelligent-searching Track Car Model Based on μC/OS-Ⅱ System
LIU Honglei,ZHANG Jianyang,HAO Ning,ZHOU Lichao,XU Xuemei
(School of Physics Science and Technology,Central South University,Changsha,410083,China)
Abstract:To enable the traditional intelligent car to make more timely response while the environment changes,an intelligent-searching track car model based on μC/OS-Ⅱ system is designed and implemented.The intelligent car system uses the AVR series 8 b single chip which has low power and high performance as its control micro-processor.The μC/OS-Ⅱ system is used for designing program.With infrared detection method,according to whether the single chip microcomputer has received reflected infrared light,the intelligent car determines location of the black line,then it can track the black-guide line automatically by single chip PWM control.This intelligent car can locate accurately and the system can response fast and stably,therefore,it proves superiority of the μC/OS-Ⅱ system.
Keywords:intelligent car;μC/OS operating system;lane detection;PWM control;AVR single chip microcomputer
0 引 言
智能車輛是當今車輛工程領域研究的前沿,它體現了車輛工程、人工智能、自動控制、計算機等多個學科領域理論技術的交叉和綜合,是未來汽車發展的趨勢。以往智能小車在軟件設計上多采用單程序控制,不利于智能車在外部環境改變時做出快速反應,為使智能車系統反應更為快速,該智能車應用μC/OS-Ⅱ系統,該系統適合小型控制系統,具有執行效率高、占用空間小、實時性能優良等特點。且選用功耗較低、資源更為豐富的AVR系列ATmega16單片機作為核心控制單元。
采用紅外探測法實現尋跡功能,即將紅外光電傳感器固定在底盤前沿,利用其在不同顏色的物體表面具有不同的反射性質的特點,在小車行駛過程中不斷地向地面發射紅外光,單片機就是否收到反射回來的紅外光為依據來確定黑線的位置和小車的行走路線。并在后輪上粘上均勻分布的黑白條紋,根據光電反射原理,測量車速。為保證智能車在行駛過程具有良好的操穩性和平順性,控制系統對直流電機驅動控制提出了較為理想的解決方案。
1 硬件系統的設計及實現
智能車的硬件部分以AVR系列ATmega16單片機為核心控制器,由核心控制單元、電源管理模塊、路徑識別模塊、轉向控制模塊、電機驅動模塊和速度及路程檢測模塊等組成。智能車控制系統總體結構如圖1所示。
圖1 智能車控制系統總體結構
1.1 核心控制單元
智能車采用ATmage 16型單片機作為主控CPU。其主要特點為高性能、低功耗、高性價比,資源豐富,并且支持高級語言編程,在運行速度,內存容量,內部功能模塊集成化等諸多方面比MCS-51系列先進。在智能車系統設計中,單片機的I/O資源分配如下:PB3,PD7為伺服電動機的PWM控制信號輸出引腳;PD0~PD3為驅動電機正反轉引腳;路徑識別系統經排線由PA0~PA6輸入至單片機。
1.2 電源管理模塊
為避免電機等器件對系統產生干擾,智能車的各功能模塊單獨供電。采用12 V蓄電池為直流電機供電,將12 V電壓降壓、穩壓后給單片機系統和其他芯片供電。相對于其他類型的電源,蓄電池具有較強的電流驅動能力以及穩定的電壓輸出性能??紤]到蓄電池的體積大,在車體設計時留出了足夠的空間。
在穩壓時,采用兩片7812芯片將電壓穩壓至12 V后給直流電機供電,然后采用2576將電壓穩至5 V。2576的輸出電流最大可到3 A,完全滿足系統要求。
1.3 路徑識別模塊
智能車采用紅外探測法實現小車在黑色地板上循白線行走,為了提高控制精度,要求傳感器排列緊密,越近越好。但傳感器排列緊密,傳感器發射管的光線可能會從地面反射進入臨近傳感器的接收管。為消除傳感器之間互相干擾,傳感器共分為7組,由PA0~PA6這7個I/O口直接供MCU讀取傳感器數據。利用紅外線在不同顏色的物體表面具有不同的反射性質的特點,在智能車行駛過程中傳感器不斷地向地面發射紅外光,當紅外光遇到白色紙質地板時發生漫反射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光(原理圖為圖2所示)。單片機就是否收到反射回來的紅外光為依據來確定黑線的位置和小車的行走路線[1-3]。
圖2 光電管基本原理圖
1.4 電機驅動模塊
在電機驅動方面,采用運用L298作為電機驅動芯片,A,B兩個電機分別控制左面和右面各兩個輪。通過調節兩輪的轉速來實現智能車的轉向,即由單片機控制進行PWM變頻調速,通過程序設計改變脈沖調寬波形的占空比,從而實現調速。轉向角度不同,則兩電動機的轉速差異不同。當小車處于較大的偏離狀態時,需把一個電機的速度調至極低,另一電機全速運行,從而在較短時間內完成路線的調整。
通過設定電機的正轉和反轉來控制智能車的前進和后退。這種電路設計簡易高效,并能確保前后兩輪同步[4]。
1.5 車速檢測模塊
智能車系統通過車速檢測模塊來讀取實時車速。采用在后輪上粘貼均勻分布有黑白條紋的方法。利用圖3的檢測電路來對車輪上的黑白條紋進行檢測。根據光電反射原理,在車輪轉動時,紅外接收管接收到反射光強弱高低變化,就會產生與車輪轉速相對應的脈沖信號,將該脈沖信號進行放大整形后輸入單片機的輸入捕獲引腳PA7,記錄單位時間內所得到的脈沖數,就能夠表示出當前車速[5],同時通過累加可以計算出小車所行走的路程。
圖3 車速檢測模塊簡圖
2 軟件系統設計與實現
為使智能車在環境改變時做出更為及時準確的響應,在程序設計時應用μC/OS-Ⅱ系統。μC/OS-Ⅱ適合小型控制系統,具有執行效率高、占用空間小、實時性能優良和可擴展性強等特點,最小內核可編譯至2 KB。μC/OS-Ⅱ的代碼是用C語言編寫,可以直接移植到有C語言編譯器的處理器上。移植主要都集中在多任務切換的實現上,由于這部分代碼用于保存和恢復CPU現場(即寫/讀相關寄存器),不能用C語言,只能使用匯編語言完成,即編寫OSCPUA.S文件。另外還需要修改體系結構相關的OSCPU.H文件和用戶規定任務棧初始化結構的OSCPUC.C文件。μC/OS-Ⅱ是采用的可剝奪型實時多任務內核??蓜儕Z型的實時內核在任何時候都運行就緒了的最高優先級的任務。μC/OS-Ⅱ中最多可以支持64個任務,分別對應優先級0~63,其中0為最高優先級。在該系統設計中,共應用了7個優先級,其中,操作系統建立任務,即Task Start()的優先級最高。調度工作可以分為兩部分:最高優先級任務的尋找和任務切換[6-8]。
在該系統中,共定義了路徑識別、光電轉盤檢測等7個任務,控制器任務劃分及說明如表1所示。其調度和通信實現流程如下:系統執行TaskStart(),在初始化任務執行完成后,利用μC/OS-Ⅱ的OSTaskDel()函數將這個任務返回并處于休眠狀態。此時, TaskPositionCheck()成為優先級最高的任務,將會一直執行。當TaskPositionCheck()檢測到路徑有所改變,通過郵箱傳送數據到TaskControl(),并由TaskControl()控制PWM波輸出的改變。任務TaskOpticalWheel()的優先級稍低,同樣會一直執行,即當任務TaskOpticalWheel()檢測到黑白跳變時,任務中的變量加1,TaskOpticalWheel()每隔1 s向任務TaskPathCalculate()和TaskSpeedCalculate()發送1次消息,分別計算速度和已走的累加路程,控制器任務關系圖如圖4所示。
表1 控制器任務劃分及說明
任務名說明優先級
TaskStart()操作系統建立任務2
TaskControl()執行機構控制4
TaskPositionCheck()路徑識別6
TaskOpticalWheel()光電轉盤檢測8
TaskSpeedCalculate()速度計算10
TaskPathCalculate()路程計算12
TaskClock()實時時鐘14
圖4 控制器任務關系圖
2.1 路徑黑線的識別
路徑黑線的識別的準確程度決定智能車能否完成快速、穩定的尋線。識別裝置由高發射功率紅外光電二極管和高靈敏度光電晶體管組成,以非接觸檢測方式,檢測距離可調整達4~20 mm。為了精確測定智能車的相對位置,將7對ST178并排安放在車底盤下部的前端,其分布垂直于智能車行走的方向。當車行走時,保持7個發光管發光,當某一個光電對管的下方為黑色軌跡時,相應的接收管輸出為高電平,而下方為白色路面的接收管輸出為低電平。再經數據處理后,控制系統就可以分析出當前車行走的位置,從而達到調整智能車運行狀態的目的。例如,假設路面黑線的寬度為三組紅外線對管的寬度,當黑線在車體中間時,7個輸入引腳為28H(0011100);當車體左或右偏時,接收到的數據會改變,即“1”會相應的左移或右移,如0001110(右偏)、0111000(左偏),偏移幅度不同,“1”的移動位數便不同。
2.2 轉向控制模塊
采用PWM(脈沖寬度調制)控制,配用L298驅動電路實現直流電機的調速,方法簡單且調速范圍大,它利用的是直流斬波原理,假定高電平導通,在一個周期T內導通時間為t,那么一個周期T內的平均電壓U=(t/T)VCC=qVCC,其中占空比q=t/T[9]。
電機的轉速與電機兩端的電壓成正比,而電機兩端的電壓與控制波形的占空比成正比,因此電機的速度與占空比成正比,占空比越大,電機轉的越快,當占空比q=1時,電機轉速達到最大。該智能車系統采用8 MHz的晶體振蕩器,PWM信號引腳OCR0/2的頻率為:
fOCnPWM=(fclkI/O)/N×256
式中:變量N代表分頻因子:1,8,32,64,128,256或1 024。
占空比計算公式為[10]:
t/T=(OCR0/1/256)
2.3 車速及路程測量模塊
在智能車車后輪上粘貼均勻分布有黑白條紋。在輪轉動的過程中,紅外傳感器會不斷檢測到黑、白條紋的出現。當紅外傳感器檢測到的為黑條紋時,輸入電壓為高電平,當檢測到的為白條紋時輸入電壓為低電平。若傳感器檢測到電平跳變,則計數變量加1。時鐘每秒產生一次中斷,TaskClock()進程通過郵箱向TaskSpeedCalculate()進程發送數據,由此可算出小車速度:速度=數據/每圈條紋數。如圖5,圖6所示。
圖5 路徑檢測程序流程圖
圖6 改變PWM波形程序流程
3 結 語
本文介紹了一種智能尋跡模型車的設計與實現。實踐證明,該智能車定位準確,系統響應快且穩定,具備良好的動力性能和精確的轉向性能,證明了μC/OS-Ⅱ系統的有效性和穩定性。相比同類智能車,該模型車還具有高性能、低功耗的優點。
參考文獻
[1]譚永宏,張輝.智能尋跡小車的研究與設計[J].微計算機信息,2008,24(2):310-312.
[2]韓東波,曹兵,葛良全,等.基于SPCE061A的語音控制智能小車設計[J].計算機測量與控制,2007,15(9):1 183-1 185.
[3]劉燕,劉志.基于單片機控制的自主尋跡電動小車的設計[J].自動化與儀器儀表,2007(3):9-11.
[4]張軍,宋濤.AVR單片機C語言程序設計實例精粹[M].北京:電子工業出版社,2009.
[5]韓毅,楊天.基于HCS12單片機的智能尋跡模型車的設計與實現[J].計算機工程與設計,2008,29(18):4 736-4 739.
[6]劉剛.基于S3C44BOX和μC/OS-Ⅱ智能家居嵌入式系統設計[J].現代電子技術,2008,31(14):43-45.
[7]李蓉,李娟,周孟然.基于ARM+μC/OS-Ⅱ的斜井防跑車控制器設計[J].現代電子技術,2008,31(14):35-37.
[8]陳是如.μC/OS-Ⅱ內核分析、移植與驅動程序開發[M].北京:人民郵電出版社,2007.
[9]景立群,李勇,季學武.基于單片機PWM功能的步進電機細分設計[J].微特電機,2008(8):14-16.
[10]馬潮.AVR單片機嵌入式系統原理與應用實踐[M].北京:北京航空航天大學出版社,2007.