




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、PAGE 4PAGE 55第二屆“飛思卡爾”杯全國大學生智能汽車邀請賽技 術 報 告學 校: 大連民族學院隊伍名稱: 民院4隊參賽隊員: 韋作凱高巖石廷亮帶隊教師: 陳興文關于技術報告和研究論文使用授權的說明本人完全了解第二屆“飛思卡爾”杯全國大學生智能汽車邀請賽關保留、使用技術報告和研究論文的規(guī)定,即:參賽作品著作權歸參賽者本人,比賽組委會和飛思卡爾半導體公司可以在相關主頁上收錄并公開參賽作品的設計方案、技術報告以及參賽模型車的視頻、圖像資料,并將相關內(nèi)容編纂收錄在組委會出版論文集中。參賽隊員簽名:帶隊教師簽名:日 期: 目錄 TOC o 1-3 h z u HYPERLINK l _Toc
2、174255980 第一章 引言1 HYPERLINK l _Toc174255981 1.1賽車制作情況1 HYPERLINK l _Toc174255982 1.2技術報告內(nèi)容安排說明1 HYPERLINK l _Toc174255983 第二章 車體機械結(jié)構(gòu)的調(diào)整2 HYPERLINK l _Toc174256000 2.1 底盤的調(diào)整2 HYPERLINK l _Toc174256001 2.2 前輪的調(diào)整2 HYPERLINK l _Toc174256004 2.3 舵機的安裝3 HYPERLINK l _Toc174256005 2.4 攝像頭的安裝4 HYPERLINK l _T
3、oc174255986 第三章 系統(tǒng)方案的選取5 HYPERLINK l _Toc174255987 3.1 CCD攝像頭和CMOS攝像頭方案的選取5 HYPERLINK l _Toc174255988 3.1.1 CCD和CMOS光電傳感器的原理5 HYPERLINK l _Toc174255989 3.1.2 CCD和CMOS光電傳感器優(yōu)缺點比較5 HYPERLINK l _Toc174255990 3.1.3方案選取6 HYPERLINK l _Toc174255990 3.2測速傳感器的選取6 HYPERLINK l _Toc174255983 第四章 賽車整體設計7 HYPERLIN
4、K l _Toc174255984 4.1 硬件系統(tǒng)設計7 HYPERLINK l _Toc174255988 4.1.1電源模塊7 HYPERLINK l _Toc174255989 4.1.2 像頭圖像數(shù)據(jù)采集模塊9 HYPERLINK l _Toc174255990 4.1.3電機驅(qū)動模塊11 HYPERLINK l _Toc174255988 4.1.4舵機轉(zhuǎn)向模塊12 HYPERLINK l _Toc174255989 4.1.5測速模塊13 HYPERLINK l _Toc174255990 4.1.6液晶顯示模塊14 HYPERLINK l _Toc174255983 第五章 軟
5、件設計 PAGEREF _Toc174255983 h 15 HYPERLINK l _Toc174255985 5.1 軟件系統(tǒng)設計 PAGEREF _Toc174255985 h 15 HYPERLINK l _Toc174255988 5.1.1初始化設計16 HYPERLINK l _Toc174255989 5.1.2數(shù)據(jù)采集的實現(xiàn)19 HYPERLINK l _Toc174255990 5.1.3二值化處理20 HYPERLINK l _Toc174255989 5.1.4中心坐標的確定21 HYPERLINK l _Toc174255990 5.1.5轉(zhuǎn)角的控制21 HYPERL
6、INK l _Toc174255989 5.1.6速度的控制22 HYPERLINK l _Toc174256046 第六章 總結(jié)與方案創(chuàng)新之處 PAGEREF _Toc174256046 h 24 HYPERLINK l _Toc174256047 參考文獻 PAGEREF _Toc174256047 h 24 HYPERLINK l _Toc174256047 附錄A PAGEREF _Toc174256047 h 25第三屆全國大學生智能汽車邀請賽技術報告第一章 引言賽車制作情況賽車的制作從2008年3月到2008年8月,成形的賽車是三名隊員嘔血之作。硬件方案的電源管理5V穩(wěn)壓芯片由TS
7、P7350到LM2940,6V穩(wěn)壓芯片由TPS7350到LM1117-ADJ,12V穩(wěn)壓芯片由大體積功率模塊到貼裝的MC34063,方案的測速部分由畫黑白相間的等分圓弧到雕刻齒輪,路況信息由數(shù)碼管顯示到LCD5510顯示,驅(qū)動由單片MC33886DH到兩片并聯(lián)連接,歷經(jīng)了漫長的硬件調(diào)試過程。在制作過程中,對車的機械結(jié)構(gòu)進行改裝,如攝舵機的架高、舵機臂的加長、前輪傾角的調(diào)整、測速裝置的安裝、整體重心的設計及調(diào)整等。在軟件調(diào)試中,三名隊員解決了CCD傳感器輸出PAL電視機制式的原理以及圖像數(shù)據(jù)的采集和處理、多個中斷聯(lián)合使用的時序問題。5個多月的調(diào)試,隊友不斷發(fā)現(xiàn)問題,分析問題,解決問題,車速也不斷
8、在提高,對于一些數(shù)據(jù),隊友們做了相應的記錄。本隊有幸參加在東北大學舉辦的第三屆“飛思卡爾”杯智能汽車全國總決賽?,F(xiàn)向組委會提交本隊技術報告,本文詳細介紹系統(tǒng)方案的選取、各個模塊的電路設計及工作原理,硬件結(jié)構(gòu)的設計和改進、軟件的控制策略等。技術報告內(nèi)容安排說明文章的正文部分大致分為六個部分:第一章,引言部分,介紹比賽背景,技術報告內(nèi)容安排說明,賽車制作情況等。第二章,車體機械結(jié)構(gòu)的調(diào)整,從賽車機械部分安裝及改造、攝像頭和舵機的安裝設計、系統(tǒng)電路板的固定及連接等介紹了賽車結(jié)構(gòu),具體介紹了對賽車各個機械部分的調(diào)整,使其達到最佳狀態(tài)。第三章,系統(tǒng)方案的選取,介紹了CMOS攝像頭方案以及智能車的最終方案
9、CCD攝像頭方案,測速傳感器的選取。第四章,賽車整體設計,介紹了電源模塊、攝像頭圖像數(shù)據(jù)采集模塊、電機驅(qū)動模塊、舵機轉(zhuǎn)向模塊,測速模塊、液晶顯示模塊六大模塊實現(xiàn)的功能。第五章,軟件設計,詳細解析了初始化、數(shù)據(jù)采集的實現(xiàn)、二值化處理、中心點的確定、轉(zhuǎn)角和速度的控制的設計過程。第六章,總結(jié)與方案創(chuàng)新之處,敘述了參賽隊員對制作賽車的體會和感想,描述了本方案方案的創(chuàng)新之處。第二章 車體機械結(jié)構(gòu)的改裝為了讓賽車能在直道和彎道上高速穩(wěn)定的通過,而且轉(zhuǎn)彎比較靈巧,快速,除了有相應的軟件和硬件電路的設計之外,賽車的機械結(jié)構(gòu)對其也有很重要的影響。所以我們對賽車的機械結(jié)構(gòu)也做了一些相應的調(diào)整。2.1 底盤的調(diào)整由
10、于這次決賽時賽道直線部分可以有坡度在15度之內(nèi)的坡面道路,包括上坡與下坡道路。所以決賽時的大部分賽道還是二維的路面,由于我們采取攝像頭采集路面信息的策略,攝像頭安裝位置比較高,所以導致整車的重心偏高,在高速過彎時則向心力比較大,同時由于慣性則車很容易向一側(cè)翻倒。為了避免次類事情的發(fā)生,我們把車的后輪底盤放低,從而降低整車的重心,防止車翻倒。而車頭的底盤高度不變,這是為了使車能順利的上坡而不至于由于底盤過底使底盤擦到賽道。2.2 前輪的調(diào)整前輪的調(diào)整包括前輪主銷后傾角,主銷內(nèi)傾角,前輪外傾角,前輪前束的調(diào)整。在調(diào)試過程中,我們發(fā)現(xiàn)這幾個參數(shù)對賽車直線的穩(wěn)定性和彎道靈巧性都有很重要的影響。主銷后傾
11、角是前輪主銷與前輪垂直中心線之間的夾角,也就是主銷上端向后傾斜的角度。在賽車上是通過四個黃色的小墊片來調(diào)整的。減小主銷后傾角可以減小前輪的回正力矩。主銷內(nèi)傾角是前輪主銷在賽車水平面內(nèi)向內(nèi)傾斜的角度,雖然增大內(nèi)傾角也可以增大回正的力矩,但增大內(nèi)傾角會在賽車轉(zhuǎn)向的過程中,增大賽車與路面的滑動,從而加速輪胎的磨損,由于輪胎對地的附著力對防止側(cè)滑有很重要的影響,所以如果輪胎磨損則得不償失,所以內(nèi)傾角調(diào)整為0。前輪外傾角是前輪的上端向外傾斜的角度,如果前面兩個輪子呈現(xiàn)“V”字形則稱正傾角,呈現(xiàn)“八”字則稱負傾角。由于前輪外傾可以抵消由于車的重力使車輪向內(nèi)傾斜的趨勢,減少賽車機件的磨損與負重,所以賽車安裝
12、了組委會配備的外傾角為1的配件。前輪前束是前輪前端向內(nèi)傾斜的程度,當兩輪的前端距離小后端距離大時為內(nèi)八字,前端距離大后端距離小為外八字。由于前輪外傾使輪子滾動時類似與圓錐滾動,從而導致兩側(cè)車輪向外滾開。但由于拉桿的作用使車輪不可能向外滾開,車輪會出現(xiàn)邊滾變向內(nèi)劃的現(xiàn)象,從而增加了輪胎的磨損。前輪外八字與前輪外傾搭配,一方面可以抵消前輪外傾的負作用,另一方面由于賽車前進時車輪由于慣性自然的向內(nèi)傾斜,外八字可以抵消其向內(nèi)傾斜的趨勢。外八字還可以使轉(zhuǎn)向時靠近彎道內(nèi)側(cè)的輪胎比靠近彎道外側(cè)的輪胎的轉(zhuǎn)向程度更大,則使內(nèi)輪胎比外輪胎的轉(zhuǎn)彎半徑小,有利與轉(zhuǎn)向。2.3 舵機的安裝組委會提供的舵機為S3010,由
13、于賽車轉(zhuǎn)向時舵機的響應速度是一個很重要的因素,為了加快舵機的響應速度,我們做了以下兩個方面的改進。第一,增加從舵機到連桿之間的長度,這樣與以前的長度相比讓前輪轉(zhuǎn)過同樣的角度舵機只需轉(zhuǎn)過比以前更小的角度,雖然舵機本身的動作的速度沒有變,但對于轉(zhuǎn)向來說則比以前更快了。第二,把舵機倒過來放置,使舵機位于兩輪的中心線上,再把連接兩輪胎到舵機的連桿改為一樣長,使舵機左右轉(zhuǎn)向時受力比較均勻,使舵機能靈活的轉(zhuǎn)向。通過以上這些改造舵機的響應速度提高許多,為快速靈巧的轉(zhuǎn)向提供了硬件的保證。示意圖1:舵機立放舵機立放前輪臂等長圖1 舵機安裝示意圖2.4 攝像頭的安裝攝像頭安裝的原則是:輕,穩(wěn),靈活。即首先是整個安
14、裝構(gòu)架要輕,其次是安裝后攝像頭在一個位置固定好后在賽車前進時不會前后左右的晃動,位置穩(wěn)定,由于長期調(diào)試,我們選取了安裝了攝像頭最佳位置,離車底板有312mm。如圖2:圖2 攝像頭支架示意圖如圖所示,支架底板四個角上的圓孔是用來與車的底板固定,中間薄板上的兩個圓孔是用來固定舵機,薄板與支架底板之間的空隙用于安裝舵機,上方的圓孔用來固定攝像頭,中間的支柱和支架底板、中間立的白鋼住和薄板之間用氬弧焊接。綜上基本上達到了輕,穩(wěn),靈活的三個原則。為攝像頭的準確采集提供了硬件的保證。第三章 系統(tǒng)方案論證3.1 CCD攝像頭和CMOS攝像頭方案的選取3.1.1 CCD和CMOS光電傳感器的原理CCD電荷耦合
15、器件CCD利用光電效應制作的半導體器件,起步早,技術已相當成熟,在生產(chǎn)生活中得到了廣泛的應用。構(gòu)成CCD 的基本單元是MOS (金屬- 氧化物- 半導體) 結(jié)構(gòu)。CCD 的基本功能是電荷的存儲和電荷的轉(zhuǎn)移。工作時,需要在金屬柵極加一定的偏壓,形成勢阱以容納電荷,電荷的多少基本與光強成線性關系。電荷讀出時,在一定相位關系的移位脈沖作用下,從一個位置移動到下一個位置,直到移出CCD ,經(jīng)過電荷- 電壓變換,轉(zhuǎn)換為模擬信號。CMOS光電傳感器CMOS是一種高集成度大規(guī)模集成電路,仍使用光敏元件為感光器件,光敏元件在排列方式上與CCD電荷耦合器件相同,只是在光電轉(zhuǎn)換后信息傳送方式不。CMOS 芯片內(nèi)部
16、提供了一系列控制寄存器,通過總線編程來對自動增益、自動曝光、白色平衡、校正等功能進行控制,編程簡單、控制靈活。直接輸出的電視機制式圖像信號可以很方便地和后續(xù)處理電路接口,供處理器AD模塊對其進行采集和處理器處理。3.1.2 CCD和CMOS光電傳感器優(yōu)缺點比較光電轉(zhuǎn)換CMOS和CCD使用相同的感光元件,具有相同的靈敏度和光譜特性,但光電轉(zhuǎn)換后的讀取信號方式不同。CMOS光傳感器經(jīng)光電轉(zhuǎn)換直接產(chǎn)生電壓信號,讀取十分簡單,特別的在監(jiān)控領域,CMOS傳感器的信號輸出大部分是PAL電視機制式,信息讀取十分方便。CCD存儲的電荷信息的轉(zhuǎn)移和讀取輸出需要有時鐘控制電路和三組不同的電源配合。成像效果 CCD
17、技術起步早,技術比較成熟,消噪效果好,成像質(zhì)量相對CMOS光電傳感器好。3.1.3 方案選取 綜合以上CCD和CMOS的優(yōu)缺點,雖然CMOS讀取信息比CCD快,但是考慮舵機的響應時間過慢,加上CCD在成像質(zhì)量上優(yōu)于CMOS,最終我們選用了CCD攝像頭作為識別路徑的傳感器。3.2 測速傳感器的選取方案一:采用霍爾傳感器 要使用這種方法需要在車上嵌入若干粒永磁鐵,這樣才能正常使用霍爾傳感器進行檢測。其優(yōu)點在于檢測速度快且不會受光、溫度的等的影響,但是在車困上合適的地方嵌入足夠多的數(shù)量永磁鐵相當困難。方案二:用基于遮光盤的紅外直射式轉(zhuǎn)速傳感器 這種方案對于外界環(huán)境的依賴性較小,測量精度高,但這種方案
18、在安裝遮光盤是會把它加在驅(qū)動軸上,一旦安裝時有不精確的地方會造成驅(qū)動軸不正,從而大大加重了驅(qū)動的負擔,嚴重影響小車的性能。方案三:光電耦合對射式傳感器 利用光電耦合對射式傳感器的感光度達0.8mm,外圍電路簡單,穩(wěn)定性好。輸出矩形脈沖,經(jīng)過整形直接接入單片機。綜上所述,考慮安裝、穩(wěn)定性,我們選取光電耦合對射式傳感器作測速傳感器。第四章 賽車整體設計4.1 硬件系統(tǒng)設計 圖3 系統(tǒng)結(jié)構(gòu)圖硬件結(jié)構(gòu)分為一個中央處理器和六大功能模塊:電源模塊、攝像頭圖像數(shù)據(jù)采集模塊、電機驅(qū)動模塊、舵機轉(zhuǎn)向模塊,測速模塊、液晶顯示模塊。4.1.15V穩(wěn)壓電路設計如圖4: 圖4 5V穩(wěn)壓電路圖電路通過LM2940-5.0
19、低壓差芯片將電池電壓穩(wěn)壓到5V,給單片機、測速模塊、液晶顯示模塊提供電壓。12V升壓電路設計如圖5: 圖5 12V穩(wěn)壓電路圖通過MC34063芯片將電池電壓升到12V,給攝像頭提供電壓。4.1.2視頻信號分離電路如圖6: 圖6 視頻分離電路圖攝像頭圖像數(shù)據(jù)采集模塊:通過提取連續(xù)行刷新一幀圖像,圖像的混合信號通過LM1881視頻分離出攝像頭的行信號和場信號,信號通過單片機,單片機產(chǎn)生行中斷和場中斷,并進行A/D采集,對采集完成的數(shù)據(jù)進行二值化分割,去噪聲處理,提取黑線的中心位置。 4.1.3圖7 電機驅(qū)動電路圖驅(qū)動模塊:我們采用兩片組委會提供的MC33886DH直流電壓驅(qū)動芯片并聯(lián)式驅(qū)動電機,這
20、樣增強了電機的驅(qū)動,也減小了芯片的發(fā)熱量。4.1. 圖8 6V穩(wěn)壓電路圖通過LM1117-ADJ芯片將電池電壓穩(wěn)壓到6V,給舵機提供電壓。4.1.圖9 測速電路圖光電耦合傳感器配合自制的碼盤作測速裝置,傳感器接受端產(chǎn)生矩形波信號,經(jīng)過非門整行,再經(jīng)過單片機的輸入捕捉功能測出小車的速度。4.1. 圖10 液晶接口電路圖采用5110字符液晶實時顯示賽道的形狀和采集、處理的數(shù)據(jù),液晶與單片機之間串行通信。第五章 軟件設計Y系統(tǒng)初始化將舵機轉(zhuǎn)到中間位置;設置電機占空比初始值為0行處理子函數(shù)調(diào)用幀信號處理子函數(shù)攝像頭已采集行信號是否處理完Y攝像頭是否采集完一幀NY系統(tǒng)初始化將舵機轉(zhuǎn)到中間位置;設置電機占
21、空比初始值為0行處理子函數(shù)調(diào)用幀信號處理子函數(shù)攝像頭已采集行信號是否處理完Y攝像頭是否采集完一幀N是否到定時測速的時間調(diào)速子函數(shù)NN 圖11 軟件系統(tǒng)設計流程圖軟件系統(tǒng)設計包括了初始化設計、數(shù)據(jù)采集的實現(xiàn)、二值化處理、中心點的確定、轉(zhuǎn)角和速度的控制六大部分。在每二值化處理的同時對下一行數(shù)據(jù)采集,采完一幀后,用邊沿提取法提取黑線的中心位置,調(diào)用角度控制函數(shù),速度是10ms控制一次,采用PID控制策略。5.1.1 初始化模塊有:I/O口設置、鎖相環(huán)設置、AD設置、PWM設置、中斷設置、定時器設置。a . I/O口設置/* I/O口初始化定義*/void IO_init(void) DDRA = 0
22、X00; DDRB = 0X00; DDRM = 0Xff; 把方向寄存器DDRA、DDRB設置成輸入,作為按鍵輸入口 ;把DDRM設置成輸出,作為LED輸出口。b . 鎖相環(huán)設置/*鎖相環(huán)初始化定義*/void PLL_init(void) REFDV = 0; SYNR = 2; while( !(CRGFLG&0 x08) ); CLKSEL = CLKSEL|0 x80; 16MHz無源晶體振蕩器產(chǎn)生的時鐘信號經(jīng)過鎖相環(huán)倍頻后到達了48MHz的總線頻率。其公式如下:PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)=2*(16MHz/2)*(2+1)/(1+0)=48
23、MHzc . AD設置/*AD初始化程序*/void AD_init(void) ATD0CTL2=0 xC0; ATD0CTL3=0 x08; ATD0CTL4=0 x81; ATD0CTL5=0 xA0; ATD0DIEN=0 x00; AD模塊采用上電, 快速清零, 無等待模式;禁止外部觸發(fā), 中斷禁止,每個序列1次轉(zhuǎn)換, No FIFO, Freeze模式下繼續(xù)轉(zhuǎn)換; 8位精度, 2個時鐘, ATDClock=BusClock*0.5/PRS+1 ;右對齊無符號,單通道(通道0)連續(xù)采樣。d . PWM設置/*PWM初始化程序*/void PWM_init(void) PWME=0X0
24、0; PWMPRCLK=0 x12; PWMSCLA=0 x0C PWMSCLB=0 x03; PWMCLK=0 xFF; PWMCTL=0 x80; PWMCAE=0 x00; PWMPOL=0 x02; PWMPER0=200; PWMPER1=200; PWMPER67=30000; PWMDTY0=0; PWMDTY1=0; PWMDTY67=5650; PWME=0 x83;PWM設置7通道為16位PWM輸出,輸出頻率133.3Hz控制舵機轉(zhuǎn)向,設置1通道為8位PWM輸出,輸出頻率2.5KHz,控制電機的轉(zhuǎn)速。e . 中斷設置void Video_Init(void) HPRIO =
25、 (unsigned char)(Virq & 0 xff); INTCR |= INTCR_IRQE_MASK; INTCR_IRQEN=0; PIFJ =0 xFF; PIEJ = 0 x00; PPSJ = 0X02; PIEJ=0 x02;把行中斷設置成外部中斷,其優(yōu)先級最高,場中斷接PORT J口。f . 定時器設置/*向下定時器初始化*/void Down_T_Initialize(void) INTCR = 0; MCCTL = MCCTL&0Xfb; MCCTL = 0Xe3; MCCTL = MCCTL|0X04; MCCNT = 20000; MCCTL = MCCTL|0
26、X08; 軟件設計通過定時10ms,讀取測速的脈沖速。 公式計算如下:20000*1/(48/24)us=10ms5.1.2攝像頭輸出的是視頻同步信號。視頻同步信號經(jīng)過同步分離芯片LM1881后,被分解為場同步信號,行同步信號,和視頻信號,如圖1.1所示。其中場同步信號和行同步信號都是負向的脈沖。行同步脈沖是掃描換行的標志,場同步脈沖是掃描換場的標志,標志著新的一場的到來。一場信號的開始包含一段場消隱區(qū),軟件設置前24行為無效行同步信號,之后是284個有效行。用這些同步信號直接控制單片機進行A/D的采集,每隔掃描8行采集一次數(shù)據(jù),每行采集47個點,一幅圖像共采集數(shù)據(jù)30行47列,存于數(shù)組Dat
27、a_ccd_scan3047中,單片機對圖像數(shù)據(jù)進行二值化處理,提取賽道信息并對其控制。 圖12 視頻同步信號的提取信號示意圖5.1.3對視頻數(shù)據(jù)進行二值化處理,首先需要選擇合理的閾值,本系統(tǒng)閾值的選擇主要思想是:小車運行之前,首先按鍵采集比賽場地的數(shù)據(jù)信息,共采集6場,考慮到第一場不太穩(wěn)定,從第二場開始,每場的每行求一個最小值,然后對五場中每行的最小值求平均值,將得到的結(jié)果進行整體補償,作為每行的閾值。經(jīng)過反復調(diào)試,補償值介于510即可。閾值的求取公式為: 其中:是第 i 場第j 行的最小值, C為補償值。為每行的閾值。采取如下方式進行二值化分割: 其中: 是原始數(shù)據(jù);是二值化后的數(shù)據(jù)。5.
28、1.4一幀圖像處理完成后,可以用液晶顯示賽道的真實路徑信息,需要求出黑線的中心位置,從而進行小車的路徑的分析和小車的控制。其計算公式為:Center = i + j/2 式中 i 表示黑線的起始位置,j 表示賽道黑線的點數(shù)。5.1.5一場圖像數(shù)據(jù)處理結(jié)束后,賽道的路徑信息會清晰的再現(xiàn)出來。根據(jù)整幅圖像黑線的有效起點和有效終點的斜率和偏離圖像中心位置的偏移量,就可以判斷當前賽道是直道還是彎道。根據(jù)這些信息給定舵機的控制量。此方案獲的主要思想如下:首先找到圖像數(shù)據(jù)最近位置的第一個有效行,同時記錄黑線的中心位置信息,定義為(X0,Y0 )。 然后再找最遠位置的第一個有效行,以及其黑線中心位置,定義為
29、(X1,Y1 )。據(jù)此算出黑線的斜率K=(Y1 - Y0 )/ (X1 - X0 ),和黑線偏離圖像中心位置的偏移量| X0 |。其示意圖如圖13所示。 (0,0) (0,0) Y (X1,Y1 ) 圖13 示意圖(X0,Y0)X (X2,Y2) 其計算公式為: 舵機控制量 = Ka*X0 + Kb* K + Speed*K/Kc; 根據(jù)不斷調(diào)試和經(jīng)驗數(shù)據(jù)得到比例系數(shù) Ka,Kb, Kc 的確切的值。5.1.6速度的控制 PID控制,其公式如下:CurError=SetSpeed-Count_B;Error_D2 = Error_D1;/ 刷新速度數(shù)據(jù)Error_D1 = Error_D0;E
30、rror_D0 = CurError;idelat_PWM_Val = uiA*Error_D0 - uiB*Error_D1 + uiC*Error_D2;上式中:CurError為設定期望值與速度反饋的偏差量,SetSpeed為設定的速度期望值,Count_B為傳感器反饋的當前速度值,Error_D2為當前時刻的前兩次偏差,Error_D1為上一時刻的偏差,Error_D0當前時刻的偏差,idelat_PWM_Val是當前時刻PWM的增量,uiA,uiB, uiC三個系數(shù)為PID的經(jīng)驗值。第六章 總結(jié)與方案創(chuàng)新之處總結(jié):Freescale公司MC9S12DG128B芯片功能強大、工作穩(wěn)定、
31、運用便利。 制作將近半年的時間,在帶隊老師的指導下,三名隊員在課余時間逐步完成了對智能賽車的制作和改進,包括制作技術方案、設計思路、調(diào)試過程及技術報告內(nèi)容的研究。通過設計,我們不僅把學習的理論知識應用到實際,還學到了很多學科的基本常識。本隊的賽車采用了CCD攝像頭,本設計方案有探測距離遠、視場角度大的優(yōu)勢,賽車可以提前獲取賽道信息;方案使用的總線頻率是48MHz,大大縮短了采樣時間,以便更快的處理數(shù)據(jù)。方案創(chuàng)新之處:1)本隊賽車主板緊貼賽車底盤,讓賽車輕松轉(zhuǎn)向、加減速;2)賽車機械結(jié)構(gòu)的調(diào)整。賽車舵機的倒立安裝,使前輪力臂均長,有利于不同彎道轉(zhuǎn)向;攝像頭的前裝,較中間安裝更能提前預知賽道信息,
32、更有利于賽車的加減速;3)液晶顯示實時賽道信息,調(diào)試時非常方便;4)巧妙利用PPL模塊將總線頻率抬高到48MHz,解決了AD采樣時間不足的問題,更快地處理采集的數(shù)據(jù);5)PID調(diào)速使賽車勻速、穩(wěn)定行駛,速度值反饋到轉(zhuǎn)角上,使得賽車安全過彎道.參考文獻【1】 卓晴 黃開勝 邵貝貝,學做智能車M,北京:北京航空航天大學出版社,2007【2】 邵貝貝,單片機嵌入式應用的在線開發(fā)方法,北京:清華大學出版社,2004附錄A/源程序代碼:#includecar.h int Data_ccd_scan2032; /CCD采值 int Line_count; /CCD 采樣行 int End_field_fl
33、ag; /場結(jié)束標志 int End_line_flag; /行結(jié)束標志 int Scan_line_count; /CCD掃描計數(shù)器 char Field_flag; char Offset; char PreLine; uchar step; uchar flag_stop; uchar flag_start; uchar Count_A; uchar Count_B; char EnablePID; char EnablePID1=1; char SetSpeed; char sflag,sflag1; uchar flag_0; char Error_D3; int Error; in
34、t Error_n,Error_f; int Sum_Error; int Dec_Error; int Count_0; /前10行0的總數(shù) char Count_20; /列累加為10的個數(shù) char Sum_Num_B; /前10行0串的總數(shù) int Max_y; int n,f,k; int ka,kb; uchar final; uchar sp6,sp5,sp4,sp3,sp2,sp1; void main(void) uchar real=1; step=0; flag_stop=0; flag_start=0; flag_0=0; goback0; DisableInterru
35、pts; / lcd_init(); /lcd初始化 lcd_cls(); /清屏,光標回位 / IO_init(); PLL_init(); SCI_init(); AD_init(); PWM_init(); Video_Init(); Down_T_Initialize(); Capture_T_Initialize(); EnableInterrupts; SetSpeed=35;while(real) switch(step) case 0: if(1=End_field_flag) DisableInterrupts GetThresholdValue(); /采閾值 Enable
36、Interrupts End_field_flag=0; if(PORTA_BIT7=0&PORTA_BIT6=0)final=4; lcd_gotoxy(36,0);lcd_putsf(1 4 ,4); if(PORTA_BIT7=0&PORTA_BIT6=1)final=6; lcd_gotoxy(36,0);lcd_putsf(2 6 ,4); if(PORTA_BIT7=1&PORTA_BIT6=0)final=8;lcd_gotoxy(36,0);lcd_putsf(3 8,4); if(PORTA_BIT7=1&PORTA_BIT6=1)final=10;lcd_gotoxy(36
37、,0);lcd_putsf(4 10,4); switch(PORTA&0 x3f) /*速度反饋到角度*/ case 0 x02: sp6=10;sp5=10;sp4=10;sp3=10;sp2=10;sp1=10;step=1;ka=540;kb=32;PWMDTY1=180;break; case 0 x01: sp6=15;sp5=13;sp4=11;sp3=11;sp2=10;sp1=10;step=1;ka=540;kb=32;PWMDTY1=180;break; case 0 x12: sp6=16;sp5=14;sp4=12;sp3=12;sp2=10;sp1=10;step=
38、1;ka=540;kb=32;PWMDTY1=180;break; case 0 x11: sp6=17;sp5=15;sp4=13;sp3=13;sp2=11;sp1=11;step=1;ka=560;kb=16;PWMDTY1=180;break; case 0 x22: sp6=18;sp5=16;sp4=14;sp3=13;sp2=11;sp1=11;step=1;ka=560;kb=16;PWMDTY1=180;break; case 0 x21: sp6=19;sp5=17;sp4=15;sp3=13;sp2=11;sp1=11;step=1;ka=560;kb=16;PWMDTY
39、1=180;break; case 0 x32: sp6=20;sp5=18;sp4=16;sp3=14;sp2=12;sp1=12;step=1;ka=580;kb=8; PWMDTY1=180;break; case 0 x31: sp6=22;sp5=20;sp4=20;sp3=18;sp2=14;sp1=14;step=1;ka=580;kb=8; PWMDTY1=180;break; /*模擬光電*/ default : break; /PORTB=PORTA; break; /*斜率加速度*/ case 1: if(1=End_field_flag) PIEJ_PIEJ0=0; /
40、SCI_01();01值 BinaryImage();/01化 ImageProcees_f(); message_position(); Stop_Car(); control_angle_speed_k0(); SCI_LCD(); PIEJ_PIEJ0=1; End_field_flag=0; if(EnablePID=TRUE&EnablePID1=1) Proc_PID_Ctrl(); EnablePID=FALSE; break; /*斜率加速度*/ case 2: if(1=End_field_flag) PIEJ_PIEJ0=0; BinaryImage();/01化 SCI_
41、LCD(); ImageProcees_f(); message_position(); control_angle_speed_k1(); Stop_Car(); PIEJ_PIEJ0=1; End_field_flag=0; break; default : break; /*程序初始化,ini.c*/#includecar.hint FieldCount;void IO_init(void) DDRA = 0X0c; DDRB = 0XFF; DDRS = 0X00; /PORTB=0X55;/*鎖相環(huán)初始化定義*/void PLL_init(void) REFDV = 3; SYNR
42、= 7; while( !(CRGFLG&0 x08) ); CLKSEL = CLKSEL|0 x80;/*串口初始化程序*/void SCI_init(void) SCI0CR2 = 0 x0c; SCI0CR1=0;/*normal,no parity*/ SCI0BDL = 0 xd0;/*AD初始化程序*/void AD_init(void) /每1.5ms采 一次值 ATD0CTL2=0 xC0; /AD模塊上電, 快速清零, 無等待模式, 禁止外部觸發(fā), 中斷禁止 ATD0CTL3=0 x08; /每個序列1次轉(zhuǎn)換, No FIFO, Freeze模式下繼續(xù)轉(zhuǎn)換 ATD0CTL4
43、=0 x81; / 8位精度, 2個時鐘, ATDClock=BusClock*0.5/PRS+1 ; ATD0CTL5=0 xA0; /右對齊無符號,單通道連續(xù)采樣,通道0 ATD0DIEN=0 x00; / 禁止數(shù)字輸入 /*PWM初始化程序*/void PWM_init(void) /以英文資料為準 PWME=0X00; /通道禁止 PWMPRCLK=0 x36;/預分頻 clock A=總線時鐘(32M)/32 clock B=總線時鐘(32M)/8 PWMSCLA=0 x01; /clock SA=1M 電機驅(qū)動預頻率,33886通頻帶在10KHz以內(nèi) PWMSCLB=0 x01;
44、/clock SB=0.5M/5/2=50KHz(通道頻率)舵機預頻率 PWMCLK=0 x00;/Channel 7 output pin is used as the output for this 16-bit PWM PWMCTL=0 x80;/67級連 PWMCAE=0 x00;/左對齊輸出 PWMPOL=0 x02;/通道7、1、0輸出波形開始極性為0、1、1 PWMPER0=200;/設定輸出周期(250us)=通道周期*PWMPER0PPWMPER0=輸出周期/(通道周期*2) PWMPER1=200;/設定輸出周期(250us)=通道周期*PWMPER1PPWMPER1=輸出
45、周期/(通道周期*2) PWMPER67=30000;/設定輸出周期(10ms)=通道周期*PWMPER67=1/50*500=10ms PWMDTY0=0; /電機DUTY=50%; PWMDTY1=0; PWMDTY67=5500;/舵機初始轉(zhuǎn)向角度為0,有效脈寬為1/50*75ms=1.5ms PWME=0 x83;/允許通道7、1、0輸出 /*攝像頭初始化*/void Video_Init(void) HPRIO = (unsigned char)(Virq & 0 xff); /將IRQ優(yōu)先級置為最高 INTCR |= INTCR_IRQE_MASK;/ Failing sensit
46、ive only INTCR_IRQEN=0; /IRQ使能 PIFJ =0 xFF; PIEJ = 0 x00; /開場中斷 PPSJ = 0X02; /PJ1場中斷上升沿有效 Scan_line_count = 0; /掃描計數(shù)器清0 FieldCount=0; /場計數(shù)器 Line_count=0; /行標號 清0 End_line_flag=0; /行結(jié)束標志清0 End_field_flag=0; /場標志清0 PIEJ=0 x02; Offset=2;/*向下定時器初始化*/void Down_T_Initialize(void) INTCR = 0; /待查 MCCTL = MC
47、CTL&0Xfb; /模數(shù)計數(shù)器禁止運行 MCCTL = 0Xe3; /允許中斷,模數(shù)計數(shù)方式 /返回時重新加載所用的常數(shù),分頻常數(shù)為16 MCCTL = MCCTL|0X04; /模數(shù)計數(shù)器使能 MCCNT = 20000; /30ms=60000*1/(32/16)us MCCTL = MCCTL|0X08; /把模數(shù)常數(shù)寄存器的值加載到模數(shù)計數(shù)器/*輸入捕捉定時器*/void Capture_T_Initialize(void) /輸入捕捉定時器初始化 TIOS=0X00; /channel 0 input capture TCTL4=0X33; /capture rising and
48、falling edge TSCR2=0X87; /24MHZ/128 TIE=0X01; /channel 0 interrupt enable TSCR1=0X80; /Timer enable/*1881行中斷(IRQ),ccd.c*/#includecar.h char c=0;void interrupt 24 PortJ_ISR(void) Scan_line_count = 0;/行清零 INTCR_IRQEN=1; /IRQ使能 PIFJ =0 xFF; /場中斷標志位清零 void interrupt 6 IRQ_ISR() INTCR_IRQEN = 0; /關行中斷 if
49、( Scan_line_count 25) Line_count = Scan_line_count/13-2; /計算航標號 if(Scan_line_count%13 = 0)/判斷是否到采樣行 /行消隱區(qū)不進行讀值,去八個值 while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Resu
50、lt Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Result Reg
51、ister while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Result Register
52、while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 /開始行采樣,才32個點 Data_ccd_scanLine_count0 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count1 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count2 = ATD0DR0; /Read out the Result Re
53、gister while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count3 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count4 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count5 = ATD0DR0; /Read out the Result Register
54、 while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count6 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count7 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count8 = ATD0DR0; /Read out the Result Register while
55、(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count9 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count10 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count11 = ATD0DR0; /Read out the Result Register while(!AT
56、D0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count12 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count13 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count14 = ATD0DR0; /Read out the Result Register while(!ATD0S
57、TAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count15 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count16 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count17 = ATD0DR0; /Read out the Result Register while(!ATD0STAT
58、1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count18 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count19 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count20 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_C
59、CF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count21 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count22 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count23 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0
60、); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count24 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count25 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0); /等待轉(zhuǎn)換結(jié)束 Data_ccd_scanLine_count26 = ATD0DR0; /Read out the Result Register while(!ATD0STAT1_CCF0);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧理工職業(yè)大學《機械原理課程設計》2023-2024學年第二學期期末試卷
- 2025屆六盤水市六枝特區(qū)五年級數(shù)學第二學期期末預測試題含答案
- 領導力溝通中的語言表達技巧
- 江西省贛州市全南縣2025年三年級數(shù)學第二學期期末綜合測試試題含解析
- 黑龍江三江美術職業(yè)學院《數(shù)據(jù)結(jié)構(gòu)Ⅱ》2023-2024學年第二學期期末試卷
- 涂料產(chǎn)品防紫外線褪色技術
- 山東信息職業(yè)技術學院《中國人物畫》2023-2024學年第二學期期末試卷
- 滄州幼兒師范高等??茖W?!峨姽る娮踊A實驗A》2023-2024學年第二學期期末試卷
- 濟南市章丘市2025年數(shù)學三下期末教學質(zhì)量檢測模擬試題含解析
- 湖南省張家界市桑植縣2024-2025學年五下數(shù)學期末調(diào)研模擬試題含答案
- 2025年黑龍江農(nóng)業(yè)工程職業(yè)學院單招職業(yè)適應性測試題庫及答案1套
- 《勞動法常識(第3版)》中職全套教學課件
- 2025年勞動合同延期補充協(xié)議模板
- 2025年日歷表(含農(nóng)歷、節(jié)假日、記事、A4打印版)
- 《反家庭暴力》課件
- 二零二五年度房地產(chǎn)預售合同協(xié)議4篇
- 2025-2030年中國天線行業(yè)市場需求狀況規(guī)劃研究報告
- 2024年南京旅游職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 如何提升自我管理能力
- 2025年潛江市城市建設發(fā)展集團招聘工作人員【52人】高頻重點提升(共500題)附帶答案詳解
- 人教版(新)九年級下冊化學全冊教案教學設計及教學反思
評論
0/150
提交評論