




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第一屆“飛思卡爾"杯全國大學生智能汽車邀請賽技術(shù)報告關(guān)于技術(shù)報告和研究論文使用授權(quán)的說明本人完全了解第一屆“飛思卡爾''杯全國大學生智能汽車邀請賽關(guān)保留、使 用技術(shù)報告和研究論文的規(guī)定,即:參賽作品著作權(quán)歸參賽者本人,比賽組委 會和飛思卡爾半導體公司可以在相關(guān)主頁上收錄并公開參賽作品的設(shè)計方案、 技術(shù)報告以及參賽模型車的視頻、圖像資料,并將相關(guān)內(nèi)容編纂收錄在組委會 出版論文集中。參賽隊員簽名:帶隊教師簽名:日期:第一章引言1第二章 小車模型的改造和安裝3第三章各模塊電路的方案選擇和具體設(shè)計53中央控制電路的設(shè)計53.2主電機驅(qū)動電路的選擇和設(shè)計73.3速度檢測元件的選
2、擇和電路設(shè)計93.4賽道檢測傳感器的選擇和電路設(shè)計113.5系統(tǒng)供電設(shè)計133.5.1主控制板的供電143.5.2各傳感器的供電143.5.3電機的供電143.5.4舵機的供電143.6人機接口模塊的設(shè)計15第四章控制軟件的設(shè)計174.1驅(qū)動層軟件設(shè)計174.1.1. 系統(tǒng)時鐘設(shè)置174.1.2. 主電機和舵機驅(qū)動174.1.3速度檢測的計數(shù)和處理184.1.4賽道檢測的數(shù)據(jù)采集和處理194.2決策層軟件計算法設(shè)計194.2.1上層傳感器決策204.2.2下層傳感器決策214.2.3速度閉環(huán)控制22第五章調(diào)試說明235編譯軟件使用235.2硬件電路設(shè)計調(diào)試235.3軟件算法效率的測試235.4
3、機械結(jié)構(gòu)調(diào)試23第六章小車模型改造后的主要技術(shù)參數(shù)25第七章結(jié)論27參考文獻i附錄a遲滯比較器門限電壓估算公式的推導iii附錄b系統(tǒng)源代碼v第一章引言本設(shè)計采用mc9s12dg128單片機作為智能小車的檢測和控制核心。測速 裝置使用紅外槽形光耦對電機齒輪進行檢測,通過對速度的檢測,整個系統(tǒng)閉 環(huán)控速,系統(tǒng)穩(wěn)定性增強。電機控制模塊使用集成的單片電動機控制芯片 mc33886,主控制器按預定的運行規(guī)則和程序,發(fā)控制信號給電機控制芯片, 對主電機轉(zhuǎn)速進行調(diào)節(jié),從而控制小車的加速和制動。賽道檢測模塊釆用雙排 紅外反射傳感器,通過樣條算法,將賽道的走向和轉(zhuǎn)彎的趨勢較精確地計算出 來,通過主控制器將轉(zhuǎn)角信
4、號送給舵機,實現(xiàn)小車的巡線功能。在調(diào)試的過程 屮采用友好的人機接口界面,清楚地顯示小車運行的各項參數(shù)。本設(shè)計方案的主要特色有以下幾方面:為使主控制器的電路達到最簡,單獨設(shè)計了主控制器的最小系統(tǒng),簡化了 外圍電路的設(shè)計,使主控系統(tǒng)達到最優(yōu)。采用紅外槽形光耦對屯機的主傳動齒輪進行轉(zhuǎn)速檢測,由此經(jīng)過計算得到 車體速度,保證速度測量的準確性,其測量值可以滿足對速度控制的要求,同 時避免了采用高精度的光電碼盤帶來的設(shè)計上的復雜,簡化了機械結(jié)構(gòu)的設(shè)計。采用了雙排紅外反射式的傳感器對賽道檢測,可以預測較遠距離的賽道情 況,并采用三次樣條函數(shù)對上層傳感器進行計算,算出軌道的具體方位,由此 對舵機進行控制,實現(xiàn)
5、了較精確的轉(zhuǎn)向控制。調(diào)試時采用了 128x64的點陣型液晶顯示,使得顯示信息豐富,界面友好。整個系統(tǒng)的系統(tǒng)構(gòu)成如圖l.lo第一屆全國大學生智能汽車邀請賽技術(shù)報告"7人機接口模塊/主電機驅(qū)動電路7主電機圖1mc9s12dg128小車模型1系統(tǒng)構(gòu)成框圖第二章小車模型的改造和安裝根據(jù)比賽要求,舵機、主電機和電池部分未作任何改動,電池仍然固定在 原位置,小車的改造主要側(cè)重于印刷電路板和傳感器的固定?;谛≤囍匦牡目紤],屮央控制屯路板固定在小車屮間靠前的位置,這樣 還可以避免主電機轉(zhuǎn)動的干擾。電源設(shè)置在右側(cè)靠近電池的位置。速度檢測傳感器(紅外線槽形光耦)固定在電機旁邊的變速齒輪處,光路 固定在
6、齒輪的齒上,以便將轉(zhuǎn)速轉(zhuǎn)換成電平的頻率信號。(具體原理見第三章)賽道檢測傳感器為兩排紅外反射傳感器。前排用于預測,后排用于定位并 對上層傳感器計算出的位置信息進行校驗。為了使預測的賽道盡可能遠,前排 的傳感器用鋁制的支架架起,與水平面成一定角度;而后排傳感器則靠近車體, 行駛彎道時可以起到很好的調(diào)節(jié)作用。第三章各模塊電路的方案選擇和具體設(shè)計3.1中央控制電路的設(shè)計中央控制電路是整個系統(tǒng)的核心,控制器完成主電機控制、尋線響應(yīng)、舵 機轉(zhuǎn)動控制和速度獲取等功能。其中對主電機和舵機的控制是很重要的任務(wù)。 通常采用pwm信號來調(diào)節(jié)電機轉(zhuǎn)速和舵機轉(zhuǎn)角。freescale公司推出的 mc9s12dg128單
7、片機具有pwm輸出功能,而且其片上的pwm功能具有獨立 的定時計數(shù)模塊,極大地簡化了硬件系統(tǒng)的設(shè)計。mc9s12dg128單片機有qfp-80和lqfp-112兩種封裝,考慮到系統(tǒng)可能 會比較復雜,因此決定選用資源相對較豐富的lqfp-112封裝的單片機作為主 控制器。在電路設(shè)計上,采取了模塊化的設(shè)計思想,整個電路由最小系統(tǒng)板和擴展 板構(gòu)成。最小系統(tǒng)板囊括了 mc9s12dg128單片機系統(tǒng)的必要組成部分,包括 時鐘電路、鎖相環(huán)濾波電路、a/d轉(zhuǎn)換器濾波電路、調(diào)試用的led、電源以及 各i/o 口接口和bdm調(diào)試器接口等。擴展板上規(guī)劃了小車的各個設(shè)備的接口電 路,包括電機驅(qū)動電路、各i/o 口
8、的引出線、舵機接口、人機交互電路、測速 電路接口以及賽道識別傳感器接口。最小系統(tǒng)板和擴展板的原理圖如圖3.1和圖3.2o圖3.1單片機最小系統(tǒng)原理圖ttjf-_- thto一.矛=h=b二三imm圖3.2擴展板原理圖單片機端口資源的分配情況如下:mc9s12dg128 單片機有 a、b、e、h、k、j、m、p、s、t 等數(shù)字 i/o 口, 還具有兩個a/d輸入端口。在本作品中用pts 口和a/d 口采集賽道檢測傳感 器送出的數(shù)字信號和模擬電壓信號,ptt端口完成對速度檢測傳感器信號的計 數(shù)功能,pth 口作為撥碼開關(guān)量的輸入,ptp端口完成對主電機轉(zhuǎn)速、方向的 控制和舵機的驅(qū)動,ptm 口作為
9、128x64lcd的數(shù)據(jù)口。3.2主電機驅(qū)動電路的選擇和設(shè)計主電機為永磁式微型直流電動機。它的驅(qū)動方案主要有三種:電磁繼電器 開關(guān)控制、達林頓管或mos管組成的h型電路控制和單片電動機控制芯片控 制。第一種和第三種方案電路較簡單。但是繼電器響應(yīng)速度慢,易損壞,可靠 性不高,而且體積大,顯然不適合小車的使用。第二種方案效率高,而且控制 靈活,但其外圍電路復雜,體積和重量都不能滿足要求。如果采用第三種方案, 就需要解決散熱和驅(qū)動電流問題??紤]到小車的主驅(qū)動電機為微型永磁式直流 電動機,工作電流相對較小,而且小車的設(shè)計有重量和體積的限制,所以決定 采用第三種方案。電機驅(qū)動芯片選用freescale公
10、司的mc33886。該芯片的內(nèi)部結(jié)構(gòu)與大功率 管構(gòu)成的h橋式電路基本相同,只是在此z上加入了邏輯控制電路和過流過熱 保護電路。具體的電路設(shè)計如圖3.3。圖3.3電機驅(qū)動電路mc33886是freescale公司推出的h橋集成電路,最大電流可以達到5a。 其內(nèi)部結(jié)構(gòu)如圖3.4。其屮di、d2為制動端,當輸入有效信號的時候,輸出 端口立即顯現(xiàn)三態(tài),電動機迅速制動。fs為錯誤標志段,當出現(xiàn)錯誤時,該端 顯高電平。in1和in2為兩個半橋的信號輸入端,0ut1和out2為兩個半橋 的輸出端。在設(shè)計時,將in1端接地,in2端接到單片機的pwm5信號端,通 過控制信號的占空比來調(diào)整out1和out2兩端
11、的電壓,實現(xiàn)電機速度調(diào)整。ccpiniin2pgndfsd1d2圖3.4 mc33886內(nèi)部結(jié)構(gòu)ag nd3.3速度檢測元件的選擇和電路設(shè)計速度的檢測可以使用測速發(fā)電機或速度檢測傳感器。考慮到測速發(fā)電機的 體積較大,且對電機輸岀的機械能損耗較大,因此排除使用測速發(fā)電機;速度 檢測傳感器體積小,對電機輸岀的機械能損耗也小,故采用速度檢測傳感器檢 測速度。速度檢測傳感器i古i定在主電機附近,當主電機轉(zhuǎn)動時,會在速度傳感器上 產(chǎn)生脈沖信號。通過檢測脈沖信號的頻率或周期,就可以得到一個與小車速度 成正比的數(shù)值,這個數(shù)值經(jīng)過量綱換算,就可以得到小車的速度。速度傳感器的方案主要有霍爾式和紅外式兩種?;魻栐?/p>
12、件是一種磁敏元件,考慮電機磁場距檢測點很近,而且許多部件都 是磁性材料制成,容易磁化產(chǎn)生干擾磁場,可靠性不高;而釆用紅外傳感器, 由于兩管相對位置固定,且沒有反射,直接接收,所以具有失誤少,基本不受 外界干擾等優(yōu)點。特別是在后軸上有一個變速的大號齒輪,利用齒輪的齒對傳感器光路的阻擋作用,可以實現(xiàn)將速度轉(zhuǎn)換成頻率信號,實現(xiàn)速度的測量。紅外傳感器采用圖3.5電路設(shè)計。圖3.5速度檢測電路小車后軸的變速齒輪用于將主電機的高轉(zhuǎn)速變成驅(qū)動軸的低轉(zhuǎn)速。在齒輪 的邊緣位置夾放一個紅外槽形光耦,檢測光路就放在齒輪的齒上。當光路上是 齒尖時,發(fā)射管發(fā)出的紅外信號被齒尖遮擋,接收管不能接收到信號,顯高電 平。當檢
13、測點之間是齒槽時,發(fā)射管的信號被接收管接收,產(chǎn)生一個負階躍脈 沖信號,經(jīng)過兩個施密特觸發(fā)器整形后送給單片機,觸發(fā)單片機計數(shù)響應(yīng)。i古i定方案如圖3.6:圖3.6速度檢測電路的固定這樣設(shè)計的優(yōu)點在于,無需設(shè)置精密碼盤就可以對小車的速度做比較精確 的檢測。3.4賽道檢測傳感器的選擇和電路設(shè)計檢測賽道一般采用面陣ccd傳感器,但是使用ccd傳感器會帶來一系列 的問題,例如:占用ram資源比較多、道路信息檢測速率受到限制(ccd每 秒產(chǎn)生50幀圖像)、檢測有延時(1/50秒)??紤]到單片機的實際情況和處 理能力處理ccd傳感器采集的數(shù)據(jù)有困難,因此決定放棄用ccd傳感器檢測 賽道。檢測賽道的另外一種辦
14、法是采用紅外線反射傳感器。紅外線反射傳感器利 用物體對紅外線的反射程度大小來確定物體顏色的深淺。該傳感器由發(fā)射管和 接收管組成。當發(fā)射管發(fā)射的紅外線射向深色物體時,紅外線大部分被深色物 體吸收,接收管幾乎接收不到紅外線,則接收管導通電阻增大;當發(fā)射出的紅 外線射向淺色物體時,紅外線被淺色物體漫反射,此時大部分紅外線就可以被 紅外接收管接收,導通電阻減小。設(shè)計中采用模擬與數(shù)字結(jié)合的方式,即上層 采用模擬方案對跑道進行預測,下層采用數(shù)字開關(guān)量檢測方案,對跑道進行精 準檢測,同時消除掉上層傳感器由于檢測距離較遠而產(chǎn)生的誤差。具體的機械結(jié)構(gòu)設(shè)計見圖3.7。圖3.7賽道檢測傳感器的固定上層模擬方案電路設(shè)
15、計如圖3.8。vcctu1optoisolator 1vcc< adogndr-rl5kgnd圖3.8上層檢測傳感器電路原理圖此電路利用接收管接收到不同強度紅外線而導通電阻不同的特性,由a/d 轉(zhuǎn)換電路對其進行檢測,這使得在距離黑線較近的紅外接收管電平會相應(yīng)升高。 利用這一性質(zhì),經(jīng)三次樣條算法對其進行計算,找出其最大點,即黑線的所在 位置。下層數(shù)字量方案設(shè)計如圖3.9:下層傳感器電路主體是由lm393構(gòu)成的遲滯比較器,而傳感器的檢測原理 與上層相同。使用比較器,可以很容易地把傳感器的電壓變化轉(zhuǎn)化成數(shù)字電平。 如圖3.7所示,反相輸入端為基準調(diào)整端,用電位器r10對電源電壓分壓,分 壓結(jié)果
16、送入比較器作基準電壓。傳感器得到的電壓送到比較器的同相輸入端,與反相輸入端的電壓比較,高則比較器輸出高電平,低則輸出低電平。最后, 把得到的電平送入單片機,判斷傳感器檢測到的顏色。在這部分電路屮,lm393及其周圍電阻網(wǎng)絡(luò)構(gòu)成了遲滯比較器。所謂遲滯 比較器是具有遲滯環(huán)特性的比較器。如圖所示,在lm393的同相輸入端引入了 正反饋(r13)。這種比較器的門限電壓是隨著輸出電壓改變的。它的靈敏度低 一些,但抗干擾能力卻大大提高了叫該電路的門限寬度avt可以通過以下公 式計算:av =r7(vm-va)公式r7+&3具體的推導過程見附錄a。其中,voh和vol分別指輸出電壓的最大值 和最小值
17、,在這里分別為+5v和0v。所以,按上面的公式計算門限寬度為:10kx5v10m+10k=5mv公式2采用雙層傳感器進行計算的優(yōu)點是,在運動過程中,由于傳感器探測范圍 小,分辨率低,所以要增加車體的前瞻性,必須抬高檢測傳感器,使其與地面 成一定角度,但這會對紅外傳感器造成很大干擾。車體在運動過程中需要精準 調(diào)節(jié)與跑道的相對位置,而紅外傳感器探測范圍較小,導致了根據(jù)上層傳感器 計算出來的黑線位置會發(fā)生跳變(即有些傳感器失效,取值出現(xiàn)盲點)。為了解 決這一缺點,設(shè)計增加下層傳感器對上層傳感器進行校驗與糾止,下層的數(shù)字 量設(shè)計方案保證了下層檢測的準確性,這樣就既保證了賽道檢測的前瞻性,同 時也消除了
18、不必要的干擾。3.5系統(tǒng)供電設(shè)計考慮到小車的動力主要來源于電池,必須采用集中供電的辦法,而控制板、 舵機和主電機的供電乂不能采用同一電壓值的電源,因此設(shè)計了電源電路,為 系統(tǒng)各模塊供電。電源電路如圖3.10o圖3.10電源電路3.5.1主控制板的供電主控制板的電流較小,直接從+5v電源取電。為了避免短路和過壓,在主 控制板上設(shè)計了過壓過流保護電路。主控制板上還引出了若干路電源,供電流 不大的外圍電路取電。3.5.2各傳感器的供電測速傳感辭的電流不大,供電較靈活,可以從主控制板上取電。而賽道檢 測傳感器電路的電流比較大,所以傳感器電路不從主控制板取電而肓接從+5v 電源取電,以避免電流大時主控板
19、保護電路誤動作,造成電壓損失。3.5.3電機的供電為了使電機達到理想的轉(zhuǎn)速,獲得理想的轉(zhuǎn)矩,電機育接從+7.2v電池取電。 因為主電機驅(qū)動芯片中集成了電機電源和邏輯電源的隔離電路,因此電機轉(zhuǎn)動 時對其它電源的干擾大大降低了。3.5.4舵機的供電舵機的響應(yīng)速度與其電源電壓有關(guān)。因此,為了獲得更快的響應(yīng)速度,舵 機的供電采用其工作上限電壓+6v,用lm7806將電池電壓穩(wěn)壓成+6v后為其 單獨供電。3.6人機接口模塊的設(shè)計為了調(diào)試時監(jiān)控小車的各項參數(shù),同時提高小車對賽道的適應(yīng)性,特設(shè)計 了人機接口電路。輸入部分采用撥碼開關(guān)和發(fā)光二極管,輸出部分采用了帶漢 字字庫的128x64點陣的lcd顯示模塊。
20、調(diào)試的過程中,可以顯示主要參數(shù), 監(jiān)控小車的運行。同時,可以通過撥碼開關(guān)對程序狀態(tài)進行設(shè)置,使小車根據(jù) 不同的情況采取不同的決策方法,使調(diào)試更加具有針對性。本模塊電路如圖3.11olcd 12864-12s1 2 3 4 5 7 b b b & bwb ddddddddvssvdd vors(cs) rav(sid) e(clk)psbnc /rstnc ledai.bdkph®<16pii2ph3ph4ph3ph6ph8ph8¥sw dip-8ii-pho ph? ph7 phtph4ph?ph6ph7rj3iilkrkq=ikrij=n<里lj|1k
21、 rtq=tk rhfj=n< k2(r=n<8805.1i 0)805,| cd805.| c0805,co8o5.i c0805.| 00805.| c0805圖3.11人機接口電路設(shè)計第四章控制軟件的設(shè)計4.1驅(qū)動層軟件設(shè)計4.1.1.系統(tǒng)時鐘設(shè)置為了加快系統(tǒng)響應(yīng)速度,使用單片機內(nèi)部的鎖相環(huán)電路將外部的16mhz時 鐘倍頻到48mhz,總線時鐘24mhz,以提高運算速度和系統(tǒng)響應(yīng)速度。具體的設(shè)置如下:refdv = 0x01;synr = 0x02;設(shè)置系統(tǒng)時鐘為48mhz靠鎖相環(huán)產(chǎn)生的時鐘頻率由下面的公式得到:pllclk = 2x oscclk x 和 +公式 3refd
22、v +1顯然,采用16mhz的外部晶體振蕩器,可以得到48mhz的系統(tǒng)頻率、24mhz 的總線頻率。4.1.2主電機和舵機驅(qū)動考慮舵機對pwm信號的要求較高,為了提高精度,將單片機的8路8位 的pwm輸出調(diào)整為4路16位的pwm輸出。主電機驅(qū)動采用pwm輸出控制,利用mc9s12dg128的pwm輸出,將調(diào) 制信號送到mc33886的in1信號輸入端,通過調(diào)整占空比調(diào)整電機轉(zhuǎn)速,in2 輸入端接地。舵機的控制同樣采用pwm輸出控制,舵機的轉(zhuǎn)角是通過調(diào)整高電平的寬 度來控制的。根據(jù)要求,hs-925型舵機的pwm周期為18ms20ms,兩側(cè)的極 限位置的高電平寬度為1ms和2ms。在控制的過程當
23、屮,根據(jù)小車前輪的實際 轉(zhuǎn)角,對上面的值稍做了些補償。對pwm模塊的具體設(shè)置如下:pwmpol = oxff;pwmclk = 0;pwmctl = oxfo;pwmprclk = 0x31;pwmper23 = period23;pwmper45 = period45;設(shè)置極性為高電平選擇時鐘為clock a和b/clock a= bus clock/2 ;/clock b= bus clock/8/period23為23通道的周期/period45為45通道的周期pwmdty23 = 0;pwmdty45 = 0;4.1.3速度檢測的計數(shù)和處理速度檢測電路的輸出是頻率變化的矩形波。耍測量小
24、車的速度,主要方法有兩種:測周法和測頻法。測頻方案是使用增強型定時器溢出中斷功能產(chǎn)生一個43ms的定時中斷,在 這個設(shè)定時間內(nèi),用單片機的脈沖累加器對紅外傳感器產(chǎn)生的脈沖進行計數(shù), 定時溢岀時,記錄紅外傳感器產(chǎn)生的脈沖數(shù)。因為電機的轉(zhuǎn)速和紅外傳感器產(chǎn) 生的矩形波頻率成止比,通過測頻,就可以間接地得到電動機的轉(zhuǎn)速,進而得 到小車的整體速度,對小車釆取閉環(huán)控制。但這個方案對速度測量周期較長。43ms的中斷周期直接影響算法對實時速 度變化的響應(yīng)(算法周期為9ms),對加速和減速極為不利。因此決定采用測周 方案。測周方案是使用單片機的實時中斷,設(shè)定一個47us的中斷,同時啟用輸入 捕捉功能,對測速傳感
25、器傳回的脈沖信號的上升沿進行捕捉。使用實時中斷對 上升沿信號之間的時間間隔進行計數(shù),以t二w47 (n為記得的實時中斷數(shù)量)來計算電機轉(zhuǎn)速。測周的響應(yīng)周期由電機的轉(zhuǎn)速決定,一般不超過loms, 所以響應(yīng)速度大大提高。4.1.4賽道檢測的數(shù)據(jù)采集和處理上層的紅外傳感器采集賽道的模擬電壓,如果檢測到黑線,該路的傳感器 模擬電壓應(yīng)偏高。將其送到a/d的輸入端,采集輸入的電壓。a/d轉(zhuǎn)換器用軟 件將其設(shè)為10位轉(zhuǎn)換,每個序列8個通道,從通道0開始進行連續(xù)轉(zhuǎn)換。具體的設(shè)置如下:atd0ctl2_adpu = 1;atd0ctl2_affc = 1; 正常上電 標志位快速清零atd0ctl3 = 0x00
26、;八路轉(zhuǎn)換通道組成序列atd0ctl4_smp0 = 1;atd0ctl4_prs2 = 1;atd0ctl4_prs0 = 1;十位轉(zhuǎn)換精度 十二分頻atd0ctl5_djm = 1;atd0ctl5_scan = 1;atd0ctl5.mult = 1; 右端對齊 無符號數(shù) 序列轉(zhuǎn)換 多通道轉(zhuǎn)換atd0dien=0x00;禁止數(shù)字量輸入下層的傳感器輸出量為數(shù)字量,將其輸入到pts 口。將pts 口設(shè)置為輸入, 讀取端口寄存器里的值即可。4.2決策層軟件計算法設(shè)計系統(tǒng)軟件流程圖,如圖4.1。主程序初始化a/d采集讀取"下層傳感器分析數(shù)擁計算角度速應(yīng)挖制圖4主程序流程圖4.2.1上層
27、傳感器決策對于上層傳感器的模擬電壓量,由a/d轉(zhuǎn)換后,由于其相對連續(xù)的變化量, 采用樣條函數(shù)對其進行計算,由5個傳感器,模擬出前方跑道的黑白曲線,求 出曲線的最大點,此最大點即為黑線中心點所在的位置。計算公式如下:fi+ l(t) = at3+bt2+ct+d0<t<0.5公式4其中:a = -4pi+12pi+1 12pi+24pi+3b 二 4pi-l opi+1 +8pi+22pi+3c =pi+pi+2d 二 pi+l該式的實質(zhì)是每四個相鄰的數(shù)據(jù)點可以確定中間一段拋物樣條曲線。曲線 圖,如圖4.2。r.i圖4.2拋物樣條曲線樣條曲線是用拋物線作為基本曲線,通過一定的數(shù)學方法
28、,把一組離散的 數(shù)據(jù)點用一條復合的曲線光滑地連接起來。在這里,每四個相鄰的數(shù)據(jù)點可以 確定屮間一段三次拋物樣條曲線,上層5個傳感器可以構(gòu)造出4段連續(xù)曲線, 其具體構(gòu)造方法如下:屮間兩段釆用三次拋物樣條構(gòu)造。對于兩個邊界樣條,采用一種特殊的處 理方式,將三次樣條降為二次樣條。對于二次樣條,由于已知樣條端點值和一 側(cè)的一階導數(shù),使得此二次樣條可解,從而使構(gòu)造的樣條函數(shù)整體為一階光滑 可導,充分利用了傳感器的所有信息。因為該方法構(gòu)造的函數(shù)有較好的可導性 和連續(xù)性,所以可以通過解析法精確求解該函數(shù)的極大點,此極大點正為黑線 所在的位置。同時由于該函數(shù)利用的是5個傳感器返回的相對信息,具有較強 的抗干擾
29、能力。這種方法彌補了紅外傳感器賽道空間分辨率低的缺點,并充分利用了單片 機a/d采集的功能。4.2.2下層傳感器決策下層傳感器主要用來對上層傳感器進行校驗。由于上層傳感器抬起較高, 但其可視范圉較小。所以在車行駛在曲率較大的彎道上時,跑道黑線可能偏出 其可視范圉,造成錯誤。但下層傳感器由于緊貼地面,其可視范圍相對較大, 所以可以用來約束上層傳感器的檢測黑線的范圍。4.2.3速度閉環(huán)控制速度控制采用數(shù)字pid算法,通過整定參數(shù),使電動機的響應(yīng)達到滿意的 速度和精度。pid控制的基本思想是對誤差進行比例積分微分運算,實現(xiàn)對系統(tǒng)的基本控 制。離散后的pid用誤差的累積加和代替積分,用兩次誤差的差分代
30、替微分。 當采樣周期很小時,可以近似地認為系統(tǒng)為連續(xù)系統(tǒng)。通過整定三種運算的增 益來調(diào)整電機系統(tǒng)的響應(yīng)速度和超調(diào)量的人小。第五章調(diào)試說明以下的幾個問題是調(diào)試屮遇到的難點:5.1編譯軟件使用編譯軟件使用時受到licence的限制,單一文件不能超過lk。因此采用多個 文件聯(lián)結(jié)編譯,問題便得到了有效的解決。5.2硬件電路設(shè)計調(diào)試在調(diào)試過程中,采用led顯示下層傳感器邏輯狀態(tài),以便檢查下層數(shù)字量 傳感器的穩(wěn)定性及方向性;對于上層模擬量傳感器使用lcd顯示其各個數(shù)值, 同時顯示車輪轉(zhuǎn)速等信息。因為上層傳感器的位置較高,容易受到外界光線的干擾。調(diào)試時,由于各 個紅外傳感器光學和電學特性的差異,上層傳感器有
31、時出現(xiàn)狀態(tài)跳變的情況, 導致小車的自適應(yīng)性較差。為了增強小車的自適應(yīng)性,在軟件屮加入了對小車 的訓練。通過訓練,控制器記錄下小車上層各傳感器感受到的最大值和最小值, 然后對其進行線性補償。這樣就可以把小車上層各傳感器的特異性消除,解決 各傳感器光學和電學特性不一致的問題。加入訓練z后,小車的運行效果有了 很大改善。5.3軟件算法效率的測試為了測試軟件的算法效率,考慮采用實時時鐘進行計時。但是如果在調(diào)試 的過程屮采用單步或設(shè)置斷點調(diào)試,實時時鐘會對調(diào)試造成麻煩。在實際的調(diào)試屮,采用了固定端口取反的辦法測試算法效率。在每一次算 法循環(huán)結(jié)束z后,對一個端口(例如porta)進行取反操作。隨著算法的不
32、斷 循環(huán),在測試端口上會產(chǎn)生一定頻率的方波。用示波器觀察方波的半周期,就 可以得到算法執(zhí)行一次的準確時間。實踐證明,這種方法非常有效。5.4機械結(jié)構(gòu)調(diào)試機械結(jié)構(gòu)的調(diào)試,主要問題是舵機、后輪位置的調(diào)節(jié)。舵機的調(diào)整采用機 械調(diào)整和軟件補償并行的方法。先通過軟件發(fā)指令給舵機,使其位于正屮位置, 然后調(diào)整兩個連桿,目測兩輪處于平行位置,然后通過軟件對直道的轉(zhuǎn)角進行 補償,使其在直道上基本不出現(xiàn)抖動。需要注意的地方是,舵機的調(diào)節(jié)與連桿 的尺寸有著密切的聯(lián)系,需要嚴格按照說明書上的尺寸進行調(diào)解,否則會出現(xiàn) 前輪的左右輪受力不均,無法對準零點的現(xiàn)象。后輪的調(diào)節(jié)要簡單的多,調(diào)節(jié)電機和后輪轉(zhuǎn)軸,使其能夠自由轉(zhuǎn)動
33、且不發(fā) 生左右擺動即可。第六章小車模型改造后的主要技術(shù)參數(shù)小車模型改造后的主要技術(shù)參數(shù)見表6.1和表6.2。表6.1小車外形參數(shù)表l/cmw/cmh/cmm/g4025141132/:長w:寬h;高m:質(zhì)量表6.2小車電路參數(shù)表p/wns/cm77msg/嚇7.6160.750.951667p:電路功耗n:傳感器個數(shù)s:賽道信息檢測精度t:代碼運行周期g:電容總?cè)萘康谄哒陆Y(jié)論通過這次設(shè)計,小車基本實現(xiàn)了按黑線規(guī)定的賽道較高速行進,能較好的 完成各項技術(shù)指標。文章都對其所涉及方案論證、系統(tǒng)設(shè)計,以及單片機程序 代碼設(shè)計以及軟件流程進行了較詳細的闡述。值得一提的是,在傳感器的布局 和上層紅外傳感器
34、檢測的算法設(shè)計上進行了創(chuàng)新性的設(shè)計,使其大大增加了車 體的前瞻性和對賽道的檢測精度。但系統(tǒng)在整體控制上還可以再進一步優(yōu)化, 希望在接下來的時間內(nèi)得以完善。參考文獻1 freescale semiconductor. mc33886.pdf, 2006,2 卓晴,王班,王磊.基于面陣ccd的賽道參數(shù)檢測方法幾電子產(chǎn)品世界,2006,13(4): 141-143.康華光.電子技術(shù)基礎(chǔ)模擬部分(第四版)m.北京:高等教育出版社,19994邵貝貝.單片機嵌入式應(yīng)用的在線開發(fā)方法m.北京:清華大學出版社,2004附錄a遲滯比較器門限電壓估算公式的推導圖aj反相輸入遲滯比較器電路一般情況下,輸出電壓vo與
35、輸入電壓vi不成線性關(guān)系,輸出電壓轉(zhuǎn)換的臨 界條件是vp=vd=w,顯然這里的vp就是門限電壓。根據(jù)圖al,利用疊加原理 有:rmref | 尺20& + r-)7?| + r、根據(jù)輸出電壓巾的不同值(voh或vol),可分別求出上門限電壓vt+和下 門限電壓vt_分別為:reb公式a2盡匕防i r$oh r + rr /?| + r-)公式a3那么,門限寬度為:r2(vo” -)/? +/?2公式a-4附錄b系統(tǒng)源代碼main.c:#include ''define.h"#include <stdlib.h>#include <hidef.
36、h>#include <mc9s 12dg 128.h>include “pwm.h”include “ad.h”#pragma linknfo derivative hmc9sl2dgl28bh#define disable_steer pwme_pwme3=0#define left 2#define right 1#define ahead 0typedef struct int minaveravernum;int biliexploravernumj;int templatevalue;e2promdata;constinttablerate21=0 y2 ,3 ,
37、4 ,5 ,6 ,7 ,8 ,9,10,11,12 ,14 ,16 ,18 ,20 ,22 ,24 ,26 ,28 ,30;int *tablev;constinttesttablev46二23,23,23 ,23 ,23 ,24 ,24 ,24 ,24 ,25 ,25 ,25 ,25 ,25 ,25 ,25 ,26 ,26 ,26 ,26 ,27 ,27 ,27 ,27 ,27 ,25;char drvcar;int averavernum;int template vai ue; 標準探測基木值int biliexploravernum;char pthstate8;/control/in
38、t v; /當前速度int ev; /期望速度int dv; /差距int movv; 速度修正量int speed; /當前電機岀力int rate;/cs/int ent;int curv;/extern void curpoint(void);extern void controlv(void);extern void lcd_busy();extern void lcd_init();extern void lcd_writecom(char dis_com);extern void lcd_writedat(char dis_dat);extern void lcd_writedbc
39、(char dis_addr_x,char dis_addr_y,char dis_dat); extern void lcd.writenum(char dis_addr_x,char dis_addr_y,int dis_num); extern void lcd_writestr(char dis_addr_x,char dis_addr_y,char* str);extern void lcd_setaddr(char dis_addr_x,char dis_addr_y);extern void lcd_delay(int ent);/currectmove/int maxavera
40、vernum;int minaveravernum;/5point/char lowpointpos;unsigned int kpoint;unsigned char numl,num2;unsigned int num;/decision/float maxpos;int p5;char roadkey;設(shè)定直道和彎道狀態(tài)int countroad; 計數(shù)處于直道的個數(shù)char roundtimeskey;float prepos;float predrv;上一周期的驅(qū)動方向int acount; 計數(shù)算法運行次數(shù)float predrv;前一次轉(zhuǎn)動角度int dhr;上層傳感器返冋角度微
41、分int dhlr;上下層傳感器返回角度微分int prehr;int prehlr;float sumerror;int countround; 計數(shù)處于彎道的個數(shù)unsigned char maxposlight;float dpos;char averstate;/eeprom/extern int drivecar(void);extern void ect_int(void);extern void realtimer_int(void);extern void currectexp(void);void car_run(char ss);void delay(unsigned in
42、t t);void carcontrol(void)car_run(drvcar);controlv();void carstaterun(void) /read tiaoma/int tiaoma;int i;e2promdata *e2promdata;tiaoma=pt h;switch(tiaoma)case 0: /read train from e2prome2promdata=(e2promdata *)malloc(sizeof(e2promdata); doread_eeprom(e2promdata);for (i=0;i<avernum;i+)biliexplori
43、=e2promdata->biliexplori; minaveri=e2promdata->mii)averi;templatevalue=e2promdata->template value;while( template vai ue=0);break;case 1: currectexpo;e2promdata=(e2promdata *)malloc(sizeof(e2promdata);for (i=o;ivavernum;i+)e2promdata->biliexplori=biliexploril;e2promdata->minaveri=mina
44、veri;e2promdata->templatevalue=template value; erase_eeprom(); /train and write e2prom write_eeprom(e2promdata);break;free (e2promdata);void main(void) int i,j;disablelnterrupts;ectjnto; realtimer_int();ddra=0xff;ddrs=0x00;ddrt_ddrt6 二 0; ddrb=0bl 111 1011;pll_init();start_pll();pwmnit();lcd_init
45、();/go ahead/h input計數(shù)處于直道的個數(shù)ad_init();start_steer(o,o);ddrh=0x00; car_run(0); prepos=2.(); predrv=o;speed=o; countroad=0;acount=0;roadkey=0; lowpointpos=5;for (i=0;i<10;i+)for(j=0;j<20000;j+)ad_get();porta=oxoo;v=150;maxposlight=pth; /pth 解碼for (i=0;i<&i+)pthstatei=(l &m axposlight
46、);maxposlight=(maxposlight» 1);if(pthstateo=()disablelnterrupts;elseenablelnterrupts;if(plhstatel=o)tablev=&testtablev;llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllm;) /ad_get();num 1 =pts;獲取下部探測器返冋值num2=ptt_ptt6;num=num2;num=(nuni«8);num+=numl;drvcar=(char)drivecar();
47、porta=maxposlight;carcontrol();acount=(acount+1 )%200;if (acount=0) lcd_writenum(l ,1 ,(int)(maxpos+0.05)* lo.of); lcd_writenum(8,l,(int)roadkey);lcd_writenum(l ,2,(int)drvcar);lcd_writenum(8,2,(int)ev);lcd_writenum( 1,3,(int)(dpos+0.05)* 10.of);lcd_writenum(8,3,(int)averstate);void delay(unsigned i
48、nt t) unsigned int i;for (i二0;ivt;i+) void car_run(char ss) if (ss<0) start_steer(left,ss);if (ss>0) start_steer(right,ss);if (ss=0) start_steer(ahead,o); pwm.h:#include <hidef.h>#include <mc9s 12dg 128.h>#define period45 0x2ee0#define period23 0xdea8#definedi portb_bito#define d2
49、portb_bit1/set the system clock 48mhzvoid plljnit(void) refdv=0x01;synr=0x02;void start_pll(void) asmbrclr crgflg#$0&*bset clksel,#$80void pwmnit(void) pwme=0x00;/close pwmpwmpol=oxff;/set the polarity highpwmclk=0;pwmctl=0xf0;/select the clock a and bpwmprclk=0x31;/clock a= bus clock/2 ; clock
50、b= busclock/8pwmper23=period23;pwmper45 二 period45;pwmdty23 二 0;pwmdty45=0;void start_motor(unsigned int dt) / dt:duty_cycledl=0;d2=l;pwmdty45=dt*0x000c;pwme_pwme5=1;/enable pwm45void start_steer(unsigned char d,char aglin) unsigned char agl;if (aglin<0) agl=0-aglin;else agl=aglin;switch (d) case
51、 1:pwmdty23=4608-agl*26; break;case 0:pwmdty23=4608;break;case 2:pwmdty23=4608+agl*26;break;default:pwmdty23 二460&pwme_pwme3=1;pidx:/#define derivative lo.of#include <math.h>#define highkp 8.of上層傳感器比例項#define lowkp 6.0f下層傳感器比例項#define lowlntegral 0.005f/0.0006f/0.005f 下層傳感器積分系數(shù)#define lowl
52、imit lo.of;float lowsumerror;float lowp;float lowerror;float lowdrv; /下層傳感器輸出的轉(zhuǎn)動角度extern float maxpos;extern char lowpointpos;int prelowpointpos;下層傳感器積分界限表float lowlimit9= -45.0f,-20.0f ,-10.0f ,-5.0f, 0.0f,5.0f ,10.0f ,20.0f,45.0f);下層傳感器積分速率表const float lowaddrate9j=-0.05f,-0.00f,-0.00f,-0.00f, 0.0
53、f,0.00f,0.00f,0.00f,0.05f;下層傳感器比例表const float lowrate9=-40.0f,-30.0f,-l 6.0f,-l 0.0f,0.0f,l 0.0f,l 6.0f,30.0f,40.0f;void lowfunc(void)下層傳感器比例項函數(shù)lowp=loweitor*low kp;return;void lowcalc(void)if (lowpointpos>2&&lowpointpos<5)lowsumerror-=0.0 if;if (lowpointpos>5&&lowpointpos<8)lowsumerror+=0.01 f;/* if (lowpointpos<=2|lowpointpos>=8)lowsunierror=0.0f;*/if (lowsumerror>5.0f) lowsumerror=5.0f;訐(lowsumerror<-5.0f) lowsumerror=-5.0f;/ prelowpointpos=lowpointpos;void pidinit(voi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)營銷管理咨詢合同范例
- 辦公器材購銷合同范例
- 光伏正規(guī)合同范例
- 光伏設(shè)計合同范例
- 倉庫院子出租合同范例
- 代銷協(xié)議合同范例
- 臨時停車管理合同范例
- 農(nóng)村垃圾池合同范例
- 義烏廠房裝修設(shè)計合同范例
- 別墅景觀工程合同范例
- 2025年陜西延長石油集團有限責任公司招聘筆試參考題庫含答案解析
- 2024年湖南省中考英語試題卷(含答案)
- 新版五金公司績效考核表
- 曼昆《經(jīng)濟學原理》(微觀經(jīng)濟學分冊)第8版 全部答案
- 第八章:微生物的生態(tài)
- 第5講:工作研究的分析技術(shù)
- ISO9001ISO14001ISO45001內(nèi)審檢查表
- 【告知牌】某公司全套重大危險源告知牌(7頁)
- 現(xiàn)代密碼學公鑰密碼體制課件
- 【課件】第十四單元第二十七節(jié)肖邦課件-2021-2022學年高中音樂人音版(2019)必修音樂鑒賞
- 贏時勝財務(wù)估值系統(tǒng)日常操作指引
評論
0/150
提交評論