版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第六屆“飛思卡爾”杯全國大學(xué)生
智能汽車競賽技術(shù)報告附件B基于雙排傳感器智能車控制策略的實(shí)現(xiàn)學(xué)校:南京師范大學(xué)隊(duì)伍名稱:ALPS隊(duì)參賽隊(duì)員:鈕博文彭大成
彭煜聰帶隊(duì)教師:沈世斌關(guān)于技術(shù)報告和研究論文使用授權(quán)的說明本人完全了解第六屆“飛思卡爾”杯全國大學(xué)生智能汽車邀請賽關(guān)保留、使用技術(shù)報告和研究論文的規(guī)定,即:參賽作品著作權(quán)歸參賽者本人,比賽組委會和飛思卡爾半導(dǎo)體公司可以在相關(guān)主頁上收錄并公開參賽作品的設(shè)計方案、技術(shù)報告以及參賽模型車的視頻、圖像資料,并將相關(guān)內(nèi)容編纂收錄在組委會出版論文集中。參賽隊(duì)員簽名:鈕博文彭大成彭煜聰帶隊(duì)教師簽名:沈世斌日 期:2012-8-12摘要本文介紹了南京師范大學(xué)ALPS車隊(duì)隊(duì)員們在準(zhǔn)備第六屆Freescale智能車大賽過程中的工作成果。智能車的硬件平臺采用帶飛思卡爾的Kinetis產(chǎn)品,軟件平臺為IAR6.3開發(fā)環(huán)境,車模采用大賽組委會統(tǒng)一提供的1:16的仿真越野車模。文中介紹了智能小車控制系統(tǒng)的軟硬件結(jié)構(gòu)和開發(fā)流程。為了提高小車特性,我們對系統(tǒng)進(jìn)行了創(chuàng)造性的優(yōu)化:其一,對轉(zhuǎn)向系統(tǒng)進(jìn)行了標(biāo)定。其二,硬件上采用激光傳感器的方案,軟件上將PID算法、彎道預(yù)判、模糊算法。其三,獨(dú)立設(shè)計了控制電路板,用旋轉(zhuǎn)編碼器作為速度傳感器,大大提高了檢測精度,實(shí)現(xiàn)了速度閉環(huán)控制。其四,充分利用S12單片機(jī)現(xiàn)有模塊進(jìn)行編程,同時無線串口、撥碼開關(guān)、狀態(tài)指示燈等方便了算法調(diào)試。關(guān)鍵字:智能車,激光管,PID控制TOC\o"1-5"\h\z\o"CurrentDocument"第一章引言 1\o"CurrentDocument"1.1賽事介紹 1\o"CurrentDocument"第二章智能車總體技術(shù)概要 3\o"CurrentDocument"第三章賽車機(jī)械結(jié)構(gòu)的調(diào)整 5\o"CurrentDocument"3.1上下排舵機(jī)的安裝調(diào)整 5\o"CurrentDocument"3.2前輪參數(shù)調(diào)整 6\o"CurrentDocument"3后輪差速機(jī)構(gòu)調(diào)整 8\o"CurrentDocument"測速模塊安裝 9PCB的整體安裝 10\o"CurrentDocument"其它機(jī)械調(diào)整 13\o"CurrentDocument"第四章硬件電路設(shè)計 15\o"CurrentDocument"電源模塊設(shè)計 15S12最小系統(tǒng) 16\o"CurrentDocument"電機(jī)驅(qū)動模塊 16\o"CurrentDocument"路線識別電路設(shè)計 17\o"CurrentDocument"串行通訊接口電路 19\o"CurrentDocument"6速度檢測模塊 20\o"CurrentDocument"4.7人機(jī)界面模塊 21\o"CurrentDocument"第五章軟件設(shè)計 23\o"CurrentDocument"1程序流程 23\o"CurrentDocument"5.2工作原理 235.3.PID控制 245.3.1PID 245.3.2PID參數(shù)的整定 24\o"CurrentDocument"5.4控制策略 26\o"CurrentDocument"5.5軟件開發(fā)工具 27\o"CurrentDocument"第六章模型車的主要技術(shù)參數(shù)說明 31\o"CurrentDocument"6.1模型車技術(shù)參數(shù)統(tǒng)計 31\o"CurrentDocument"第七章結(jié)論 33\o"CurrentDocument"1設(shè)計特點(diǎn) 33\o"CurrentDocument"系統(tǒng)存在的問題 33\o"CurrentDocument"改進(jìn)方向 33\o"CurrentDocument"參考文獻(xiàn) 35\o"CurrentDocument"附錄A模型車控制主程序代碼 VI\o"CurrentDocument"附錄B基于雙舵機(jī)傳感器的智能車控制策略的實(shí)現(xiàn) VI第一章引言賽事介紹受教育部高等教育司委托,高等學(xué)校自動化專業(yè)教學(xué)指導(dǎo)分委會負(fù)責(zé)主辦全國大學(xué)生智能車競賽。該項(xiàng)比賽已列入教育部主辦的全國競賽之一。本屆的比賽,首先是在全國八大賽區(qū)進(jìn)行預(yù)選賽,之后取一些優(yōu)秀隊(duì)伍參加總決賽。在比賽中,參賽選手須使用大賽組委會統(tǒng)一提供的競賽車模,推薦采用飛思卡爾16控制器MC9s12XS128作為核心控制單元,自主構(gòu)思控傳感器信號采集處理、控制算法及執(zhí)行、動力電機(jī)驅(qū)動、轉(zhuǎn)向舵機(jī)控制等,完成智能車工程制作及調(diào)試,于指定日期與地點(diǎn)參加場地比賽。參賽隊(duì)伍之名次(成績)由賽車現(xiàn)場成功完成賽道比賽時間為主,技術(shù)方案及制作工程質(zhì)量評分為輔來決定,車模改裝完畢后,尺寸不能超過:250mm寬和400mm長,高度無限制,跑道表面為白色,中心有連續(xù)黑線作為引導(dǎo)線,黑線寬25mm,并且跑道有坡道。方案介紹在方案設(shè)計的過程中,我們參閱了很多兄弟院校的往屆大賽技術(shù)報告,特別是北京科技大學(xué)、杭州電子科技大學(xué),北京理工大學(xué)。在國內(nèi),他們對智能車研究起步的比較早,例如清華大學(xué)首創(chuàng)記憶算法、北京科技大學(xué)創(chuàng)先使用激光管。對于LED組來說,提高小車的速度和穩(wěn)定性,核心問題是如何更早且更準(zhǔn)確的提取到賽道信息,并作出相應(yīng)的動作和判斷。所以我們采取的策略是激光傳感器加人工調(diào)參,共同實(shí)現(xiàn)我們的目標(biāo)。這樣大大提高賽車的前瞻性,使賽車的穩(wěn)定性提高,從而提高總體速度。技術(shù)報告內(nèi)容安排本技術(shù)報告的正文分為四個部分。第一部分是對整個系統(tǒng)實(shí)現(xiàn)方法的一個概要說明,主要內(nèi)容是對整個技術(shù)方案的概述;第二部分是對系統(tǒng)機(jī)械結(jié)構(gòu)的說明,主要介紹系PCB板的固定和安裝、前輪參數(shù)調(diào)整和舵機(jī)的升高等;第三部分是對硬件電路設(shè)計的說明,主要介紹系統(tǒng)傳感器的設(shè)計及其他硬件電路的設(shè)計原理、創(chuàng)新點(diǎn)和實(shí)現(xiàn)過程等;第四部分是對系統(tǒng)軟件設(shè)計部分的說明,主要內(nèi)容是智能模型車設(shè)計中主要用到的控制理論、算法說明及代碼設(shè)計介紹以及開發(fā)工具的應(yīng)用等在這份技術(shù)報告中,我們小組通過對整體方案、電路、算法、調(diào)試、車輛參數(shù)的介紹,比較詳盡地闡述了我們的思想和創(chuàng)意,具體表現(xiàn)在電路的創(chuàng)新設(shè)計,以及算法控制方面的創(chuàng)新想法,在單片機(jī)的實(shí)際調(diào)試中我們克服了很多難題,付出了很多心血。這份報告凝聚著我們的心血和智慧,是我們共同努力后的成果。在準(zhǔn)備比賽的過程中,我們小組成員詳細(xì)學(xué)習(xí)研究了控制策略、模式識別、傳感技術(shù)、汽車電子、電氣、計算機(jī)、機(jī)械等多個學(xué)科的知識,這次磨練對我們書本所學(xué)知識的一次大檢驗(yàn),充分發(fā)揮了隊(duì)員各自的特點(diǎn),很好的鍛煉了我們的實(shí)際動手能力和創(chuàng)新能力,這必將在以后的學(xué)習(xí)工作中受益。第二章智能車總體技術(shù)概要賽車制作的主要思路是利用激光管來提取賽道前方的信息,并將信息采集到K06單片機(jī)AD□和GPIO口,并進(jìn)行濾波等處理。在S12單片機(jī)中利用一定的算法來控制模型車的運(yùn)行狀態(tài)。賽車的控制系統(tǒng)包括電源管理模塊、MCU模塊、路徑識別模塊、電機(jī)驅(qū)動模塊、舵機(jī)控制模塊、轉(zhuǎn)速測量模塊、人機(jī)界面模塊、無線串口傳送模塊等。在整個系統(tǒng)中,由電源管理模塊實(shí)現(xiàn)對其他各模塊的電源管理。其中,對單片一機(jī)、測速電路、無線串,人機(jī)電路提供3.3V電壓,對搖頭舵機(jī)提供6.5V電壓,轉(zhuǎn)向舵機(jī)提供5.5V電壓,對激光管提供3.3V電壓。賽車模型車是由四輪驅(qū)動的,路徑識別模塊則采用激光管傳感器尋跡方案。即路徑識別電路由6路光電發(fā)送與接收管組成。由于賽道中存在軌跡指示黑線,落在黑線區(qū)域內(nèi)的光電接收管接收到反射的光線的強(qiáng)度與白色的賽道不同,進(jìn)而在光電接收管兩端產(chǎn)生不同的電壓值,由此判斷行車的方向。路徑識別模塊會將當(dāng)前采集到的一組電壓值傳遞給MCU模塊。轉(zhuǎn)速測量模塊則安裝在電機(jī)下方,它每個周期反饋一次模型車行駛過程中的瞬時速度。人機(jī)模塊會設(shè)定模型車在行駛過程中一些較重要的參數(shù),如:直道速度、彎道速度,一些重要的P,I參數(shù)等。測量出的瞬時速度將輸入到單片機(jī)中,以幫助分析確定模型車與給定速度進(jìn)行對比通過PID算法來確定下一步的速度、轉(zhuǎn)角等。無線串口傳送模塊會同LABVIEW顯示傳感器檢測值和模型車的速度等參數(shù),以方便對整車進(jìn)行調(diào)試。MCU模塊會根據(jù)按鍵的設(shè)定值,路徑識別模塊采集到的電壓值以及轉(zhuǎn)速測量模塊反饋回的瞬時速度值等綜合分析,采用一定的算法對舵機(jī)和直流電機(jī)進(jìn)行控制。以上即是技術(shù)方案的概要說明。第三章賽車機(jī)械結(jié)構(gòu)的調(diào)整上下排舵機(jī)的安裝調(diào)整轉(zhuǎn)向舵機(jī)轉(zhuǎn)向是整個控制系統(tǒng)中延遲較大的一個環(huán)節(jié),為了減小此時間常數(shù),通過改變舵機(jī)的安裝位置,而并非改變舵機(jī)本身結(jié)構(gòu)的方法可以提高舵機(jī)的響應(yīng)速度。分析舵機(jī)控制轉(zhuǎn)向輪轉(zhuǎn)向的原理可以發(fā)現(xiàn),在相同的舵機(jī)轉(zhuǎn)向條件下,轉(zhuǎn)向連桿在舵機(jī)一端的連接點(diǎn)離舵機(jī)軸心距離越遠(yuǎn),轉(zhuǎn)向輪轉(zhuǎn)向變化越快。這相當(dāng)于增大力臂長度,提高線速度。由于這屆車模原本的位置機(jī)械結(jié)構(gòu)復(fù)雜且拐角較小,不利于過彎時的高速行駛,所以更改舵機(jī)的位置十分必要的。經(jīng)過反復(fù)的實(shí)驗(yàn),我們發(fā)現(xiàn)將舵機(jī)倒立放置來平推前輪效果不錯,這樣既有利于達(dá)到最大角度,而且架設(shè)的重心較低。圖3.1舵機(jī)布局由于我們采用了上排激光傳感器搖頭的設(shè)計方案,因此整個模型車使用了兩個舵機(jī),上排舵機(jī)我們采用了矩形結(jié)構(gòu)作為支架,減小傳動結(jié)構(gòu)與舵機(jī)的距離,來防止賽車行徑中的抖動現(xiàn)象;同時,通過降低搖頭舵機(jī)高度,使之貼近底板達(dá)到車模重心降低,提高賽車的過彎穩(wěn)定性,和過彎最高速。在進(jìn)行反復(fù)的調(diào)試中看出,這種架設(shè)方式是可行的如圖3.2。圖3.2上排舵機(jī)安裝前輪參數(shù)調(diào)整調(diào)試中發(fā)現(xiàn),在賽車過彎時,轉(zhuǎn)向舵機(jī)的負(fù)載會因?yàn)檐囕嗈D(zhuǎn)向角度增大而增大。為了盡可能降低轉(zhuǎn)向舵機(jī)負(fù)載,對前輪的安裝角度,即前輪定位進(jìn)行了調(diào)整。前輪定位的作用是保障汽車直線行駛的穩(wěn)定性,轉(zhuǎn)向輕便和減少輪胎的磨損。前輪是轉(zhuǎn)向輪,它的安裝位置由主銷內(nèi)傾、主銷后傾、前輪外傾和前輪前束等4個項(xiàng)目決定,反映了轉(zhuǎn)向輪、主銷和前軸等三者在車架上的位置關(guān)系。(1)主銷內(nèi)傾是指主銷裝在前軸略向內(nèi)傾斜的角度,它的作用是使前輪自動回正。角度越大前輪自動回正的作用就越強(qiáng)烈,但轉(zhuǎn)向時也越費(fèi)力,輪胎磨損增大:反之,角度越小前輪自動回正的作用就越弱。(2)主銷后傾是指主銷裝在前軸,上端略向后傾斜的角度。它使車輛轉(zhuǎn)彎時產(chǎn)生的離心力所形成的力矩方向與車輪偏轉(zhuǎn)方向相反,迫使車輪偏轉(zhuǎn)后自動恢復(fù)到原來的中間位置上。由此,主銷后傾角越大,車速越高,前輪穩(wěn)定性也愈好。
(3)主銷內(nèi)傾和主銷后傾(如圖3.3)都有使汽車轉(zhuǎn)向自動回正,保持直線行駛的功能。不同之處是主銷內(nèi)傾的回正與車速無關(guān),主銷后傾的回正與車速有關(guān),因此高速時后傾的回正作用大,低速時內(nèi)傾的回正作用大。如圖3.3主銷后傾(4)前輪外傾角對汽車的轉(zhuǎn)彎性能有直接影響,它的作用是提高前輪的轉(zhuǎn)向安全性和轉(zhuǎn)向操縱的輕便性。前輪外傾角俗稱“外八字”,如果車輪垂直地面一旦滿載就易產(chǎn)生變形,可能引起車輪上部向內(nèi)傾側(cè),導(dǎo)致車輪聯(lián)接件損壞。所以事先將車輪校偏一個外八字角度,這個角度約在1°左右。(5)所謂前束是指兩輪之間的后距離數(shù)值與前距離數(shù)值之差,也指前輪中心線與縱向中心線的夾角。前輪前束的作用是保證汽車的行駛性能,減少輪胎的磨損。前輪在滾動時,其慣性力會自然將輪胎向內(nèi)偏斜,如果前束適當(dāng),輪胎滾動時的偏斜方向就會抵消,輪胎內(nèi)外側(cè)磨損的現(xiàn)象會減少如圖3.4o
圖3.4車輪前束經(jīng)過與賽道的磨合,本隊(duì)智能車只對前輪的外傾角進(jìn)行了調(diào)節(jié),其他皆為03.3差速機(jī)構(gòu)的調(diào)整差速機(jī)構(gòu)的作用是在賽車轉(zhuǎn)彎的時候,降低后輪與地面之間的滑動;并且還可以保證在輪胎抱死的情況下不會損害到電機(jī)。當(dāng)車輛在正常的過彎行進(jìn)中(假設(shè):無轉(zhuǎn)向不足亦無轉(zhuǎn)向過度),此時4個輪子的轉(zhuǎn)速(輪速)皆不相同,依序?yàn)椋和鈧?cè)前輪〉外側(cè)后輪〉內(nèi)側(cè)前輪)內(nèi)側(cè)后輪。此次所使用賽車是仿真越野車模,其有前輪差速,中軸差速,和后輪差速。差速器的特性是:阻力越大的一側(cè),驅(qū)動齒輪的轉(zhuǎn)速越低;而阻力越小的一側(cè),驅(qū)動齒輪的轉(zhuǎn)速越高以此次使用的后輪差速器為例,在過彎時,因外側(cè)前輪輪胎所遇的阻力較小,輪速便較高;而內(nèi)側(cè)前輪輪胎所遇的阻力較大,輪速便較低。差速器的調(diào)整中,過松過緊都會使差速器性能降低,轉(zhuǎn)彎時阻力小的車輪會打滑,從而影響賽車的過彎性能。好的差速機(jī)構(gòu),在電機(jī)不轉(zhuǎn)的情況下,右輪向前轉(zhuǎn)過的角度與左輪向后轉(zhuǎn)過的角度之間誤差很小,不會有遲滯或者過轉(zhuǎn)動情況發(fā)生。中軸差速由電機(jī)帶動,主要用來傳動,而前輪后輪的差速起到了分擔(dān)動力,使前后輪的速度差變小,提高賽車的機(jī)械穩(wěn)定性。經(jīng)過試驗(yàn),發(fā)現(xiàn)四輪驅(qū)動對賽車的高速過彎有明顯的提高穩(wěn)定性的作用,所以我們?nèi)耘f采用車模原本的四輪驅(qū)動3.4測速模塊安裝我們采用的是旋轉(zhuǎn)編碼器測速,編碼器旋轉(zhuǎn)一周回產(chǎn)生200個脈沖,這已經(jīng)充分滿足的賽車的檢測精度,從而提高了賽車高速時速度控制的穩(wěn)定性,大大減小了檢測誤差。安裝方式如圖3.5。圖3.5安裝方式3.5PCB的整體安裝從開始設(shè)計賽車我們就非常注重賽車的中心配置,盡量降低賽車的重心是我們重點(diǎn)之一。結(jié)合上一次的參賽經(jīng)驗(yàn),賽車整體由主板,上排,下排,人機(jī),CPU,驅(qū)動六塊PCB板組合而成,由于將舵機(jī)改至前端之后,賽車的中間空出的位置用來放置電路板,并且在主板中間鏤空4個洞,方便安裝搖頭舵機(jī)。驅(qū)動模塊和CPU分別固定在主板的左右兩側(cè)離水平面距離為2.5cm。下排傳感器通過兩個螺釘固定在賽車的最前方離地面距離為5cm,上排則固定在主板的正上方,從而避免了傳感器前伸帶來的一些缺點(diǎn)。電路板的安裝如圖3.6。圖3.6電路板的安裝第三章賽乍機(jī)械結(jié)構(gòu)的調(diào)整6其它機(jī)械調(diào)整另外,在模型車的機(jī)械結(jié)構(gòu)方面還有很多可以改進(jìn)的地方,比如說車輪、避震、底盤、車身高度等。輪胎的長期的使用中易產(chǎn)生磨損現(xiàn)象,大大影響了車子的抓地力,從而影響車子的加減速的性能,因此在調(diào)試了一段時間后我們都會去輪胎的輪廓進(jìn)行人為的修正,并達(dá)到了良好的效果。此外,我們還去除了本款車摸的避震結(jié)構(gòu),由于光電車對于激光抖動的影響的特別嚴(yán)重,在賽車行駛中,難免會有顛頗,如果裝有避震會使激光隨車體前后擺動,影響檢測的穩(wěn)定性,所以采取剛性的車體,在行駛過程中是很有利于激光管的發(fā)射和接收的穩(wěn)定。車模采用電機(jī)驅(qū)動,由競賽主辦方提供。齒輪差數(shù)對車模的驅(qū)動能力有很大的影響。齒輪傳動部分安裝位置的不恰當(dāng),會大大增加電機(jī)驅(qū)動后輪的負(fù)載,從而影響到最終成績。調(diào)整的原則是:兩傳動齒輪軸保持平行,齒輪間的配合間隙要合適,過松容易打壞齒輪,過緊又會增加傳動阻力,白白浪費(fèi)動力;傳動部分要輕松、順暢,容易轉(zhuǎn)動,不能有卡住或遲滯現(xiàn)象.齒輪傳動機(jī)構(gòu)的調(diào)整就是調(diào)整電機(jī)輸出軸的齒輪與后輪軸上齒輪之間的耦合程度。當(dāng)耦合比較松時由于兩齒輪之間存在較大的縫隙,齒輪轉(zhuǎn)動時會產(chǎn)生很大的兩齒輪之間的碰撞聲音,這樣會大大增加齒輪的磨損。當(dāng)耦合的比較緊時齒輪之間的摩擦力變大,這樣就會使電機(jī)分出一部分驅(qū)動力克服齒輪之間的摩擦力做功,電機(jī)的負(fù)載無形中就增強(qiáng),從而減小了電機(jī)對后輪的驅(qū)動能力。為了使齒輪的調(diào)整比較適當(dāng),經(jīng)過多次的調(diào)試,我們發(fā)現(xiàn)用聽齒輪之間的聲音的辦法來調(diào)整其耦合程度效果不錯。當(dāng)齒輪耦合較松或兩齒輪之間不平行時的聲音很響,也就是齒輪之間撞擊的聲音很大,當(dāng)齒輪耦合比較緊時聲音很沉悶并且遲滯,最佳狀態(tài)是基本上沒有撞擊的聲音,聲音清脆并且沒有遲滯現(xiàn)象。第四章硬件電路設(shè)計4.1電源模塊設(shè)計在整個系統(tǒng)中我們一共使用了四片電源芯片,對賽車各個模塊進(jìn)行供電如框圖4.1o圖4.1電源設(shè)計框圖在電源的設(shè)計中根據(jù)以往的經(jīng)驗(yàn),電機(jī)等工作是會對單片機(jī)產(chǎn)生干擾,因此我們給單片進(jìn)行了獨(dú)立的隔離電源供電(如圖4.2),同時為了給上下排傳感器提供足夠的功率都分別用一個1117進(jìn)行供電如圖4.3。
圖4.2隔離電源塊圖4.3外部電源2K60最小系統(tǒng)以K60為核心的單片機(jī)系統(tǒng)的硬件電路設(shè)計主要包括以下幾個部分:時鐘電路、電源電路、復(fù)位電路、J-Link接口[1]。其中各個部分的功能如下:(1)時鐘電路給單片機(jī)提供一個外接石英晶振。(2)電源電路主要是給單片機(jī)提供3.3V電源。(3)復(fù)位電路在電壓達(dá)到正常值時給單片機(jī)一個復(fù)位信號。J-Link接口讓用戶可以通過J-Link頭向單片機(jī)下載和調(diào)試程序。為了減輕最小系統(tǒng)板的重量,我們根據(jù)自己的需要對電路板進(jìn)行了重新的設(shè)計,主要的改動就是將電路板的體積減小,并只引出一些常用的引腳,最后定型大小為5.3cm*5.3cm(如圖4.4)。其它電路未進(jìn)行改變。圖4.4單片機(jī)最小系統(tǒng)
電機(jī)驅(qū)動模塊綜合我們賽車的速度要求,以及穩(wěn)定性要求最終我們選用了BTS7960作為電機(jī)驅(qū)動模塊,為減小BTS7960的內(nèi)阻,電機(jī)頻繁調(diào)速時發(fā)熱嚴(yán)重,因此在實(shí)際的使用中我們采用了4片BTS7960并聯(lián)(如圖4.6)驅(qū)動的辦法,提高了驅(qū)動能力,而且發(fā)熱現(xiàn)象也大大改善。圖4.6驅(qū)動模塊路線識別電路設(shè)計為了準(zhǔn)確并提前獲得賽道信息,所以必須選擇合適的路面信息檢測傳感器。目前常用的尋線技術(shù)有:光電尋線、磁誘導(dǎo)尋線和攝像頭尋線。光電尋線一般由多對紅外收發(fā)管組成,通過檢測接收到的反射光強(qiáng),判斷黑白線。在這種方案中,一對收發(fā)管只能檢測一個點(diǎn)的信息,精度有限。但其優(yōu)點(diǎn)是電路簡單,處理方便。攝像頭尋線通過圖像采集,動態(tài)拾取路徑信息,并對各種情況進(jìn)行分析。它具有信息量大,能耗低的優(yōu)點(diǎn),但對數(shù)據(jù)的處理相對復(fù)雜。通過對以往屆比賽的研究,我們決定還是從光電管入手。由于簡易的紅外管由于線性度不好而且功耗較大,在實(shí)際的應(yīng)用中并不能提供大前瞻,無法提前獲取賽道信息。因此我們研究決定集中盡力研究激光傳感器,經(jīng)過一個多月的反復(fù)調(diào)試,驗(yàn)證最終確定了電路,并基本達(dá)到了之前的設(shè)計要求。要提高速度并保證在入彎時不會沖出跑道,就必須增加傳感器的“視野”,以便及時減速。因此我們將上排傳感器設(shè)計成搖頭形式,從而大大增寬了視野,同時傳感器數(shù)目只控制在8個。由于臨近發(fā)射管對接收管會有較大干擾,所以經(jīng)過反復(fù)試驗(yàn)后我們采用了間隔控制(如圖4.7),來減弱相鄰管子之間的干擾,并取得了良好的效果。rHHHhHrnlnnnHh圖4.7激光管工作原理總體俯視圖如圖4.8。
串行通訊接口電路串行通訊接口電路的作用是使得MCU可以與PC機(jī)的RS-232串行接口連接并進(jìn)行通訊。RS-232是異步串行通信中應(yīng)用最早,也是目前應(yīng)用最為廣泛的標(biāo)準(zhǔn)串行總線接口之一,它有多個版本,其中應(yīng)用最廣的是修訂版C,即RS-232CoRS-232原是基于公用電話網(wǎng)的一種串行通信標(biāo)準(zhǔn),傳輸距離一般不超過15m。
6速度檢測模塊為了提高瞬時速度提取的準(zhǔn)確度,最終我們決定使用旋轉(zhuǎn)編碼器(如圖4-9)作為速度檢測模塊,編碼器可以再5-12V之間安全工作,而且外圍電路簡單,但是價格比較昂貴。
7人機(jī)界面模塊鑒于比賽的過程和平時調(diào)試時需要變化賽車的一些參數(shù),我們設(shè)計了一個旋轉(zhuǎn)開關(guān)和液晶組成的人機(jī)界面,在平時的調(diào)試中發(fā)揮了很大的作用圖4.10人機(jī)界面圖4.11人機(jī)界面原理圖第五章軟件設(shè)計程序流程在賽車的控制中主要用到K60芯片中的FTM模塊,PIT模塊、GPIO模塊以及UART模塊等模塊化設(shè)計。FTM模塊主要用來控制舵機(jī)和電機(jī)的運(yùn)轉(zhuǎn);PIT模塊主要是用在了測速模塊和數(shù)據(jù)采集,捕捉中斷并計算瞬時速度;GPIO模塊主要是用來分配給按鍵和激光管的觸發(fā)和輸入;UART模塊主要用在無線串口傳送模塊。圖5.1程序流程圖工作原理由于往屆競賽對光電傳感器排布方式研究已經(jīng)比較深入,傳統(tǒng)的“一”字型排布方式在眾多排布方式中效果顯著,是最常用的一種排布方式。但是由于本次比賽首次采用雙線為了能適應(yīng)賽道使用內(nèi)八排布方式控制器設(shè)置了快速的控制周期,在每個運(yùn)算周期內(nèi),控制器即時地得到智能車車速以及傳感器采樣來的道路信號,經(jīng)過控制算法的計算后,控制單元輸出相應(yīng)的前輪控制轉(zhuǎn)角以及電機(jī)占空比的值,PWM脈寬信號傳至前輪舵機(jī)以及驅(qū)動電機(jī),從而實(shí)現(xiàn)一個周期的控制。3.1PID控制5.4流程圖PID控制策略其結(jié)構(gòu)簡單,穩(wěn)定性好,可靠性高,并且易于實(shí)現(xiàn)。其缺點(diǎn)在于控制器的參數(shù)整定相當(dāng)繁瑣,需要很強(qiáng)的工程經(jīng)驗(yàn)。相對于其他的控制方式,在成熟性和可操作性上都有著很大的優(yōu)勢。所以最后我們選擇了PID的控制方式。在小車跑動中,本方案中上排舵機(jī)舵機(jī)轉(zhuǎn)角控制采用位置式的PID控制,下排舵機(jī)采用了位置式PD控制,速度閉環(huán)控制采用了增量式PID控制。在本方案中,使用試湊法來確定控制器的比例、積分和微分參數(shù)。3.2PID參數(shù)的整定試湊法是通過閉環(huán)試驗(yàn),觀察系統(tǒng)響應(yīng)曲線,根據(jù)各控制參數(shù)對系統(tǒng)響應(yīng)的大致影響,反復(fù)試湊參數(shù),以達(dá)到滿意的響應(yīng),最后確定PID控制參數(shù)。試湊不是盲目的,而是在控制理論指導(dǎo)下進(jìn)行的。在控制理論中已獲得如下定性知識:(1)比例部分在模擬PID控制器中,比例環(huán)節(jié)的作用是對偏差瞬間作出反應(yīng)。偏差一旦產(chǎn)生控制器立即產(chǎn)生控制作用,使控制量向減少偏差的方向變化。控制作用的強(qiáng)弱取決于比例系數(shù)KP,比例系數(shù)越大,控制作用越強(qiáng),則過渡過程越快,控制過程的靜態(tài)偏差也就越??;但是KP越大,也越容易產(chǎn)生振蕩,破壞系統(tǒng)的穩(wěn)定性。故而,比例系數(shù)選擇必須恰當(dāng),才能過渡時間少,靜差小而又穩(wěn)定的效果。(2)積分部分從積分部分的數(shù)學(xué)表達(dá)式可以知道,只要存在偏差,則它的控制作用就不斷的增加;只有在偏差=0時,它的積分才能是一個常數(shù),控制作用才是一個不會增加的常數(shù)。可見,積分部分可以消除系統(tǒng)的偏差。積分環(huán)節(jié)的調(diào)節(jié)作用雖然會消除靜態(tài)誤差,但也會降低系統(tǒng)的響應(yīng)速度,增加系統(tǒng)的超調(diào)量。積分常數(shù)越TI大,積分的積累作用越弱,這時系統(tǒng)在過渡時不會產(chǎn)生振蕩;但是增大積分常數(shù)TI會減慢靜態(tài)誤差的消除過程,消除偏差所需的時間也較長,但可以減少超調(diào)量,提高系統(tǒng)的穩(wěn)定性。當(dāng)Ti較小時,則積分的作用較強(qiáng),這時系統(tǒng)過渡時間中有可能產(chǎn)生振蕩,不過消除偏差所需的時間較短。所以必須根據(jù)實(shí)際控制的具體要求來確定Ti。(3)微分部分實(shí)際的控制系統(tǒng)除了希望消除靜態(tài)誤差外,還要求加快調(diào)節(jié)過程。在偏差出現(xiàn)的瞬間,或在偏差變化的瞬間,不但要對偏差量做出立即響應(yīng)(比例環(huán)節(jié)的作用),而且要根據(jù)偏差的變化趨勢預(yù)先給出適當(dāng)?shù)募m正。為了實(shí)現(xiàn)這一作用,可在PI控制器的基礎(chǔ)上加入微分環(huán)節(jié),形成PID控制器。微分環(huán)節(jié)的作用使阻止偏差的變化。它是根據(jù)偏差的變化趨勢(變化速度)進(jìn)行控制。偏差變化的越快,微分控制器的輸出就越大,并能在偏差值變大之前進(jìn)行修正。微分作用的引入,將有助于減小超調(diào)量,克服振蕩,使系統(tǒng)趨于穩(wěn)定,特別對高階系統(tǒng)非常有利,它加快了系統(tǒng)的跟蹤速度。但微分的作用對輸入信號的噪聲很敏感,對那些噪聲較大的系統(tǒng)一般不用微分,或在微分起作用之前先對輸入信號進(jìn)行濾波。微分部分的作用由微分時間常數(shù)Td決定。Td越大時,則它抑制偏差變化的作用越強(qiáng);Td越小時,則它反抗偏差變化的作用越弱。微分部分顯然對系統(tǒng)穩(wěn)定有很大的作用。適當(dāng)?shù)剡x擇微分常數(shù)Td,可以使微分作用達(dá)到最優(yōu)。試湊法的具體實(shí)施過程為:(1)整定比例部分,將比例系數(shù)由小變大,并觀察相應(yīng)的系統(tǒng)響應(yīng),直至得到反應(yīng)快、超調(diào)小的響應(yīng)曲線。如果系統(tǒng)靜差小到允許范圍,響應(yīng)曲線已屬滿意,那么只需比例控制即可,由此確定比例系數(shù)。(2)如果在比例控制基礎(chǔ)上系統(tǒng)靜差不能滿足設(shè)計要求,則加入積分環(huán)節(jié),整定時首先置積分時間(為很大值,并將經(jīng)第一步整定得到的比例系數(shù)略微縮?。ㄈ缈s小為原值的0.8),然后減小積分時間,使得在保持系統(tǒng)良好動態(tài)的情況下,靜差得到消除,在此過程中,可根據(jù)響應(yīng)曲線的好壞反復(fù)改變比例系數(shù)和積分時間,以期得到滿意的控制過程,得到整定參數(shù)。(3)若使用比例積分控制消除了靜差,但動態(tài)過程經(jīng)反復(fù)調(diào)整仍不能滿意,則可加微分環(huán)節(jié),構(gòu)成比例、積分、微分控制器。在整定時,先置微分時間I,為零,在第二步整定基礎(chǔ)上增大刀,同樣地相應(yīng)改變比例系數(shù)和微分時間,逐步試湊以獲得滿意的調(diào)節(jié)效果和控制參數(shù)。控制策略在路徑采集回來的信息中,如果中間傳感器長時間對準(zhǔn)中間黑線,我們既可以認(rèn)為小車現(xiàn)在正在行駛在長直道上,因此可以加速至高速狀態(tài)。當(dāng)小車連續(xù)在傳感器左部分檢測到黑線,則可以認(rèn)為小車在左彎道的位置。這樣,我們就可以檢測判斷到現(xiàn)在小車所處的位置,并做出相應(yīng)的程序響應(yīng),程序中事先限制了車子的最高速和最低速。在速度檢測的控制部分,我們是采用旋轉(zhuǎn)編碼器采集回來的脈沖數(shù)字進(jìn)行計算,將其轉(zhuǎn)換成為與后輪圈數(shù)相對應(yīng)的一個參數(shù)值,根據(jù)此參數(shù)值我們能夠
很清晰的看出來現(xiàn)在這個狀態(tài)時,電機(jī)的轉(zhuǎn)速為多少,從而可以很快地?fù)Q算出當(dāng)前時刻的速度情況。軟件開發(fā)工具此次智能車大賽的軟件開發(fā)平臺為IAR公司的IAR46.3開軟件。其使用界面如圖5.5所示:況FM(? *糕叁金況FM(? *糕叁金Dof付儼圖5.5調(diào)試界面IAR的功能非常強(qiáng)大,可用于絕大部分單片機(jī)、嵌入式系統(tǒng)的開發(fā)。用戶可在新建工程時將芯片的類庫添加到集成環(huán)境開發(fā)環(huán)境中,工程文件一旦生成就是一個最小系統(tǒng),用戶無需再進(jìn)行繁瑣的初始化操作,就能直接在工程中添加所需的程序代碼。在使用J-Link的調(diào)試過程(如圖5.6)中我們能進(jìn)行很有效的一些操作如監(jiān)視寄存器狀態(tài)、修改PC指針、設(shè)置斷點(diǎn)等,這樣能快速地幫助我們找到軟件或硬件的問題。
口圖5.6BDM調(diào)試在軟件的調(diào)試中我們還充分運(yùn)用了無線模塊,我們讓單片機(jī)實(shí)時的發(fā)揮傳感器的各種狀態(tài),包括誤判是傳感器的值,上坡時,過彎時的一些參數(shù),結(jié)合車體的狀態(tài)進(jìn)行參數(shù)或閥值得調(diào)節(jié),這種方法大大簡化了我們的工作,提高了效率。在賽車的運(yùn)行過程中我們針對不同的情況使人機(jī)界面上的數(shù)碼管顯示不同的數(shù)值,從而判斷賽車在整個行進(jìn)過程中是否出現(xiàn)誤判。第六章模型車的主要技術(shù)參數(shù)說明6.1模型車技術(shù)參數(shù)統(tǒng)計車模的各項(xiàng)參數(shù)歸類如下表6.1表6.1賽車技術(shù)參數(shù)項(xiàng)目參數(shù)路徑檢測方式激光傳感器車模幾何尺寸(長,寬,高)(mm)380/190/150車模平均電流(勻速狀態(tài))1750mA電容總?cè)萘竣臚)1900四傳感器種類及個數(shù)3種3個新增舵機(jī)個數(shù)1個賽道信息檢測空間精度(mm)20mm賽道信息檢測頻率(次/秒)100次/秒主要集成電路種類/數(shù)量5種/6塊車模重量(帶電池)(Kg)1.4Kg第七章結(jié)論設(shè)計特點(diǎn)(1)在本次的智能車設(shè)計中我們查閱了很多資料,并結(jié)合以往的比賽經(jīng)驗(yàn)我們使用了激光傳感器來提取道路信息,從而增加了前瞻,將智能車的速度和穩(wěn)定性都提高了一個新的臺階。(2)根據(jù)平時的調(diào)試經(jīng)驗(yàn),賽車在行進(jìn)過程中傳感器常常會出現(xiàn)檢測盲區(qū),雖然軟件上可以解決,但賽車的穩(wěn)定性降低了,因此我們設(shè)計了上排傳感器自動循線,怎大了傳感器的視野,并取得了良好的效果。(3)針對舵機(jī)響應(yīng)的速度,我們隊(duì)舵機(jī)的左右連桿進(jìn)行改造,增大了力臂,從而加快了相應(yīng)速度(4)為了使單片機(jī)的工作與其它功率器件和電機(jī)的工作隔離開,在電源的設(shè)計中我們引入了隔離電源模塊,使MCU得工作是相對獨(dú)立的。系統(tǒng)存在的問題盡管在設(shè)計中我們作了很大的努力,但是由于時間緊迫以及缺乏經(jīng)驗(yàn)等原因,本系統(tǒng)仍然存在著一些問題,主要有以下幾點(diǎn):(1)系統(tǒng)控制算法采用經(jīng)典的PID算法??梢钥紤]更加高級的控制算法以改進(jìn)系統(tǒng)性能。(2)由于賽車電路由不同的模塊組成,在小車上出現(xiàn)連線過多。(3)在上排傳感器的設(shè)計中由于時間和經(jīng)驗(yàn)的不足,上排傳感器重量較大,對賽車的高速行駛造成了一定的影響。改進(jìn)方向在條件允許的情況下,本系統(tǒng)可以做以下幾個方面的改進(jìn):(1)研究更加可靠的激光管電路,并減輕傳感器的重量,增大檢測精度。(2)k60單片機(jī)擁有獨(dú)具特色的FlexMemory,很方便用來實(shí)現(xiàn)內(nèi)存最優(yōu)化的分配。FlexMemory的實(shí)現(xiàn)將有利于系統(tǒng)性能的大幅度提升。(3)在畫PCB板時,應(yīng)當(dāng)注意插針的布局,有效地減少電路之間的連線的長度,使電路整潔。參考文獻(xiàn)[1]邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社,2004[2]康華光.模擬電子技術(shù)基礎(chǔ).北京:高等教育出版社,2001[3]閻石.數(shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社,1998[4]張宇河,董寧.計算機(jī)控制系統(tǒng).北京:北京理工大學(xué)出版社,2002[5]譚浩強(qiáng).C程序設(shè)計[M].北京:清華大學(xué)出版社,2001[6]侯國屏,王坤,葉齊鑫.LabVIEW7.1編程與虛擬儀器設(shè)計[M].北京:清華大學(xué)出版社,2005HCS12SerialCommunicationInterface(SCI)BlockGuideV02.05S12SCIV2/DMetrowerks.IDEHelpforCodeWarriorPlug-inforMotorola.MetrowerksSemiconductor,Inc.,2005[9]周斌,李立國,黃開勝.智能車光電傳感器布局對路徑識別的影響研究.電子產(chǎn)品世界,2006.5[10]卓晴,黃開勝,邵貝貝,學(xué)做智能車[M].北京:北京航天航空出版社,2007[11]江思敏等.Protel電路設(shè)計[M].北京?清華大學(xué)出版社.2002附錄A模型車控制主程序代碼附錄A模型車控制主程序代碼// *// IA % pAu: isr.c*// Ep A 4- :OD 1Iz!A 1Ay3I*// EOOY'6N§?EE%6"1uQlEeE14Ipl3EpN6EO2011Ae#include"includes.h'1#include"DataDefine.hintStartFlag=O;intopp_time=0;intF_time=0;uint8T=0;//la^OyOAf--^?AE±,?O,Aeuint8T=0;#defineLED_0_UGPIOD_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(0));#defineLED_0_DGPIOD_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(3));#defineLED_1_UGPIOD_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(1));#defineLED_1_DGPIOD_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(4));#define LED_2_UGPIOD_PDOR1=#define LED_2_UGPIOD_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(0)IGPIO_PIN(1));TOC\o"1-5"\h\z#define LED_2_D GPIOD_PDOR 1=GPIO_PDOR_PDO(GPIO_PIN(3)IGPIO_PIN(4));#defineLED_3_UGPIOD_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(2));#defineLED_3_DGPIOD.PDOR1=GPIO_PDOR_PDO(GPIO_PIN(5));#define LED_4_U GPIOD_PDOR 1=GPIO_PDOR_PDO(GPIO_PIN(2)IGPIO_PIN(0));#define LED_OFF_U GPIOD_PDOR &=~GPIO_PDOR_PDO(GPIO_PIN(0)IGPIO_PIN(1)IGPIO_PIN(2));#define LED_OFF_D GPIOD_PDOR &=~GPIO_PDOR_PDO(GPIO_PIN(3)IGPIO_PIN(4)IGPIO_PIN(5));//#defineAD_OUT_LeftOGPIOD_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(6));//#defineAD_OUT_LeftlGPIOD_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(7));//#defineAD_OUT_RightOGPIOA_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(4));//#defineAD_OUT_RightlGPIOA_PDOR1=GPIO_PDOR_PDO(GPIO_PIN(5));voiddelay_us(inti)(while(i—)asm("nop");asm(^nop11);-vm-asm("nopM);asm(nnopn);asm("nop");asm(nnopn);asm("nopH);asm(nnop,f);asm("nop',);asm(t,nopt,);asm("nop");asm(,,nopn);asm(Mnopn);asm(Hnopn);asm(”nop”);asm(“nop”);asm("nop");asm(,,nopn);asm("nop");asm(nnopn);asm("nop");asm(nnop");asm("nop");asm(t,nopt,);asm("nop");asm(Mnop;asm("nop',);asm("nopn);asm("nop',);asm(t,nopt,);asm("nop");asm(nnopn);asm("nop");asm(nnopn);asm("nop");asm(nnopn);asm("nop");asm(nnopn);asm("nop");asm(nnopn);asm("nop");asm(“iK)p");asm("nop");asm(nnop;asm("nopH);asm(t,nopt,);asm("nop");asm(nnopM);asm("nop");asm("nop");asm("nop");asm(nopT,);asm("nop");asm(“nop”);asm("nop");asm("nop");asm("nop");asm(°nop°);asm("nop");asm("nop");asm(',nopn);asm("nopn);asm("nop");asm(Mnopn);asm(HnopM);asm(MnopH);asm("nopn);asm(,,nopn);asm("nop");asm(nnopn);asm("nop");asm("nop");asm("nop");asm("nopn);asm("nop");asm(nnopn);asm("nopH);asm("nop*1);asm(HnopM);asm(MnopH);asm("nop");asm(MnopH);asm(nnopn);asm("nopn);asm(HnopK);asm(Hnopn);asm(nnopn);asm(MnopH);asm(',nopn);asm("nopn);asm("nop");asm(nnopn);asm(“nop”);asm("nop”);asm("nopH);asm(,,nopH);asm("nop");asm(nnopn);asm(nnopn);asm("nopn);})functionname:minfunctioneffect:OOXTDiOpintmin(intx,inty)if(x<=y)retum(x);elseretum(y);functionname:maxfunctioneffect:OOXiz6Op qintmax(intx,inty){if(x<=y)retum(y);elseretum(x);}voidsample(void)LED_OFF_ULED_OFF_DLED_0_ULED_0_Ddelay_us(Light/3);Data_left[0][0J((GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_right[OJ[OJ((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1));Down_Data_left[01[0]((GPIO_PDIR_REG(PTB_BASE_PTR)?9)&(0xl));Down_Data_right[0][0J((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));Data_left[0][5]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));Data_right[0][5]((GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));Down_Data」eft[0][5]((GPIO_PDIR_REG(PTB_BASE_PTR)?9)&(0x1));Down_Data_rightL0][5]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));delay_us(Light/3);Data_left[l][01((GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_right[l][01((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1));Down_Data_left[1][0]((GPIO_PDIR_REG(PTB_BASE_PTR)?9)&(0xl));Down_Data_right[l][0]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));Data_left[l][5]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));Data_right[lJ[5]((GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));Down_Data_leftl1][5]((GPIO_PDIR_REG(PTB_BASE_PTR)?9)&(0x1));Down_Data_right[l][5]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));delay_us(Light/3);Data_left[2][01((GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_right[2][0]((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0xl));Down_Data_leftl2][0]((GPIO_PDIR_REG(PTB_BASE_PTR)?9)&(0x1));Down_Data_right[2][0]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));Data_left[2][5]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));Data_right[2][5]((GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));-xni-Down_Data_leftl2J[5]((GPI0_PDIR_REG(PTB_BASE_PTR)?9)&(0x1));Down_Data_right[2][5]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));LED_OFF_ULED_OFF_Ddelay_us(100);if((DataJeftl0]l0J+Data_leftLl]l0J+DataJeft[2][0J)>=2)(Data_left_F[O]=l;)else{Data_left_F[O]=O;)ifi((Data_right[O][O]+Data_right[1][0]+Data_right[2][0])>=2)(Data_right_F[0]=l;}elseData_right_F[OJ=0;)if( (Down_Data」eft⑼[0]+ Down_Data_left[1][0]+Down_Data」eft⑵[0])>=2){Down_Data_left_F[0]=1;|else|Down_Data_left_F[0]=0;}Down_Data_right[1][0]+if( (Down_Data_right[0][0]+Down_Data_right[1][0]+Down_Data_right⑵⑼)>=2)(Down_Data_right_F[0]=1;}elseDown_Data_right_F[0]=0;if((Data_leftlOJl5J+DataJeftll][5J+Data_left[2][5J)>=2)Data_left_F[5J=l;}else(Data_left_F[51=0;}if((Data_right[0][5]+Data_right[l][5]+Data_right[2][5])>=2)(Data_right_F[5]=l;}else{Data_right_F[5J=0;|if( (Down_Data_left[0][5]+ Down_Data_left[1][5]+Down_DataJeft[2][5])>=2)(Down_Data_left_F[5]=1;}else(Down_Data_left_F[5]=0;)Down_Data_right[1]Down_Data_right[1][5]+Down_Data_right[2][5])>=2)(Down_Data_right_F[5]=1;)else(Down_Data_right_F[5]=0;}LED_1_ULED_1_Ddelay_us(Light/3);Data_left[O][l]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1)(GPIO_PDIR_REG(PTC_BASE_PTR)?ll)&(Ox1)(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_right[OJ[l]((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(Oxl)(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1)(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));Down_Data_left[0][1]((GPI0_PDIR_REG(PTB_BASE_PTR)?9)&(0x1));Down_Data_right[0][1]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));delay_us(Light/3*l);Data_left[l][l]TOC\o"1-5"\h\z((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(Oxl));Data_right[l][l] =((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));Down_Data_left[1][1] =((GPI0_PDIR_REG(PTB_BASE_PTR)?9)&(Oxl));Down_Data_right[1][1]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));delay_us(Light/3*1);TOC\o"1-5"\h\zData_left[2][l] =((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?ll)&(Ox1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(Oxl));Data_rightr2][l] =((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));Down_Data」eft[2][l] =((GPI0_PDIR_REG(PTB_BASE_PTR)?9)&(0x1));Down_Data_right[2][l]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));LED_OFF_ULED_OFF_Ddelay_us(100);if((Data_left[O][1]+DataJeft[l][1]+DataJeft[2][1])>=2)(Data_left_F[l]=l;elseData_left_F[1]=0;)if((Data_rightfO][l]+Data_right[1][1]+Data_right[2][1])>=2)(Data_right_F[1]=1;}elseData_right_F[1]=0;}Down_Data_left[1][1]+if(( Down_Data_left[01[l]+Down_Data_left[1][1]+Down_Data_left[2][1])>=2)Down_Data_left_F[1]=1;}elseDown_Data_left_F[1]=0;if( (Down_Data_right[0][l]+ Down_Data_right[1][1]+Down_Data_right[2][1])>=2)Down_Data_right_F[1]=1;)else(Down_Data_right_F[l]=0;)LED_2_ULED_2_Ddelay_us(Light/3);TOC\o"1-5"\h\zData_left[0][2] =((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_right[0][2] =((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));Down_Data」eft⑼⑵ =((GPI0_PDIR_REG(PTB_BASE_PTR)?9)&(Oxl));Down_Data_right[0][2] =((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));deiay_us(Light/3);Data_left[l][2] =((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?ll)&(Ox1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_right[l][2] =((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));Down_Data_left[l][2]((GPI0_PDIR_REG(PTB_BASE_PTR)?9)&(0x1));Down_Data_right[l][2]((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));delay_us(Light/3);TOC\o"1-5"\h\zData_left[2][2] =((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(Oxl));Data_right[2][2] =((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));Down_Data_left[2][2] =((GPI0_PDIR_REG(PTB_BASE_PTR)?9)&(Oxl));Down_Data_right[2][21((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1));LED_OFF_LJLED_OFF_Ddelay_us(100);if((Data_left[01[2]+Data_left[ll[2]+Data_left[2][21)>=2)(Data_left_F[2]=l;}else(Data_left_F[21=0;}if((Data_right[O][2]+Data_right[1][2]+Data_right[2][2])>=2)Data_right_F[2]=l;}elseData_right_F[2]=0;)if( (Down_Data_left[0][2J+ Down_Data_left[1][2]+Down_Data_left[2J[2])>=2)(Down_Data」eft_F[2]=1;)elseDown_Data_left_F[2]=0;if( (Down_Data_right[01[2]+ Down_Data_right[1][2]+Down_Data_right[2][2])>=2)(Down_Data_right_F[2]=1;)elseDown_Data_right_F[2]=0;LED_3_ULED_3_DdeIay_us(Light/3);TOC\o"1-5"\h\zData_left[0][3] =((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_rightlO][3] =((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(Oxl));delay_us(Light/3);Data_left[l][3] =((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_right[l][3] =((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));delay_us(Light/3);Data_left[2][3] =((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(Oxl));
TOC\o"1-5"\h\zData_rightl2][3] =((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(Oxl));LED_OFF_ULED_OFF_Ddelay_us(100);if((Data_leftlO][3]+Data_left[l][3J+DataJeft[2][3])>=2)(Data_left_F[3]=l;}else{Datableft_F[3]=0;|if((Data_right[0][3]+Data_right[l][3]+Data_right[2][3])>=2)Data_right_F[3]=1;}elseData__right_F[3]=0;}if((Down_Data」if((Down_Data」eft[0][3]+Down_Data_left[1][3]+Down_Data_left[2][3])>=2)Down_Data_left_F[3]=l;)else(Down_Data」eft_F[3]=0;}Down_Data_right[1][3]+if(( Down_Data_right[0][3]+Down_Data_right[1][3]+Down_Data_right[2][3])>=2)(Down_Data_right_F[3]=1;}else(Down_Data_right_F[3]=0;}LED_4_Udelay_us(Light/3);Data_left[0][4J=((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1)& (GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_rightlOJ[4J=((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1)& (GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(Oxl) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));delay_us(Light/3);Data_left[l][4J=((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1)TOC\o"1-5"\h\z& (GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_right[l][4]=((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1)& (GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(Oxl));deIay_us(Light/3);Data_left[2][4J=((GPIO_PDIR_REG(PTC_BASE_PTR)?10)&(0x1)& (GPIO_PDIR_REG(PTC_BASE_PTR)?11)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?12)&(0x1));Data_rightL2][4J=((GPIO_PDIR_REG(PTC_BASE_PTR)?13)&(0x1)& (GPIO_PDIR_REG(PTC_BASE_PTR)?16)&(0x1) &(GPIO_PDIR_REG(PTC_BASE_PTR)?17)&(0x1));LED_OFF_ULED_OFF_Dif((Data」eft[O]⑷+Data」eft[l][4]+Data」eft⑵[4])>=2)(Data_left_F[4]=l;)else(Data_left_F[4]=0;
if((Data_right[0][4]+Data__right[1][4]+Data_right[2][4])>=2)Data_right_F[41=l;)else(Data_right_F[4]=0;if( (Down_Data」eft[0][4]+Down_Data」eft⑵[4])>=2)(Down_Data_left_F[4]=1;}else(Down_Data_left_F[4]=0;}if(( Down_Data_right[OJ[4J+Down_Data_left[1][4]+Down_Data_left[1][4]+Down_Data_right[1J[4]+Down_Data_right_F[4]=1;)elseDown_Data_right_F[4]=0;AD_Leftf01=ad_mid(ADCO,AD13,ADC_8bit);AD_Left[1l=ad_mid(ADCO,AD12,ADC_8bit);AD_Right[0]=ad_mid(ADC0,AD9,ADC_8bit);AD_Right[1l=ad_mid(ADCO,AD8,ADC_8bit);)voidPortCBitOIsr(void){//EncoderDown_ISR//PORTC_ISFR=1?0; //ClearthePTE25interruptflagsif(StartFlag!=O)(if(press<2)(press=press+l;Jelsepress=O;))elseStartVaule[O]=-StartVaule[O];}voidPortCBit3Isr(void){//EncoderTurnJSRif(press==0){//AD^INidnpAE^O4-i??'EQ,±I?if(((GPIO_PDIR_REG(PTC_BASE_PTR)?2)&0xlu)==0)StartFlag=min(39,(int)(StartFlag+1));//ADUIX6Dy?dOBOC)DyelseStartFlag=max(O,(int)(StartFlag-1));No=0;}elseif(press==l){if(StartFlag<=24){if(((GPIO_PDIR_REG(PTC_BASE_PTR)?2)&0xlu)==0)StartVaulefStartFlagl=min(9999,StartVaule[StartFlagl+l);//ADlIX6Dy?oOBOODyelseStartVaule[StartFlag]=max(O,StartVaule[StartFlag]-l);)elseif(((GPIO_PDIR_REG(PTC_BASE_PTR)?2)&0xlu)==0){if(StartFlag==25)No=min(ll,No+l)y/ADHiX6Dy?ddBOdDyelseNo=min(15,No+l);}elseNo=max(0,No-l);))elseif(StartFlag==25)(if(((GPIO_PDIR_REG(PTC_BASE_PTR)?2)&0xlu)==0)StartVaule[StartFlag+No]=min(999,StartVaule[StartFlag+No]-F1);//ADHIX6Dy?ddBOdDyelseStartVaule[StartFlag+No]=max(0,StartVaule[StartFlag+No]-l);)elseif(StartFlag==26){if(((GPIO_PDIR_REG(PTC_BASE_PTR)?2)&0xlu)==0)StartVaule[StartFlag+No+ll]=min(999,StartVaule[StartFlag+No+l1]+1);//ADUIX6Dy?dOBOODyelseStartVaule[StartFlag+No+ll]=max(O,StartVaule[StartFlag+No+l1J-1);)else(if(((GPIO_PDIR_REG(PTC^BASE_PTR)?2)&0xlu)==0)StartVaule[StartFlag+261=min(9999,StartVaule[StartFlag+26]+l);//ADX6Dy?odBOdDyelseStartVaule[StartFlag+26]=max(0,StartVaule[StartFlag+26]-l);FunctionData_dispoalvoidData_dispoal(void)Left_Flag=DataJeft_F[0]*1+Data_left_F[1]*2
+Data」eft_F⑵*4+Data_left_F[3]*8+Data」eft_F[4]*16+Data_left_F[5J*32switch(Left_Flag)case0:Flag_left[0J=60;break;case1:Flag_left[0]=o;break;case2:Flag_leftfO]=10;break;case3:Flag_left[0]=0;break;case4:Flag_left[0J=20;break;case5:Flag_left
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編版五年級語文上冊教學(xué)計劃
- 做2022銷售的工作總結(jié)怎么寫10篇
- 《烈火英雄》觀后感
- 語文教師個人教學(xué)工作計劃
- 《簡愛》寒假讀書日記10篇
- 2022年的銷售工作計劃
- 學(xué)生會辭職報告模板合集七篇
- 普通高中化學(xué)教案教學(xué)范文
- 關(guān)于工作方案4篇
- 公司學(xué)習(xí)心得體會15篇
- 食用堿檢測報告
- 細(xì)胞核的結(jié)構(gòu)和功能說課稿
- 12CM27型連續(xù)采煤機(jī)電氣系統(tǒng)
- 招標(biāo)代理成果文件質(zhì)量保證措施
- 石油英語詞匯
- 《夜宿山寺》-完整版課件
- 滬教牛津版八年級上冊初二英語期末測試卷(5套)
- 北京市海淀區(qū)2020-2021學(xué)年度第一學(xué)期期末初三物理檢測試卷及答案
- 家庭室內(nèi)裝飾裝修工程保修單
- 小學(xué)語文課堂提問有效性策略研究方案
- 物業(yè)上門維修收費(fèi)標(biāo)準(zhǔn)
評論
0/150
提交評論