![安徽賽區(qū)-攝像頭組-合肥工業(yè)大學(xué)-斛兵一隊(duì)技術(shù)報(bào)告_第1頁(yè)](http://file4.renrendoc.com/view12/M06/1E/29/wKhkGWci5oGACPJeAADvr5mjFuE747.jpg)
![安徽賽區(qū)-攝像頭組-合肥工業(yè)大學(xué)-斛兵一隊(duì)技術(shù)報(bào)告_第2頁(yè)](http://file4.renrendoc.com/view12/M06/1E/29/wKhkGWci5oGACPJeAADvr5mjFuE7472.jpg)
![安徽賽區(qū)-攝像頭組-合肥工業(yè)大學(xué)-斛兵一隊(duì)技術(shù)報(bào)告_第3頁(yè)](http://file4.renrendoc.com/view12/M06/1E/29/wKhkGWci5oGACPJeAADvr5mjFuE7473.jpg)
![安徽賽區(qū)-攝像頭組-合肥工業(yè)大學(xué)-斛兵一隊(duì)技術(shù)報(bào)告_第4頁(yè)](http://file4.renrendoc.com/view12/M06/1E/29/wKhkGWci5oGACPJeAADvr5mjFuE7474.jpg)
![安徽賽區(qū)-攝像頭組-合肥工業(yè)大學(xué)-斛兵一隊(duì)技術(shù)報(bào)告_第5頁(yè)](http://file4.renrendoc.com/view12/M06/1E/29/wKhkGWci5oGACPJeAADvr5mjFuE7475.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄摘要 VAbstract V第一章引言 11.1比賽背景 1總體方案介紹 1本文結(jié)構(gòu) 2第二章機(jī)械結(jié)構(gòu)部分的設(shè)計(jì)及調(diào)整 3攝像頭的安裝 4加速度計(jì)和陀螺儀模塊的安裝 52.3測(cè)速傳感器的安裝 5重心調(diào)整 6第三章硬件電路設(shè)計(jì)說(shuō)明 93.1硬件設(shè)計(jì)概述 92傳感器模塊 93.2.1攝像頭模塊 93.2.2陀螺儀和加速度傳感器模塊 123.2.3速度采集傳感器 12電機(jī)驅(qū)動(dòng)模塊 12電源模塊 13第四章算法實(shí)現(xiàn)及軟件設(shè)計(jì) 164.1整體算法說(shuō)明 164.2PID控制算法介紹 184.2.1位置式PID 194.2.2增量式PID 194.3.3PID參數(shù)整定 20直立控制 204.2.1直立模型分析 214.2.2直立控制算法說(shuō)明 21速度控制 224.3.1速度控制理論分析 224.3.2速度PID控制 22路徑識(shí)別及方向控制算法 244.4.1邊線提取 244.4.2起跑線識(shí)別 244.4.3障礙物識(shí)別 254.4.4人字識(shí)別處理 264.4.5十字的處理 264.4.6方向控制策略 27第五章開(kāi)發(fā)工具、調(diào)試環(huán)境 285.1單片機(jī)開(kāi)發(fā)工具 285.2波形調(diào)試上位機(jī) 285.3攝像頭模塊調(diào)試 29系統(tǒng)調(diào)試 29第六章智能車(chē)主要技術(shù)參數(shù)說(shuō)明 30第七章 結(jié)論 31【參考文獻(xiàn)】 32附件 33附件1:部分程序源代碼 33附件2電路圖 61 摘要本技術(shù)報(bào)告以第九屆飛思卡爾杯全國(guó)大學(xué)生智能車(chē)競(jìng)賽為背景,詳細(xì)介紹了基于數(shù)字?jǐn)z像頭為傳感器的自主尋跡智能車(chē)設(shè)計(jì)在研究了往飛思卡爾”智能車(chē)設(shè)計(jì)方案的基礎(chǔ)上,提出了直立智能車(chē)設(shè)計(jì)方案。本文首先講述了系統(tǒng)硬件設(shè)計(jì),其中包括系統(tǒng)主板設(shè)計(jì),電機(jī)驅(qū)動(dòng)電路板設(shè)計(jì)等。在硬件設(shè)計(jì)的基礎(chǔ)上,本文介紹了系統(tǒng)軟件設(shè)計(jì)及算法,并且對(duì)比了位置式與增量式PID的區(qū)別關(guān)鍵字:飛思卡爾自主尋跡直立智能車(chē)數(shù)字?jǐn)z像頭PIDAbstractInthebackgroundthe“Freescale”CupNationalSmartcarCompetition,thispapergivesanaccountofthedesignofintelligentcar,whichisbasedondigitalcamera.Bystudyingpreviousdesignsofintelligentcars,thepaperputsforwardthemethodwhichcanextracttheinformationofsmartcar.Thepaperfirstlyelaboratesthesystem,whichthesystemdesign,themotormodule,andsoon.Thenthepaperintroducesthedesignofsoftwaresystem,whichincludesmoduletesting,followcontrolleralgorithm,distinguishthetwodiffererntalgorithm.Finally,thewholesystemmeetstheexpectativerequirement.Keywords: Freescale,Auto-tracing,Smartcar,digitalcameraPID第一章引言1.1比賽背景智能車(chē)是一種高新技術(shù)密集型的新型汽車(chē)它涵蓋的范圍廣泛包括模式識(shí)別、傳感器技術(shù)、自動(dòng)化控制實(shí)現(xiàn)、電力電子技術(shù)、計(jì)算機(jī)技術(shù)等多個(gè)領(lǐng)域。在國(guó)際上已經(jīng)形成智能汽車(chē)研究、設(shè)計(jì)、開(kāi)發(fā)、競(jìng)賽的熱潮。在我國(guó)教育部為了加強(qiáng)大學(xué)生實(shí)踐創(chuàng)新能力和團(tuán)隊(duì)合作精神的培養(yǎng),委托教育部高等學(xué)校自動(dòng)化專業(yè)教學(xué)指導(dǎo)分委員會(huì)主辦了每年一度的全國(guó)大學(xué)生智能汽車(chē)競(jìng)賽。全國(guó)大學(xué)生智能汽車(chē)競(jìng)賽是在競(jìng)賽組委會(huì)提供的統(tǒng)一汽車(chē)模型平臺(tái)上使用飛思卡爾半導(dǎo)體公司的8位16位微控制器作為核心控制模塊通過(guò)設(shè)計(jì)道路識(shí)別傳感器和電機(jī)驅(qū)動(dòng)電路編寫(xiě)相應(yīng)軟件及裝配模型車(chē),制作一個(gè)能夠自主識(shí)別道路的模型汽車(chē)按照規(guī)定路(路線賽前未知行進(jìn),以完成時(shí)間最短者為優(yōu)勝。智能車(chē)競(jìng)賽目前已經(jīng)發(fā)展有攝像頭、光電組和電磁組三個(gè)組別比賽賽車(chē)速度與比賽質(zhì)量也越來(lái)越高,競(jìng)爭(zhēng)更是日趨激烈??傮w方案介紹五個(gè)部分組成。其中,以單片機(jī)為核心,配有傳感器、測(cè)速電路,執(zhí)行機(jī)構(gòu)以及它們的驅(qū)動(dòng)電路構(gòu)成了控制系統(tǒng)的硬件;信息處理與控制算法由運(yùn)行在單片機(jī)中的控制軟件完成。在檢測(cè)方面,系統(tǒng)是以O(shè)V7725數(shù)字?jǐn)z像頭作為傳感器進(jìn)行路徑識(shí)別,使用模擬的陀螺儀和加速度計(jì)采集車(chē)模角度和角速度信息??刂品矫嫦到y(tǒng)重點(diǎn)研究在保證智能車(chē)直立穩(wěn)定行駛的前提下,提高系統(tǒng)的響應(yīng)速度。同時(shí)需要處理傳感器獲得信號(hào),濾除干擾,提高系統(tǒng)可靠性。此外,機(jī)械結(jié)構(gòu)的調(diào)整是保證智能車(chē)系統(tǒng)能夠穩(wěn)定可靠運(yùn)行的前提。因此,機(jī)械結(jié)構(gòu)的調(diào)校是至關(guān)重要的,機(jī)械結(jié)構(gòu)調(diào)整的原則是:減少質(zhì)量,降低重心,防止轉(zhuǎn)向側(cè)滑。本文結(jié)構(gòu)本文共分為五章第一章主要是介紹了比賽的背景及智能車(chē)系統(tǒng)總體方案的介紹;第二章從智能車(chē)系統(tǒng)的機(jī)械結(jié)構(gòu)出發(fā),詳細(xì)闡述了智能車(chē)系統(tǒng)各部分機(jī)第四章是介紹了智能系統(tǒng)的軟件算法;第五章則對(duì)智能車(chē)部分模塊的調(diào)試仿真做出相關(guān)的介紹;第六章對(duì)智能車(chē)的技術(shù)參數(shù)作簡(jiǎn)要說(shuō)明。第七章簡(jiǎn)述智能車(chē)制作過(guò)程中得出的結(jié)論。第二章機(jī)械結(jié)構(gòu)部分的設(shè)計(jì)及調(diào)整智能車(chē)的機(jī)械結(jié)構(gòu)在賽車(chē)速度快慢上起著重要作用要想提高智能車(chē)的速度,只有將機(jī)械結(jié)構(gòu)與控制算法同時(shí)做好。總體來(lái)說(shuō),智能車(chē)的重心要盡可能低,以減小智能車(chē)在過(guò)彎的時(shí)側(cè)翻的可能性,攝像頭行過(guò)程中保證智能車(chē)的穩(wěn)定性,在此基礎(chǔ)上,簡(jiǎn)化布局,使智能車(chē)外觀簡(jiǎn)潔。下面將具體闡述本智能車(chē)的機(jī)械結(jié)構(gòu)的設(shè)計(jì)及調(diào)整。整車(chē)外觀如圖所示:圖2.0.1智能車(chē)總體圖攝像頭的安裝攝像頭安裝應(yīng)保證足夠的前(前瞻過(guò)近會(huì)影響提速過(guò)遠(yuǎn)容易誤判賽道,通過(guò)實(shí)驗(yàn),我們將前瞻固定到120CM,盲區(qū)在18CM,有效視野范圍1M左右。我們選擇碳纖維管作為攝像頭的支架,該材料質(zhì)量輕、硬度高。在平時(shí)的調(diào)試過(guò)程中,為防止意外撞擊導(dǎo)致攝像頭損壞,我們安裝了保護(hù)桿;并且在攝像頭模塊電路板與支架之間用兩根桿子形成三角支架,以提高穩(wěn)定性。攝像頭安裝效果如圖2.1.1所示圖2.1.1攝像頭安裝圖加速度計(jì)和陀螺儀模塊的安裝本智能車(chē)采用模擬加速度計(jì)和陀螺儀該模塊包括一個(gè)三軸加速度計(jì)一個(gè)水平方向陀螺儀及一個(gè)豎直方向陀螺儀。該模塊安裝位置與其使用性能密切相關(guān),故安裝時(shí)應(yīng)注意:豎直陀螺儀旋轉(zhuǎn)中心應(yīng)在智能車(chē)車(chē)輪軸心線處,轉(zhuǎn)向陀螺儀應(yīng)與車(chē)輪軸心線平行,且兩個(gè)陀螺儀應(yīng)在車(chē)身中心線處。同時(shí)模塊安裝不宜過(guò)高,過(guò)高會(huì)放大噪聲,使采樣得到的數(shù)據(jù)不準(zhǔn)確。且加速度計(jì)輸出值轉(zhuǎn)化為角度的過(guò)程本身是一個(gè)近似過(guò)程,前提是加速度計(jì)位置比較低,可以被忽略。但是陀螺儀位置不能放太低,我們?cè)鴩L試把該模塊放在兩個(gè)電機(jī)中間,由于電機(jī)運(yùn)行時(shí)產(chǎn)生的抖動(dòng)很難消除,對(duì)陀螺儀產(chǎn)生干擾。在保證獲得數(shù)據(jù)準(zhǔn)確可靠的前提下,我們選擇將該模塊安裝在智能車(chē)中部。2.3測(cè)速傳感器的安裝我們選擇了歐姆龍500線光電編碼器作為測(cè)速傳感器安裝時(shí)過(guò)緊會(huì)增大智能車(chē)的行駛阻力,過(guò)松會(huì)導(dǎo)致滑齒,計(jì)數(shù)不準(zhǔn)。經(jīng)過(guò)驗(yàn)證,E車(chē)模的編碼器齒輪與車(chē)輪齒輪屬于一級(jí)嚙合,安裝時(shí)相比于D車(chē)模更容易出現(xiàn)滑齒現(xiàn)象,這可能是E車(chē)模相比于D車(chē)模比較難調(diào)校之處。安裝時(shí)綜合考慮了齒輪嚙合和摩擦的影響。2.4電路板的安裝為了提高智能車(chē)的穩(wěn)定性我們將電機(jī)驅(qū)動(dòng)與主板分開(kāi)盡可能減小兩個(gè)電機(jī)和兩個(gè)編碼器之間的空隙。重心調(diào)整降低智能車(chē)重心我們將電池安裝在盡可能低的位置。前期試驗(yàn)都是在D車(chē)模上進(jìn)行,如圖2.5.1,這是平衡車(chē)最經(jīng)典的安裝方式,存在一定缺陷,車(chē)模在這種方式下由于是直立運(yùn)行,受到阻力較大,且電路板和攝像頭等器件安裝的位置較高,重心相對(duì)較高。在試驗(yàn)后期我們采用傾斜的安裝方式加以改善。雖然我們最終采用第二種方案,但是對(duì)于兩種方案,我們沒(méi)有做精確對(duì)比。方式二也存在如下隱患:今年坡道角度最高達(dá)20度,限制電池離車(chē)身底板及其附屬物不超過(guò)3CM,這意味著倒著跑電池位置不能放太低,也不能太遠(yuǎn)離車(chē)身。電池位置若調(diào)整不好很可能比方式一還高,重心可能更高。如圖2.5.2圖2.5.1D車(chē)機(jī)械安裝方式PAGEPAGE28圖2.5.2E車(chē)機(jī)械安裝方式第三章硬件電路設(shè)計(jì)說(shuō)明3.1硬件設(shè)計(jì)概述本智能車(chē)采用MK60作為主核心。需要3.3V及5V供電。系統(tǒng)還包括:編碼器接口、通訊接口、液晶接口、撥碼開(kāi)關(guān)、陀螺儀加速度計(jì)接口、電機(jī)驅(qū)動(dòng)接口和攝像頭接口調(diào)試時(shí)采用串口收發(fā)數(shù)據(jù)下面將針對(duì)每一部分做具體論述。2傳感器模塊3.2.1攝像頭模塊(1)攝像頭工作原理攝像頭以隔行掃描的方式采樣圖像,當(dāng)掃描到某點(diǎn)時(shí),就通過(guò)圖像傳感芯片將該點(diǎn)處圖像的灰度轉(zhuǎn)換成與灰度對(duì)應(yīng)的電壓值然后將此電壓值通過(guò)視頻所示,攝像頭連續(xù)地掃描圖像上的一行,就輸出一段連續(xù)的視頻信號(hào)該電壓信號(hào)的高低起伏正反映了該行圖像的灰度變化情況當(dāng)掃描完一行視頻信號(hào)端就輸出一個(gè)低于最低視頻信號(hào)電壓的電(如3保持一段時(shí)間。這樣相當(dāng)于緊接著每行圖像對(duì)應(yīng)的電壓信號(hào)之后會(huì)有一個(gè)電壓“凹槽”,此“凹槽”叫做行同步脈沖,它是掃描換行的標(biāo)志。然后掃描新的一行,如此下去直到掃描完該場(chǎng)的信號(hào)接著會(huì)出現(xiàn)一段場(chǎng)消隱信號(hào)其中有若干個(gè)他的消隱脈沖(即該消隱脈沖的持續(xù)時(shí)間遠(yuǎn)長(zhǎng)于其他的消隱脈沖的持續(xù)時(shí)間),幀場(chǎng)圖像。圖(2)攝像頭對(duì)比在模塊電路板上直接集成硬件二值化電路,輸出的二值化圖像十分清晰,噪聲較少。(2)像素輸出順序數(shù)字?jǐn)z像頭輸出圖像時(shí),一般都是從左到右,有上到下逐個(gè)輸出(部分芯片可配置輸出順序):圖3.2.2像素輸出順序有些攝像頭有奇偶場(chǎng),是采用隔行掃描方法,把一幀圖象分為奇數(shù)場(chǎng)和偶數(shù)場(chǎng)兩場(chǎng)。(ov7725沒(méi)有奇偶場(chǎng)之分)圖3.2.3行中斷時(shí)序圖3.2.4場(chǎng)中斷時(shí)序3.2.2陀螺儀和加速度傳感器模塊陀螺儀與加速度計(jì)模塊為直接購(gòu)買(mǎi)的成品集成模塊,上面集成了水平和豎直陀螺儀ENC-03和加速度計(jì)MMA7361.單片機(jī)對(duì)其進(jìn)行AD采樣,進(jìn)行軟件濾波后得到角度和角速度,用它們來(lái)控制小車(chē)的直立圖3.2.5加速度計(jì)陀螺儀集成模塊3.2.3速度采集傳感器速度采集使用歐姆龍500線光電編碼器增量式編碼器是直接利用光電轉(zhuǎn)換原理輸出三組方波脈沖A、B和Z相;A、B兩組脈沖相位差90°,從而可方便地判斷出旋轉(zhuǎn)方向.我們將這些脈沖信號(hào)連接到單片機(jī)的計(jì)數(shù)器端口,通過(guò)單片機(jī)的正交解碼功能可獲得車(chē)模的轉(zhuǎn)速以及轉(zhuǎn)向。電機(jī)驅(qū)動(dòng)模塊電機(jī)驅(qū)動(dòng)電路板為一個(gè)由分立元件制作的直流電動(dòng)機(jī)可逆雙極型橋式驅(qū)動(dòng)器,其功率元件由四個(gè)N溝道功率MOSFET管組成,額定工作電流可以輕易達(dá)到100A以上,大大提高了電動(dòng)機(jī)的工作轉(zhuǎn)矩和轉(zhuǎn)速。由于E車(chē)電機(jī)為雙電機(jī),所以,我們用兩路相同的驅(qū)動(dòng)器分別驅(qū)動(dòng)兩個(gè)電機(jī)。該驅(qū)動(dòng)器主要由以下部分組成:PWM信號(hào)輸入接口、邏輯換向電路、死區(qū)控制電路、電源電路、上橋臂功率MOSFET管柵極驅(qū)動(dòng)電壓泵升電路、功率MOSFET管柵極驅(qū)動(dòng)電路、橋式功率驅(qū)動(dòng)電路、緩沖保護(hù)電路等,電路如圖3.2所示。電路中肖特基二極管IN5819保證了電平VB_1、VB_2低于12V,VB_1高于MOTOR_A,VB_2高于MOTOR_B。電路如下圖示,首先使能端為高時(shí),驅(qū)動(dòng)橋這時(shí)才會(huì)起作用。PWM0為某一占空比,PWM1為低時(shí),使得IR2104驅(qū)動(dòng)輸出分別為低電平和相應(yīng)的電壓值。驅(qū)動(dòng)橋電路左邊上方IRLR7843與右邊下側(cè)的IRLR7843導(dǎo)通,另外的兩個(gè)MOS管不導(dǎo)通,此時(shí)電機(jī)正轉(zhuǎn)。因此,一個(gè)電機(jī)是由兩路PWM控制,顯然當(dāng)PWM輸出狀態(tài)與上述相反則為反轉(zhuǎn)。轉(zhuǎn)速的大小取決于占空比的大小。圖3.3.1驅(qū)動(dòng)電路原理電源模塊智能車(chē)電池提供的是7.2V的電壓。為了使智能車(chē)正常工作,需要將7.2V的電壓轉(zhuǎn)化為3.3V和5V的電壓。智能車(chē)系統(tǒng)用的5V穩(wěn)壓芯片是LM2940和LT1086。LM2940可以提供較大的穩(wěn)壓電流,具有較好的穩(wěn)壓性能,且紋波電壓較小。陀螺儀、編碼器需要5V供電,為減少單片電源芯片的功耗,避免編碼器等影響主控芯片工作,本設(shè)計(jì)采用了一片LM2940和一片LT1086分別為主控芯片和其他需要5V的模塊供電。鷹眼和液晶采用AMS1117_3.3V供電,如果直接讓電池電壓通過(guò)AMS1117_3.3V芯片轉(zhuǎn)化為3.3V,容易使芯片發(fā)熱,故我們先將電池電壓轉(zhuǎn)化為5V,再轉(zhuǎn)化為3.3V.穩(wěn)壓芯片供電,其原理圖如下圖所示:AMS1117_3.3V穩(wěn)壓電路如圖3.4.1所示圖3.4.13.3V電源5VLM2940穩(wěn)壓電路如圖3.4.2所示圖3.4.2LM29405VLT1086穩(wěn)壓電路如圖3.4.3所示圖3.4.3LT108612VMC34063升壓電路如圖3.4.4所示圖3.4.4MC34063 第四章算法實(shí)現(xiàn)及軟件設(shè)計(jì)車(chē)模是否能夠正常高速穩(wěn)定運(yùn)行,除了硬件系統(tǒng)外,軟件系統(tǒng)的設(shè)計(jì)也很重要。整個(gè)軟件系統(tǒng)主要由三部分構(gòu)成:直立控制、速度控制及轉(zhuǎn)向控制。控制算法均基于負(fù)反饋理論。4.1整體算法說(shuō)明軟件控制程序主要用到K60中的PIT模塊、PWM模塊、AD模塊、SCI模塊、FTM模塊,GPIO模塊等。PIT模塊用于設(shè)置定時(shí)中斷;PWM模塊用于控制電機(jī)的運(yùn)轉(zhuǎn),AD模塊用于讀取加速度計(jì),陀螺儀的數(shù)據(jù)信息,SCI模塊用于串口調(diào)試,F(xiàn)TM模塊用于編碼器數(shù)據(jù)采集。我們圖像采集使用K60的DMA模塊進(jìn)行采集,主函數(shù)按普通的處理方法,在主循環(huán)里:采集圖像,圖像處理,然后把處理結(jié)果存放在全局參數(shù)里。PIT定時(shí)執(zhí)行直立控制:采集模塊參數(shù),然后直立控制,根據(jù)圖像處理的全局參數(shù)來(lái)進(jìn)行速度控制和方向控制。主循環(huán):圖像采集與處理—寫(xiě)—>全局參數(shù)—讀—>直立控制的速度控制和方向控制。圖4.1.1主程序流程圖開(kāi)始邊線處開(kāi)始邊線處第i行搜索初始化搜索位置搜索左邊緣,右邊緣求中線兩個(gè)邊線都找到或者搜索到左右極限i--
所有邊線是否搜索結(jié)束邊線中線搜索結(jié)束本行邊線找到對(duì)未找到邊線進(jìn)行補(bǔ)邊YYNYN圖4.1.2圖像處理流程圖4.2PID控制算法介紹在工程實(shí)際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡(jiǎn)稱PID控制,又稱PID調(diào)節(jié)。PID控制器問(wèn)世至今已有近70年歷史,它以其結(jié)構(gòu)簡(jiǎn)單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。當(dāng)被控對(duì)象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學(xué)模型時(shí),控制理論的其它技術(shù)難以采用時(shí),系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須依靠經(jīng)驗(yàn)和現(xiàn)場(chǎng)調(diào)試來(lái)確定,這時(shí)應(yīng)用PID控制技術(shù)最為方便。即當(dāng)我們不完全了解一個(gè)系統(tǒng)和被控對(duì)象,或不能通過(guò)有效的測(cè)量手段來(lái)獲得系統(tǒng)參數(shù)時(shí),最適合用PID控制技術(shù)。PID控制,實(shí)際中也有PI和PD控制。PID控制器是一種線性控制器,它根據(jù)給定值與實(shí)際輸出值構(gòu)成控制偏差。將偏差的比例(P)、積分(I)和微分(D)通過(guò)線性組合構(gòu)成控制量,對(duì)被控對(duì)象進(jìn)行控制,故稱PID控制器,原理框圖如圖4.2.1所示。圖4.2.1PID控制器原理框圖在計(jì)算機(jī)控制系統(tǒng)中,使用的是數(shù)字PID控制器,控制規(guī)律為:公式1公式2式中k——采樣序號(hào),k=0,1,2…;r(k)——第k次給定值;c(k)——第k次實(shí)際輸出值;u(k)——第k次輸出控制量;e(k)——第k次偏差;e(k-1)——第k-1次偏差;KP——比例系數(shù);TI——積分時(shí)間常數(shù);TD——微分時(shí)間常數(shù);T——采樣周期。簡(jiǎn)單說(shuō)來(lái),PID控制器各校正環(huán)節(jié)的作用如下:比例環(huán)節(jié):及時(shí)成比例地反映控制系統(tǒng)的偏差信號(hào),偏差一旦產(chǎn)生,控制器立即產(chǎn)生控制作用,以減少偏差。積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無(wú)差度。積分作用的強(qiáng)弱取決于積分時(shí)間常數(shù),越大,積分作用越弱,反之則越強(qiáng)。微分環(huán)節(jié):能反映偏差信號(hào)的變化趨勢(shì)(變化速率),并能在該偏差信號(hào)變得太大之前,在系統(tǒng)中引入一個(gè)有效的早期修正信號(hào),從而加快系統(tǒng)的動(dòng)作速度減小調(diào)節(jié)時(shí)間。數(shù)字PID控制算法通常分為位置式PID控制算法和增量式PID控制算法。4.2.1位置式PID位置式PID中,由于計(jì)算機(jī)輸出的u(k)直接去控制執(zhí)行機(jī)構(gòu)(如閥門(mén)),u(k)的值和執(zhí)行機(jī)構(gòu)的位置(如閥門(mén)開(kāi)度)是一一對(duì)應(yīng)的,所以通常稱公式2為位置式PID控制算法。位置式PID控制算法的缺點(diǎn)是:由于全量輸出,所以每次輸出均與過(guò)去的狀態(tài)有關(guān),計(jì)算時(shí)要對(duì)過(guò)去e(k)進(jìn)行累加,計(jì)算機(jī)工作量大;而且因?yàn)橛?jì)算機(jī)輸出的u(k)對(duì)應(yīng)的是執(zhí)行機(jī)構(gòu)的實(shí)際位置,如計(jì)算機(jī)出現(xiàn)故障,u(k)的大幅度變化,會(huì)引起執(zhí)行機(jī)構(gòu)位置的大幅度變化,這種情況往往是生產(chǎn)實(shí)踐中不允許的,在某些場(chǎng)合,還可能造成嚴(yán)重的生產(chǎn)事故。因而產(chǎn)生了增量式PID控制的控制算法,所謂增量式PID是指數(shù)字控制器的輸出只是控制量的增量△u(k)。4.2.2增量式PID當(dāng)執(zhí)行機(jī)構(gòu)需要的是控制量的增量(例如:驅(qū)動(dòng)步進(jìn)電機(jī))時(shí),可由式2推導(dǎo)出提供增量的PID控制算式。由式2可以推出式3,式2減去式3公式3公式4公式4稱為增量式PID控制算法,可以看出由于一般計(jì)算機(jī)控制系統(tǒng)采用恒定的采樣周期T,一旦確定了KP、TI、TD,只要使用前后三次測(cè)量值的偏差,即可由式4求出控制增量。增量式PID具有以下優(yōu)點(diǎn):(1)由于計(jì)算機(jī)輸出增量,所以誤動(dòng)作時(shí)影響小,必要時(shí)可用邏輯判斷的方法關(guān)掉。(2)手動(dòng)/自動(dòng)切換時(shí)沖擊小,便于實(shí)現(xiàn)無(wú)擾動(dòng)切換。此外,當(dāng)計(jì)算機(jī)發(fā)生故障時(shí),由于輸出通道或執(zhí)行裝置具有信號(hào)的鎖存作用,故能保持原值。(3)算式中不需要累加??刂圃隽俊鱱(k)的確定僅與最近k次的采樣值有關(guān),所以較容易通過(guò)加權(quán)處理而獲得比較好的控制效果。但增量式PID也有其不足之處:積分截?cái)嘈?yīng)大,有靜態(tài)誤差;溢出的影響大。使用時(shí),常選擇帶死區(qū)、積分分離等改進(jìn)PID控制算法。4.3.3PID參數(shù)整定運(yùn)用PID控制的關(guān)鍵是調(diào)整KP、KI、KD三個(gè)參數(shù),即參數(shù)整定。PID參數(shù)的整定方法有兩大類:一是理論計(jì)算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過(guò)理論計(jì)算確定控制器參數(shù);二是工程整定方法,它主要依賴工程經(jīng)驗(yàn),直接在控制系統(tǒng)的試驗(yàn)中進(jìn)行,且方法簡(jiǎn)單、易于掌握,在工程實(shí)際中被廣泛采用。由于智能車(chē)系統(tǒng)是機(jī)電高耦合的分布式系統(tǒng),并且要考慮賽道的具體環(huán)境,要建立精確的智能車(chē)運(yùn)動(dòng)控制數(shù)學(xué)模型有一定難度,而且我們對(duì)車(chē)身機(jī)械結(jié)構(gòu)經(jīng)常進(jìn)行修正,模型參數(shù)變化較為頻繁,理論計(jì)算整定法可操作性不強(qiáng),最終我們采用了工程整定方法。直立控制這部分是軟件設(shè)計(jì)中最基礎(chǔ)也是最難的一個(gè)部分,直立控制做得好,小車(chē)的速度和方向控制才更容易實(shí)現(xiàn)。智能車(chē)直立控制通過(guò)PD控制實(shí)現(xiàn)將智能車(chē)簡(jiǎn)化為倒立擺增加額外受力,使得恢復(fù)力與位移方向相反。4.2.1直立模型分析圖4.2.1倒立擺受力分析F=mgsinθ-macosθ公式5只要輪子運(yùn)動(dòng)的加速度a>g,就可以產(chǎn)生回復(fù)力,來(lái)保持車(chē)模的直立。當(dāng)然回復(fù)力越大,對(duì)于保持直立越好,但是太大也會(huì)導(dǎo)致系統(tǒng)振蕩,當(dāng)系統(tǒng)發(fā)生振蕩時(shí),可以加入一定的阻尼力來(lái)消除振蕩,這就可以通過(guò)倒立擺的角速度分量來(lái)控制擺的平衡。4.2.2直立控制算法說(shuō)明直立控制采用PD控制實(shí)現(xiàn)。單片機(jī)采集陀螺儀和加速度的值后進(jìn)行歸一化處理,使用卡爾曼進(jìn)行濾波,得到車(chē)模的角度和角速度。MMA7361=adc_once(ZOUT,ADC_12bit);ENC03=adc_once(Gyro2,ADC_12bit);Gyro_Now=(GYRO_VAL-ENC03)*Gyro_ratio;angle_offset_vertical=(MMA7361_vertical-MMA7361)*MMA7361_ratio;Kalman_Filter(angle_offset_vertical,Gyro_Now);g_fAngControlOut=(angle-car_set_angle)*P_ANGLE+angle_dot*D_ANGLE;速度控制4.3.1速度控制理論分析通常情況下速度控制部分由光電編碼器把輪子的速度反饋回來(lái),然后通過(guò)負(fù)反饋機(jī)制做一個(gè)PID控制器就可以控制速度,但是在直立小車(chē)系統(tǒng)里的速度控制就不是那么簡(jiǎn)單了,它看起來(lái)是一個(gè)正反饋的機(jī)制。當(dāng)需要車(chē)模加速時(shí),并不是通常意義上加大給電機(jī)的電壓讓輪子加速,速度控制反而是讓電機(jī)減速,這樣車(chē)模就會(huì)往前傾,這時(shí)角度控制就會(huì)與速度控制相抗衡來(lái)達(dá)到一個(gè)平衡,但是這時(shí)車(chē)模會(huì)持續(xù)向前加速,因?yàn)檐?chē)模往前有一個(gè)傾角就會(huì)有往前倒的角加速度,為了保持角度輪子也必須有一個(gè)向前的加速度,這樣車(chē)模就可實(shí)現(xiàn)加速了。要實(shí)現(xiàn)減速則要讓車(chē)模向后仰就可以了。圖4.3.1速度控制框圖4.3.2速度PID控制速度控制采用的是增量PID控制,我們只采用PI控制,積分控制能使速度最終穩(wěn)定在給定速度,比例控制能實(shí)現(xiàn)速度的快速調(diào)節(jié)。由于直立車(chē)的速度控制實(shí)際是改變車(chē)模傾角,因此速度控制對(duì)于直立控制是一種擾動(dòng),速度控制周期不能過(guò)大,控制量要平滑輸出。voidPIT1_IRQHandler(void){PIT_Flag_Clear(PIT1);Car_speed=0;//車(chē)模速度清零L_speed=-FTM_QUAD_get(FTM1);FTM_QUAD_clean(FTM1);R_speed=FTM_QUAD_get(FTM2);FTM_QUAD_clean(FTM2);Car_speed=(L_speed+R_speed)/2;Error_Speed=g_Speedgoal-Car_speed;SpeedValuePID=P_SPEED*(Error_Speed-PreError_Speed)+I_SPEED*Error_Speed+D_SPEED*(Error_Speed-2*PreError_Speed+EarError_Speed);EarError_Speed=PreError_Speed;PreError_Speed=Error_Speed;g_fSpeedControlOut+=SpeedValuePID;g_fSpeedControlOutOld=g_fSpeedControlOutNew;g_fSpeedControlOutNew=g_fSpeedControlOut;}voidSpeedControlOutput(void){floatfValue;fValue=g_fSpeedControlOutNew-g_fSpeedControlOutOld;g_fSpeedControlOut=fValue*(float)(g_nSpeedControlPeriod+1)/SPEED_CONTROL_PERIOD+g_fSpeedControlOutOld;路徑識(shí)別及方向控制算法4.4.1邊線提取圖4.4.1起跑線圖片由于攝像頭已經(jīng)做好了硬件二值化,而且噪點(diǎn)很少,這簡(jiǎn)化了我們對(duì)邊線地提取。引導(dǎo)線提取思路:(1)為提高搜索邊線的穩(wěn)定性,邊線從最后一行往第一行依次搜索邊線;(2)由于發(fā)車(chē)是在直道上發(fā)車(chē),故第一場(chǎng)圖像從中間往兩邊搜索,后面的行以上一行的中點(diǎn)為搜索起點(diǎn)往兩邊搜索,這種搜索方式比全行搜索的優(yōu)點(diǎn)在于避免了會(huì)將左右邊線混淆的情況,由于要對(duì)障礙物進(jìn)行檢測(cè),故沒(méi)有使用邊緣檢測(cè)算法;(3)往左搜索到白黑跳變標(biāo)記為左邊線,往右搜索到白黑跳變標(biāo)記為右邊線;(4)如果兩個(gè)邊線都找到,中點(diǎn)就是左右邊線的平均值;(5)如果只找到一個(gè)邊線,中點(diǎn)就根據(jù)找到邊線的斜率進(jìn)行補(bǔ)線;(6)如果兩個(gè)邊線都沒(méi)有找到,則中點(diǎn)就是上一行的中點(diǎn);4.4.2起跑線識(shí)別圖4.4.2起跑線要能夠準(zhǔn)確的識(shí)別起跑線那么我們首先要能夠分析出是跑線的特征,并且抓住最主要的特征,也就是他不同于賽道其它的地方。賽道有一個(gè)長(zhǎng)為1米的出發(fā)區(qū),圖為串口示波器發(fā)回的起跑線效果圖,計(jì)時(shí)起始點(diǎn)。兩邊分別有一個(gè)長(zhǎng)度10厘米黑色計(jì)時(shí)起始線,賽車(chē)前端通過(guò)起始線作為比賽計(jì)時(shí)開(kāi)始或者結(jié)束時(shí)刻。由上可知,起跑線前后最少有1m的直道,有兩條10cm的黑帶,并且黑帶間距為9cm,最后是起跑線不會(huì)出現(xiàn)在窄道區(qū)域。有了上面對(duì)起跑線的特征的分析就可以對(duì)起跑線進(jìn)行識(shí)別。步驟如下:(1)小車(chē)速度是否達(dá)到起跑線檢測(cè)速度;(2)檢測(cè)是否為直道;(3)判斷跳變的次數(shù)是否達(dá)到檢測(cè)要求;(4)判斷黑條的寬度是否符合預(yù)設(shè);(5)延時(shí)一段時(shí)間后才進(jìn)行停止線檢測(cè)(6)檢測(cè)到停止線后關(guān)電機(jī)停車(chē)。因?yàn)榍懊嬉呀?jīng)說(shuō)過(guò)起跑線的在直道上,彎道不可能出現(xiàn)起跑線,所以主要檢測(cè)賽道是否為直道,在彎道上不檢測(cè)。本方案在實(shí)際調(diào)試和應(yīng)用中,發(fā)現(xiàn)其算法簡(jiǎn)單,特征明確,并且準(zhǔn)確率較高。4.4.3障礙物識(shí)別圖4.4.3障礙物E車(chē)輪距寬,不能不進(jìn)行處理就通過(guò)障礙,障礙物的識(shí)別是判斷左右邊線的跳變,哪邊有跳變障礙物就在哪一邊,識(shí)別障礙物的位置后通過(guò)增大偏差量使車(chē)轉(zhuǎn)過(guò)去。由于檢測(cè)跳變可能會(huì)受到起跑線的干擾,因此要對(duì)起跑線處的邊線進(jìn)行處理。4.4.4人字識(shí)別處理圖4.4.4人字人字進(jìn)行縱向搜索,對(duì)跳變進(jìn)行計(jì)數(shù)和長(zhǎng)度判斷,識(shí)別后增大偏差量讓車(chē)轉(zhuǎn)過(guò)去,但這種方法的劣勢(shì)在于適應(yīng)性差,不同的速度還要有對(duì)應(yīng)的偏差量,這個(gè)增大了調(diào)試的難度。4.4.5十字的處理對(duì)于十字我們沒(méi)有進(jìn)行識(shí)別,在搜尋邊線時(shí),判斷找到的左右邊線是否是十字的拐點(diǎn),如果是十字的拐點(diǎn)則進(jìn)行一次線性插值補(bǔ)線,這里要避免小S和左右邊線上的突變點(diǎn)的干擾。圖4.4.5十字補(bǔ)線4.4.6方向控制策略對(duì)于雙電機(jī)直立車(chē)模,轉(zhuǎn)向靠電機(jī)控制車(chē)輪差速進(jìn)行轉(zhuǎn)向,方向控制量由識(shí)別出的路徑偏移量通過(guò)計(jì)算給出,轉(zhuǎn)向控制采用PD控制。由于車(chē)模轉(zhuǎn)向時(shí)容易產(chǎn)生過(guò)沖,我們使用了水平陀螺儀來(lái)抑制轉(zhuǎn)向過(guò)沖。floatSteerPidCal(floaterror){floatDirect=0.0;SteerPIDe0=error;ENC03_level=adc_once(Gyro1,ADC_12bit);Gyro_Now_level=GYRO_level-ENC03_level;Direct=P_dir*SteerPIDe0+D_dir*(SteerPIDe0-SteerPIDe1)+P_dir_Gyro*Gyro_Now_level;SteerPIDe1=SteerPIDe0;returnDirect;}第五章開(kāi)發(fā)工具、調(diào)試環(huán)境5.1單片機(jī)開(kāi)發(fā)工具在K60的開(kāi)發(fā)上我們使用的是IAR_6.3他編譯簡(jiǎn)單,下載簡(jiǎn)潔給我們的操作做來(lái)了很大的方便,至于具體的操作可以參看開(kāi)始界面的使用幫助。圖5.1.1IAR編譯環(huán)境5.2波形調(diào)試上位機(jī)波形調(diào)試使用了虛擬示波器,用于在線觀測(cè)卡爾曼濾波后最終算出的車(chē)模傾角對(duì)于加速度計(jì)所得傾角的追蹤情況,看是否出現(xiàn)“過(guò)沖”或“跟蹤緩慢”,角度融合情況對(duì)于直立控制十分關(guān)鍵。此外,在調(diào)試階段還可以觀察車(chē)模運(yùn)行中相應(yīng)參數(shù)情況,包括速度變化曲線,位移偏移量的變化曲線,轉(zhuǎn)向差速時(shí)內(nèi)側(cè)輪和外側(cè)輪輪速曲線等等,通過(guò)對(duì)這些參數(shù)的記錄和分析,可以隨時(shí)調(diào)整相關(guān)控制參數(shù),以使車(chē)模達(dá)到最佳運(yùn)行狀態(tài),以便在后期實(shí)現(xiàn)車(chē)模提速。圖5.2.1波形調(diào)試上位機(jī)5.3攝像頭模塊調(diào)試圖5.3.1攝像頭上位機(jī)系統(tǒng)調(diào)試系統(tǒng)調(diào)試是在機(jī)械設(shè)計(jì)總體確定程序框架無(wú)誤的基礎(chǔ)上進(jìn)行的需要突破的地方主要是提高小車(chē)的穩(wěn)定性及對(duì)環(huán)境的適應(yīng)能力,以及競(jìng)賽策略的設(shè)定。在提高轉(zhuǎn)向穩(wěn)定性與提高速度時(shí)需要不斷調(diào)整參數(shù),以獲得一組合理的參數(shù),讓小車(chē)穩(wěn)定運(yùn)行。通過(guò)反復(fù)試驗(yàn)我們得出了一組適合該智能車(chē)系統(tǒng)的參數(shù)使智能車(chē)能穩(wěn)定行駛。第六章智能車(chē)主要技術(shù)參數(shù)說(shuō)明項(xiàng)目參數(shù)路徑檢測(cè)方法(競(jìng)賽組)攝像頭組車(chē)模幾何尺寸(長(zhǎng)、寬、高)320mm/205mm/380mm車(chē)模平均電流(勻速行駛)(毫安)2000電路電容總量(微法)約1400uF傳感器種類及個(gè)數(shù)攝像頭1個(gè),測(cè)速2個(gè)加速度計(jì)1個(gè),陀螺儀2個(gè)賽道信息檢測(cè)空間精度(毫米)10賽道信息檢測(cè)頻率(次/秒)67車(chē)模重量(不含電池)(千克)0.785kg第七章 結(jié) 論攝像頭與直立融合,攝像頭相對(duì)于其他傳感器,優(yōu)勢(shì)相對(duì)明顯,對(duì)賽道采集時(shí)信息量大,穩(wěn)定性高,對(duì)環(huán)境依賴相對(duì)較低,算法可發(fā)揮空間大。平衡控制本身是直立、控速、轉(zhuǎn)向三者的結(jié)合,想讓小車(chē)立起來(lái)并不難,但是如果讓車(chē)跑的既穩(wěn)又快,除了精準(zhǔn)的參數(shù)調(diào)整以外還需要嚴(yán)謹(jǐn)?shù)倪壿嬎惴?。攝像頭圖像采集和處理部分的時(shí)間較長(zhǎng),范圍從7ms~30ms之間不等,系統(tǒng)電機(jī)控制時(shí)間從5ms~20ms不等,一般取5ms,如何安排好兩部分之間的關(guān)系,容易產(chǎn)生難題。系統(tǒng)執(zhí)行一個(gè)周期所用的時(shí)間為5ms左右耗時(shí)較多的是陀螺儀加速度計(jì)的采樣部分所以合理分配單片機(jī)資源提高資源利用率變成至關(guān)重要的一部分。目前,智能車(chē)系統(tǒng)研究還存在如下問(wèn)題:(1)智能車(chē)在過(guò)十字交叉時(shí)有時(shí)會(huì)誤判(2)在恒定目標(biāo)速度下,過(guò)彎時(shí)速度變化明顯(3)通過(guò)人字元素識(shí)別不穩(wěn)定,有時(shí)略有滯后。針對(duì)智能車(chē)過(guò)十字交叉誤判問(wèn)題將主要從軟件上優(yōu)化路徑識(shí)別算法方面解決。針對(duì)智能車(chē)過(guò)彎速度變化問(wèn)題,將主要從控制算法和控制參數(shù)上做進(jìn)一步優(yōu)化解決。針對(duì)智能車(chē)元素識(shí)別滯后問(wèn)題,將主要從識(shí)別特征上優(yōu)化路徑算法,在控制方法上嘗試新的控制策略。此外,參數(shù)的高效率選取需做到:在調(diào)試程序的過(guò)程中,建立相應(yīng)的數(shù)學(xué)模型,提高調(diào)試程序的目的性。【參考文獻(xiàn)】京5】 凌陽(yáng)技份限司PID節(jié)制電速控制206.6.BrianC 附件附件1:部分程序源代碼/************************************************名稱:main*功能:攝像頭組人機(jī)交互模塊程序撥碼開(kāi)關(guān)接低電平,進(jìn)入人機(jī)交互撥碼開(kāi)關(guān)接高電平,退出人機(jī)交互退出之前求各個(gè)參數(shù)顯示:各個(gè)電壓的實(shí)際值各個(gè)PID參數(shù)主頁(yè)面后期可拓展對(duì)攝像頭和陀螺儀,加速度計(jì),電機(jī)驅(qū)動(dòng),編碼器的工作狀態(tài)的檢測(cè)可設(shè)置參數(shù):速度PID參數(shù)直立PD參數(shù)方向PD參數(shù)車(chē)模角度車(chē)模速度死區(qū)電壓如果需要還可進(jìn)行擴(kuò)展說(shuō)明:*硬件:野火核心板K60FX512,野火鷹眼二代ST7735S*軟件平臺(tái):IAR6.3*創(chuàng)建時(shí)間:2014-4-1*修改時(shí)間:2014-4-8修改說(shuō)明:1.優(yōu)化完善代碼2014-4-8*版本號(hào):V1.0*************************************************/#include"include.h"/********************************************說(shuō)明:LEFT鍵:正常顯示狀態(tài)時(shí)切換屏幕設(shè)置狀態(tài)時(shí)移位屏幕1:主屏幕顯示屏幕2:電壓采樣顯示屏幕3:速度檢測(cè)顯示屏幕4:速度PID參數(shù)顯示屏幕1:直立PD參數(shù),方向PD參數(shù)顯示UP:調(diào)節(jié)PID參數(shù)大小OK:進(jìn)入設(shè)置PID參數(shù)頁(yè)面SET:在參數(shù)設(shè)置頁(yè)面換行LEFT:*********************************************//********************函數(shù)申明*********************************/voidwelcome(void);//開(kāi)機(jī)歡迎頁(yè)面子程序voidkey_process(void);//大循環(huán)按鍵判斷子程序voidkey_left(void);//左鍵子程序(移屏或移位)voidkey_up(void);//↑鍵子程序(主要用于設(shè)置數(shù)據(jù)大?。﹙oidkey_set(void);//設(shè)置鍵子程序voidkey_ok(void);voidkey_right(void);//設(shè)置鍵子程序voidkey_down(void);voidOledHandle(void);//人機(jī)交互處理程序//voidfuzhi(unsignedchar*p,unsignedcharstart,unsignedcharend,unsignedchar*q);voidLCD_Fill(void);//LCD清屏voidfprint(uint8*str,floatdata);//小數(shù)轉(zhuǎn)化為字符串voidInit_Parameter();//進(jìn)入人機(jī)交互前將當(dāng)前參數(shù)轉(zhuǎn)換為字符方便進(jìn)行顯示voidAD_init();//電壓AD采樣初始化voidKeyInit();//按鍵初始化voidBack();//從人機(jī)交互調(diào)試界面返回正常界面voidLCD_fb_char(Site_tsite,uint8ascii,uint16Color,uint16bkColor);//反白顯示字符voidLCD_fb_str(Site_tsite1,Site_tsite,uint8*Str,uint16Color,uint16bkColor);//反白顯示字符串/********************變量聲明*********************************/unsignedcharolcd_display_row=20;//行unsignedcharolcd_display_column=0;//列unsignedchargn_screen_num;//頁(yè)數(shù)unsignedchargn_set_flag;//按下SET鍵標(biāo)志位/***********速度PID*******************************/unsignedcharP_Spe[13]={'P','_','S','P','E',':','1','0','.','0','0','0','\0'};//電機(jī)PID控制參量設(shè)置unsignedcharI_Spe[13]={'I','_','S','P','E',':','0','0','.','0','0','0','\0'};//電機(jī)PID控制參量設(shè)置unsignedcharD_Spe[13]={'D','_','S','P','E',':','0','0','.','0','0','0','\0'};//電機(jī)PID控制參量設(shè)置unsignedcharSpeed[12]={'S','P','E','E','D',':','0','0','0','0','\0'};//速度/***********方向PID*******************************/unsignedcharP_Dir[13]={'P','_','D','i','r',':','0','0','.','0','0','0','\0'};//方向PDunsignedcharD_Dir[13]={'D','_','D','i','r',':','0','0','.','0','0','0','\0'};///***********直立PID*******************************/unsignedcharP_Zl[12]={'P','_','Z','l',':','0','0','.','0','0','0','\0'};//直立PDunsignedcharD_Zl[12]={'D','_','Z','l',':','0','0','.','0','0','0','\0'};//unsignedcharV_Dea[10]={'V','_','D','e','a',':','0','0','0','\0'};//死區(qū)電壓unsignedcharCarAng[13]={'C','a','r','A','n','g',':','0','0','.','0','0','\0'};//車(chē)模角度unsignedcharBatPower[10]={'B','A','T',':','0','0','.','0','0','\0'};/********變量聲明**************g_f_PID_Parameter[0]:P_SPEED,g_f_PID_Parameter[1]:I_SPEED,g_f_PID_Parameter[2]:D_SPEEDg_f_PID_Parameter[3]:P_DIRECTION,g_f_PID_Parameter[4]:D_DIRECTION,g_f_PID_Parameter[5]:P_ZILI,g_f_PID_Parameter[6]:D_ZILIg_f_PID_Parameter[7]:Speed速度給定g_f_PID_Parameter[8]:V_dea死區(qū)電壓************存儲(chǔ)各個(gè)PID參數(shù)的值**************/floatg_f_PID_Parameter[10];unsignedcharstrbuf[30];//存放字符串/************************************函數(shù)名稱:fprint*函數(shù)功能:將浮點(diǎn)型00.000數(shù)據(jù)轉(zhuǎn)換成字符串*入口參數(shù):floatdata:將要轉(zhuǎn)換的浮點(diǎn)型數(shù)據(jù)*出口參數(shù):uint8*str:轉(zhuǎn)換后的字符串************************************/uint32temp;voidfprint(uint8*str,floatdata){temp=(uint32)(data*1000);if(temp>=10000)//百位{*str=temp/10000%10+'0';}else{*str='0';}str++;if(temp>=1000)//十位{*str=temp/1000%10+'0';}else{*str='0';}str++;*str='.';//小數(shù)點(diǎn)str++;if(temp>=100)//小數(shù)點(diǎn)后一位{*str=temp/100%10+'0';}else{*str='0';}str++;if(temp>=10)//小數(shù)點(diǎn)后兩位{*str=temp/10%10+'0';}else{*str='0';}str++;if(temp>=1)//小數(shù)點(diǎn)后三位{*str=temp%10+'0';}else{*str='0';}}/************************************函數(shù)名稱fuzhi*函數(shù)功能:將源數(shù)組的值賦值給目的數(shù)組從start到end位置*入口參數(shù):*p:目的數(shù)組start:目的數(shù)組起始位置end:目的數(shù)組結(jié)束位置*q:源數(shù)組****************************************************/voidfuzhi(unsignedchar*p,unsignedchars,unsignedcharend,unsignedchar*q){unsignedchari;for(i=s,p=p+s;i<end;i++,p++,q++){*p=*q;}}/************************************函數(shù)名稱:fuzhi*函數(shù)功能:進(jìn)入人機(jī)交互前將當(dāng)前參數(shù)轉(zhuǎn)換為字符方便進(jìn)行顯示****************************************************/voidInit_Parameter()//進(jìn)入人機(jī)交互前將當(dāng)前參數(shù)轉(zhuǎn)換為字符方便進(jìn)行顯示{unsignedcharstart;//速度P參數(shù)fprint(strbuf,g_f_PID_Parameter[0]);start=6;fuzhi(P_Spe,start,13,strbuf);//速度I參數(shù)fprint(strbuf,g_f_PID_Parameter[1]);start=6;fuzhi(I_Spe,start,13,strbuf);//速度D參數(shù)fprint(strbuf,g_f_PID_Parameter[2]);start=6;fuzhi(D_Spe,start,13,strbuf);//方向P參數(shù)fprint(strbuf,g_f_PID_Parameter[3]);start=6;fuzhi(P_Dir,start,13,strbuf);//方向D參數(shù)fprint(strbuf,g_f_PID_Parameter[4]);start=6;fuzhi(D_Dir,start,13,strbuf);//直立P參數(shù)fprint(strbuf,g_f_PID_Parameter[5]);start=5;fuzhi(P_Zl,start,12,strbuf);//直立D參數(shù)fprint(strbuf,g_f_PID_Parameter[6]);start=5;fuzhi(D_Zl,start,12,strbuf);//車(chē)速sprintf((char*)strbuf,"%d",((uint16)g_f_PID_Parameter[7]));start=6;fuzhi(Speed,start,12,strbuf);//死區(qū)電壓sprintf((char*)strbuf,"%d",((uint16)g_f_PID_Parameter[8]));start=6;fuzhi(V_Dea,start,12,strbuf);//車(chē)角度f(wàn)print(strbuf,g_f_PID_Parameter[9]);start=7;fuzhi(CarAng,start,12,strbuf);}/*********************************函數(shù)名稱:AD_init*函數(shù)功能:電壓AD采樣初始化**********************************/voidAD_init(){adc_init(ADC1_SE16);//3V3adc_init(ADC0_SE10);//7V2adc_init(ADC1_SE14);//5Vadc_init(ADC1_SE15);//5V}/***************************函數(shù)名稱:KeyInit*函數(shù)名稱:人機(jī)交互按鍵初始化**************************/voidKeyInit(){LEFT_INIT;RIGHT_INIT;DOWN_INIT;UP_INIT;OK_INIT;SET_INIT;}/********************************函數(shù)名稱:Back*函數(shù)功能:從人機(jī)交互狀態(tài)返回到非調(diào)試狀態(tài),執(zhí)行其他程序*返回前求各個(gè)參數(shù)********************************/voidBack(){//退出前求各個(gè)參數(shù) //速度PID g_f_PID_Parameter[0]=(P_Spe[6]-0X30)*10+(P_Spe[7]-0X30)+(P_Spe[9]-0X30)*0.1+(P_Spe[10]-0X30)*0.01+(P_Spe[11]-0X30)*0.001;g_f_PID_Parameter[1]=(I_Spe[6]-0X30)*10+(I_Spe[7]-0X30)+(I_Spe[9]-0X30)*0.1+(I_Spe[10]-0X30)*0.01+(I_Spe[11]-0X30)*0.001; g_f_PID_Parameter[2]=(D_Spe[6]-0X30)*10+(D_Spe[7]-0X30)+(D_Spe[9]-0X30)*0.1+(D_Spe[10]-0X30)*0.01+(D_Spe[11]-0X30)*0.001;//方向PDg_f_PID_Parameter[3]=(P_Dir[6]-0X30)*10+(P_Dir[7]-0X30)+(P_Dir[9]-0X30)*0.1+(P_Dir[10]-0X30)*0.01+(P_Dir[11]-0X30)*0.001;g_f_PID_Parameter[4]=(D_Dir[6]-0X30)*10+(D_Dir[7]-0X30)+(D_Dir[9]-0X30)*0.1+(D_Dir[10]-0X30)*0.01+(D_Dir[11]-0X30)*0.001;//直立PDg_f_PID_Parameter[5]=(P_Zl[5]-0X30)*10+(P_Zl[6]-0X30)+(P_Zl[8]-0X30)*0.1+(P_Zl[9]-0X30)*0.01+(P_Zl[10]-0X30)*0.001;g_f_PID_Parameter[6]=(D_Zl[5]-0X30)*10+(D_Zl[6]-0X30)+(D_Zl[8]-0X30)*0.1+(D_Zl[9]-0X30)*0.01+(D_Zl[10]-0X30)*0.001;//速度g_f_PID_Parameter[7]=(Speed[6]-0X30)*1000+(Speed[7]-0X30)*100+(Speed[8]-0X30)*10+(Speed[9]-0X30);//死區(qū)電壓g_f_PID_Parameter[8]=(V_Dea[6]-0X30)*10+(V_Dea[7]-0X30);//車(chē)模角度g_f_PID_Parameter[9]=(CarAng[7]-0X30)*10+(D_Zl[8]-0X30)+(D_Zl[10]-0X30)*0.1+(D_Zl[11]-0X30)*0.01;}/**************************************************************************************函數(shù)名稱:OledHandle函數(shù)功能:人機(jī)交互處理 **************************************************************************************/voidOledHandle(void){int16BAT;unsignedcharstart;unsignedcharbat_strbuf[30];//存放字符串int16count=0,count1=0;gn_screen_num=0;gn_set_flag=0;Site_tsite={0,0};Site_tsite1={0,0};int16MMA7361,ENC03,ENC03_level;AD_init();//電壓AD采樣初始化KeyInit();//按鍵初始化Init_Parameter();//參數(shù)轉(zhuǎn)換while(1){/*if(1==gpio_get(PTB7))//撥碼開(kāi)關(guān)選擇退出人機(jī)交互{Back();//退出人機(jī)界面掃描LCD_Fill();//退出前清屏return;//退出人機(jī)交互調(diào)試界面}*/key_process();//按鍵掃描if(gn_set_flag==0)//非參數(shù)設(shè)置狀態(tài){if(!RIGHT){//DELAY_MS(10);if(!RIGHT){Back();//退出前求參數(shù)return;//while(!LEFT);}}if(gn_screen_num==0)//AD采樣界面{site.x=35;site.y=0;LCD_str(site,"Voltage",RED,WHITE);count++;count1++;if(count==5000){site.x=0;site.y=0;count=0;//BAT=adc_once(ADC0_SE10,ADC_12bit);//7V2//電壓顯示BAT=adc_ave(ADC0_SE10,ADC_12bit,1);fprint(bat_strbuf,(BAT*4*3.3/4096.0));start=4;fuzhi(BatPower,start,10,bat_strbuf);site.x=0;site.y+=16;LCD_str(site,BatPower,BLACK,WHITE);}if(count1==1000){site.x=0;site.y=16;count1=0;//加速度計(jì)陀螺儀采MMA7361=adc_ave(ZOUT,ADC_12bit,100);//ZENC03=adc_ave(Gyro2,ADC_12bit,100);//gyro2ENC03_level=adc_ave(Gyro1,ADC_12bit,1);//加速度計(jì)site.y+=16;sprintf((char*)strbuf,"7361:%d",MMA7361_vertical);LCD_str(site,strbuf,BLUE,WHITE);site.y+=16;sprintf((char*)strbuf,"MMA7361:%d",MMA7361);LCD_str(site,strbuf,BLACK,WHITE);//直立陀螺儀site.y+=16;sprintf((char*)strbuf,"GYRO_VAL:%d",GYRO_VAL);LCD_str(site,strbuf,BLUE,WHITE);site.y+=16;sprintf((char*)strbuf,"ENC03:%d",ENC03);LCD_str(site,strbuf,BLACK,WHITE);//水平陀螺儀site.y+=16;sprintf((char*)strbuf,"GYRO_level:%d",GYRO_level);LCD_str(site,strbuf,BLUE,WHITE);site.y+=16;sprintf((char*)strbuf,"ENC03level:%d",ENC03_level);LCD_str(site,strbuf,BLACK,WHITE);}//sprintf((char*)strbuf,"BAT:%d",(uint16)(BAT*4.036*3.3*100/4096.0));}//endofif(gn_screen_num==0)if(gn_screen_num==1)//直立,速度PID參數(shù)顯示界面{site.x=20;site.y=0;LCD_str(site,"ZL_PDSPE_PD",RED,WHITE);//直立參數(shù)site.x=0;site.y+=20;LCD_str(site,P_Zl,BLACK,WHITE);site.y+=20;LCD_str(site,D_Zl,BLACK,WHITE);site.y+=20;//速度參數(shù)LCD_str(site,P_Spe,BLACK,WHITE);site.y+=20;LCD_str(site,I_Spe,BLACK,WHITE);site.y+=20;LCD_str(site,D_Spe,BLACK,WHITE);}//endofif(gn_screen_num==1)if(gn_screen_num==2)//界面2,方向PD,死區(qū)電壓,速度,車(chē)模角度{site.x=40;site.y=0;LCD_str(site,"Dir_PD",RED,WHITE);site.x=0;site.y+=20;LCD_str(site,P_Dir,BLACK,WHITE);site.y+=20;LCD_str(site,D_Dir,BLACK,WHITE);site.y+=20;LCD_str(site,V_Dea,BLACK,WHITE);site.y+=20;LCD_str(site,Speed,BLACK,WHITE);site.y+=20;LCD_str(site,CarAng,BLACK,WHITE);}//endofif(gn_screen_num==2)if(!SET)//OK鍵功能,進(jìn)入速度PID參數(shù)設(shè)置{DELAY_MS(10);//注意此延時(shí)大小,太小則不能進(jìn)入if(gn_set_flag==1)if(!SET){gn_set_flag=1;//進(jìn)入設(shè)置頁(yè)面標(biāo)志位,進(jìn)入速度PID參數(shù)設(shè)置LCD_Fill();//清屏while(!SET);}}}//endofif(gn_set_flag==0)if(gn_set_flag==1)//進(jìn)入設(shè)置界面狀態(tài)界面1,速度PID,方向PD設(shè)置{site.x=0;site.y=0;LCD_str(site,"PIDAdjust",RED,WHITE);site1.x=olcd_display_column;//olcd_display_row;site1.y=olcd_display_row;//olcd_display_column;site.x=0;site.y=+20;LCD_fb_str(site1,site,P_Spe,BLACK,WHITE);site.y+=20;LCD_fb_str(site1,site,I_Spe,BLACK,WHITE);site.y+=20;LCD_fb_str(site1,site,D_Spe,BLACK,WHITE);site.y+=20;LCD_fb_str(s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生命教育中的心理健康國(guó)際比較
- 2025年度離婚后共同債務(wù)清償協(xié)議
- 2025年度建筑工地安全生產(chǎn)責(zé)任保險(xiǎn)合同
- 2025年度新型建筑材料采購(gòu)合同規(guī)范模板
- 2025年度快遞運(yùn)輸合同范本(含多式聯(lián)運(yùn)服務(wù))
- 2025年度國(guó)際友好城市結(jié)對(duì)共建合同
- 2025年度戶外健身器材線上線下融合銷售合同
- 2025年度5G通信技術(shù)研發(fā)合伙協(xié)議書(shū)
- 2025年度航空航天聯(lián)營(yíng)合作協(xié)議書(shū)
- 端午節(jié)詩(shī)歌朗誦稿集錦15篇
- TSXDZ 052-2020 煤礦礦圖管理辦法
- GB/T 7631.18-2017潤(rùn)滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類)的分類第18部分:Y組(其他應(yīng)用)
- 2022年第六屆【普譯獎(jiǎng)】全國(guó)大學(xué)生英語(yǔ)翻譯大賽
- GB/T 14258-2003信息技術(shù)自動(dòng)識(shí)別與數(shù)據(jù)采集技術(shù)條碼符號(hào)印制質(zhì)量的檢驗(yàn)
- 政府資金項(xiàng)目(榮譽(yù))申報(bào)獎(jiǎng)勵(lì)辦法
- 最新如何進(jìn)行隔代教育專業(yè)知識(shí)講座課件
- 當(dāng)前警察職務(wù)犯罪的特征、原因及防范,司法制度論文
- 奧特萊斯專題報(bào)告(經(jīng)典)-課件
- 《新制度經(jīng)濟(jì)學(xué)》配套教學(xué)課件
- 計(jì)算機(jī)文化基礎(chǔ)單元設(shè)計(jì)-windows
- DNA 親子鑒定手冊(cè) 模板
評(píng)論
0/150
提交評(píng)論