![電磁組-華北科技學院電磁隊技術報告_第1頁](http://file4.renrendoc.com/view12/M05/05/23/wKhkGWcl8dOAa-TJAADxCGTu9FU536.jpg)
![電磁組-華北科技學院電磁隊技術報告_第2頁](http://file4.renrendoc.com/view12/M05/05/23/wKhkGWcl8dOAa-TJAADxCGTu9FU5362.jpg)
![電磁組-華北科技學院電磁隊技術報告_第3頁](http://file4.renrendoc.com/view12/M05/05/23/wKhkGWcl8dOAa-TJAADxCGTu9FU5363.jpg)
![電磁組-華北科技學院電磁隊技術報告_第4頁](http://file4.renrendoc.com/view12/M05/05/23/wKhkGWcl8dOAa-TJAADxCGTu9FU5364.jpg)
![電磁組-華北科技學院電磁隊技術報告_第5頁](http://file4.renrendoc.com/view12/M05/05/23/wKhkGWcl8dOAa-TJAADxCGTu9FU5365.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第八屆全國大學生“飛思卡爾”杯智能汽車競賽技術報告-28-第八屆全國大學生“飛思卡爾”杯智能汽車競賽技術報告學校:華北科技學院隊伍名稱:華科電磁隊參賽隊員:董增增張心波陳鵬宇指導教師:苗志全王江華關于技術報告和研究論文使用授權的說明本人完全了解第七屆全國大學生“飛思卡爾”杯全國大學生智能汽車競賽關保留、使用技術報告和研究論文的規(guī)定,即:參賽作品著作權歸參賽者本人,比賽組委會和飛思卡爾半導體公司可以在相關主頁上收錄并公開參賽作品的設計方案、技術報告以及參賽模型車的視頻、圖像資料,并將相關內容編纂收錄在組委會出版論文集中。參賽隊員簽名: 帶隊教師簽名: 日期:
摘要本智能車系統(tǒng)以MC9S12XS128微控制器為核心,通過電感檢測模型車的運動位置和運動方向,用測速電機檢測模型車的速度。使用PID控制算法調節(jié)驅動電機的轉速和舵機的角度,完成對模型車運動速度和運動方向的閉環(huán)控制。為了提高智能車的行駛速度和可靠性,我們使用液晶模塊和無線模塊、按鍵模塊等調試手段,進行了大量底層和上層測試。實驗結果表明,該系統(tǒng)設計方案可行。關鍵字:MC9S12XS128、PID、液晶
AbstractThisintelligentcarsystemMC9S12XS128microcontrollerasthecore,throughtheinductancedetectionmodelcarpositionanddirectionofmovement,withthespeedofthemotorspeeddetectionmodelcar.UsingPIDcontrolalgorithmtoadjustthespeedofthedrivemotorandsteeringAngle,tocompletethemodelcarmovementspeedandmovementdirectionofclosedloopcontrol.Inordertoimprovethespeedandreliabilityoftheintelligentvehicle,weusetheLCDmoduleandthewirelessmodule,keysmoduledebuggingmethods,suchasalargeamountofbottomandtoptest.Theexperimentalresultsshowthatthesystemdesignschemeisfeasible.Keywords:MC9S12XS128,PID,LCD目錄TOC\o"1-3"\h\u406第一章引言 -1-19582第二章模型車總體技術方案 -2-311622.1系統(tǒng)模塊設計基本要求 -2-88582.2系統(tǒng)的整體架構 -2-18159第三章各電路模塊設計 -4-110163.1最小系統(tǒng)電路與電源電路 -4-168053.2傳感器檢測模塊 -6-211233.3電機驅動模塊 -8-24233.4舵機安裝 -9-125143.5起跑線模塊 -9-314843.6運算放大器 -10-112803.7液晶模塊和無線模塊 -11-14682第四章系統(tǒng)的軟件設計 -12-9924.1程序流程 -12-44364.2舵機轉向和速度調節(jié)的PID控制算法 -13-54614.2.1經典PID控制算法 -13-271134.2.2舵機控制策略 -15-228714.2.3速度控速策略 -16-222044.3信號提取與賽道識別 -17-4974.4調試手段 -18-171114.4.1軟件開發(fā)平臺 -18-293154.4.2無線模塊與串口調試助手 -20-78294.4.3OLED液晶顯示 -20-29331第五章整車的硬件改造 -21-45215.1車模底盤 -21-143745.2智能車四輪定位參數的選擇 -22-313965.2.1主銷后傾角 -22-35175.2.2主銷內傾角 -22-39445.2.3前輪外傾角 -23-147065.2.4前輪前束 -23-200695.2.5定位參數調節(jié)方法 -24-137685.3智能車轉向舵機調整優(yōu)化 -24-119295.4后輪差速機構調整 -25-46495.5測速電機 -25-11426第六章結論 -26-16425參考文獻 -27-1391附錄 -28-317471、模型車系統(tǒng)參數統(tǒng)計 -28-131252、車模源程序代碼 -28-第八屆全國大學生“飛思卡爾”杯智能汽車競賽技術報告第一章引言全國大學生智能汽車競賽是全國高等教育司委托高等學校自動化專業(yè)教學指導分委會主辦,旨在培養(yǎng)創(chuàng)新精神、協(xié)作精神,提高工程實踐能力的科技活動。該競賽是以迅猛發(fā)展的汽車電子為背景,涵蓋了控制、模式識別、傳感技術、電子、電氣、計算機、機械等多個學科交叉的科技創(chuàng)意性比賽。在本次比賽中,本組使用大賽組委會統(tǒng)一提供的競賽車模,采用飛思卡爾16位微控制器MC9S12XS128作為核心控制單元,自主構思控制方案及系統(tǒng)設計,包括傳感器信號采集處理、控制算法及執(zhí)行、動力電機驅動、轉向舵機控制等,最終實現(xiàn)一套能夠自主識別路線,并且可以實時輸出車體狀態(tài)的智能車控制系統(tǒng)。本文主要對車模整體設計思路,硬件與軟件設計及車模的裝配調試過程作簡要的說明。根據自動化專業(yè)教學指導分委員會與飛思卡爾公司簽署的有效期為5年的飛思卡爾公司協(xié)辦全國大學生智能競賽的合作協(xié)議書,競賽由飛思卡爾公司提供統(tǒng)一的標準硬軟件技術平臺。各參賽隊以飛思卡爾HC12單片機為核心控制模塊,以引導改裝后的模型汽車按照規(guī)定路線行進,以完成時間最短者為優(yōu)勝。組委會辦公室技術組專家赴韓國漢陽大學交流訪問,認真考察了其舉辦的多屆智能汽車競速比賽,在學習與總結其寶貴經驗的基礎上,為了保證競賽的普及性,規(guī)定每支參賽隊伍三名成員中最多只能有一名研究生參加;為了保證競賽的公平性,制定了多種賽道方案以及體現(xiàn)公平、透明的比賽規(guī)則;為了進一步訓練大學生的科學技術研究素質,參賽隊伍除了進行現(xiàn)場比賽之外,還須提交技術報告,并計入競賽總分。為了使該競賽向普及、健康的方向發(fā)展,成為在全國范圍內大學生科技創(chuàng)意性的重要賽事,經自動化分教指委、飛思卡爾公司及組委會協(xié)商決定,在清華大學自動化系設立競賽秘書處。
第二章模型車總體技術方案根據本次大賽的特點,智能車的電路設計方案主要包括:電源模塊,道路信息檢測模塊,測速模塊,電機驅動模塊,舵機驅動模塊,無線發(fā)送和接收等。此次電磁組已經是第二次出現(xiàn)在比賽中了,因此,怎么設計算法使智能車更快作為我們的重點。在比賽之初,通過分析研究往屆優(yōu)秀隊伍的技術報告,并結合自身的實際情況,設計并提出了自己的設計方案。2.1系統(tǒng)模塊設計基本要求制作一個能夠自主識別路線的智能車,在專門設計的跑道上自動識別道路行駛,要求最快跑完全程而沒有沖出跑道。對于小車的控制系統(tǒng)來說穩(wěn)定性和快速性是控制系統(tǒng)設計的兩個重要指標。智能車控制系統(tǒng)從硬件上分為電源模塊、傳感器模塊、信號處理模塊、電機驅動模塊和單片機模塊。各個模塊設計有各自不同的要求:磁場檢測傳感器模塊為智能車使智能車始終根據傳感器反饋的信息來調整舵機轉角。電機驅動模塊是智能車的執(zhí)行機構。其用以控制驅動電機,通過PWM波對電機轉速進行控制,使模型車可以加速運行,也可對智能車進行制動。電源模塊是智能車運行的基礎。其為系統(tǒng)其他各個模塊提供所需要的電源,以保證各模塊的正常工作。單片機模塊是智能車的核心,從硬件設計的角度來說,首先要保證其供電穩(wěn)定,其次要對其部分功能模塊如PWM通道,定時器通道,AD轉換通道,鎖相環(huán)等的進行編程,寫入驅動程序,使其工作。從系統(tǒng)考慮,此模塊最重要的是控制算法和控制程序的編寫。只有通過軟件和硬件的良好配合,才能保證智能車在跑道上根據磁場分布快而穩(wěn)的前行。2.2系統(tǒng)的整體架構該智能小車的主要組成部分有:車模、電池、驅動電機、舵機、電磁傳感器、測速編碼器、控制芯片及其它輔助電路。系統(tǒng)結構框圖如下圖所示:圖2-1系統(tǒng)結構框圖
第三章各電路模塊設計3.1最小系統(tǒng)電路與電源電路為了減輕小車的負擔,保證系統(tǒng)能夠穩(wěn)定的運行,我們設計了自己的最小系統(tǒng)并制成了PCB板,最小系統(tǒng)原理圖如圖3-1所示:圖3-1最小系統(tǒng)原理圖根據原理圖設計好之后的PCB圖如下圖3-2所示:圖3-2最小系統(tǒng)PCB圖電源模塊對于一個控制系統(tǒng)來說極其重要,關系到整個系統(tǒng)是否能夠正常工作,因此在設計控制系統(tǒng)時應選好合適的電源。在比賽中智能車使用的是同一規(guī)格的7.2V電源供電,單片機系統(tǒng)、路徑識別的光電傳感器、測速傳感器等均需要5V的電源供電,本屆比賽B車模使用的是數字舵機,供電電壓為4.5V~5.5V,大于5.5V舵機將會發(fā)熱甚至燒壞,即并不像其他組的模擬舵機那樣電壓越高反應越靈敏,所以選擇5V電源供電,電機驅動可以直接使用7.2V的電源供電。選擇合適的電源電路對電路的穩(wěn)定性有很大的影響,合適的穩(wěn)壓電源芯片選擇對電路的性能提出更高的要求,穩(wěn)壓芯片的選擇上:我們選擇TPS7350做為單片機和舵機的供電芯片。這樣穩(wěn)壓效果較好,性能穩(wěn)定,電路結構簡單,帶載能力強,對其它模塊供電還是能保證充足的電源。系統(tǒng)控制和驅動、傳感器執(zhí)行獨立供電,可以有效地防止各器件之間發(fā)生干擾,以及電流不足的問題,使得系統(tǒng)能夠穩(wěn)定地工作。圖3-3各模塊電源電路的設計圖時鐘電路對單片機的運行至關重要,電路簡單,但是在設計PCB的過程中需要注意布線布局的規(guī)范性,因為時鐘電路的不穩(wěn)定會對系統(tǒng)的正常運行產生極大干擾。在此我們采用外接有源晶振來給單片機提供時鐘,外接晶振頻率為16MHZ,利用單片機內部的壓控振蕩器和鎖相環(huán)可以把頻率提高到80MHZ,用來作為單片機總線時鐘。在布局與布線方面,晶振應盡量靠近單片機,并且讓時鐘信號附近電場為0,鎖相環(huán)濾波電路也要盡量靠近單片機。圖3-4晶振電路3.2傳感器檢測模塊我們使用線圈來檢測賽道上的磁場。利用LC諧振的選頻特性選出20Khz的信號,再通過三極管將信號放大,而后進行倍壓整流,最終送入單片機AD轉換接口的將是與距離引導線距離有關的輸出電壓??驁D如下:圖3-5電磁檢測原理框圖下面將從感應線圈、信號的放大、檢波等幾個方面討論電路設計的問題,最后給出完整的電路設計圖。感應線圈的選擇:感應線圈可自行繞制,但較麻煩,手頭也沒有儀器測量其感抗值,故我們使用市售10mh電感作為感應線圈,可配合6.8nf的電容產生諧振。下圖為我們測試所用的各種規(guī)格的10mh電感。圖3-6幾種10mh的電感通過實驗發(fā)現(xiàn)磁芯電感比色環(huán)電感的靈敏度高,內阻小的電感比內阻大的電感靈敏度高。但并不是內阻越小的電感越好,因為小內阻電感通常使用更粗的漆包線,勢必會增加電感的重量,從而影響小車的性能。最終我們選用了第二種電感,該電感重量較輕且性能令人滿意。我們采用雙水平線圈檢測方案,兩個線圈水平相距L垂直于交流電源線,距離跑道高度h,兩線圈對稱分布在車前支架上。由于線圈的軸線是水平的,所以感應電動勢反映了磁場的水平分量。計算兩個線圈感應電動勢的差值:公式1:在實際檢測時,若左邊傳感器值大于右邊則說明交流電源線位于小車左側,反之則在右側,我們在測試時發(fā)現(xiàn)該條件下布置的傳感器是垂直于跑道,而實際在跑道上彎道處傳感器軸線并不垂直于跑道,檢測值存在一定誤差,但是我們通過軟件改善了不足的地方。3.3電機驅動模塊電機驅動的好壞直接影響車模的響應速度,并且今年的車模電機較大,所以需要大功率的電機驅動模塊,由于車模的長度不受限制,所以我們的前瞻加的很長,這就對于跑車造成了很大的慣性因素,也導致了我們的剎車不及時,并且在最后停車時剎車會剎出很遠的距離,不能滿足要求,所以在電機驅動方面我們用了很長的時間,最后才解決了以上出現(xiàn)的問題。方案的選定:方案1:IR2104與IRF32053205是MOS管,具有很強的驅動能力,導通內阻極低,承受的電流極高,正常使用不發(fā)熱,價格低廉,響應時間短,反應速度快。由2104與3205構成的全橋電路,可以實現(xiàn)電機的正反轉。圖3-73205電機驅動原理圖及PCB圖方案2:7970BTS7960是應用于電機驅動的大電流半橋高集成芯片,它帶有一個P溝道的高邊MOSFET、一個N溝道的低邊MOSFET。P溝道高邊開關省去了電荷泵的需求,因而減小了EMI。集成的驅動IC具有邏輯電平輸入、電流診斷、斜率調節(jié)、死區(qū)時間產生和過溫、過壓、欠壓、過流及短路保護的功能。BTS7960通態(tài)電阻典型值為16mΩ驅動電流可達43A。圖3-87970電機驅動PCB板圖由于A車模電機功率不是很大,用3205加減速性能良好。綜合考慮我們最后選定了方案一。3.4舵機安裝舵機轉向是整個控制系統(tǒng)中延遲較大的一個環(huán)節(jié),為了減小此時間常數,我們嘗試了各種方案,最終確定了以下兩個方面的改進。第一,增加從舵機到連桿之間的長度,這樣與以前的長度相比讓前輪轉過同樣的角度舵機只需轉過比以前更小的角度,雖然舵機本身的動作的速度沒有變,但對于轉向來說則比以前更快了。第二,把舵機豎直放置,使舵機位于兩輪的中心線上,再把連接兩輪胎到舵機的連桿改為一樣長,使舵機左右轉向時受力比較均勻,使舵機能靈活的轉向。通過以上這些改造舵機的響應速度提高許多,為快速靈巧的轉向提供了硬件的保證。但是這種方案也存在很大的缺陷,那就是舵機的轉向力不足,因此要從算法上進行消除。3.5起跑線模塊使用普通的干簧管檢測起跑線,由于干簧管震蕩容易誤檢起跑線,所以我們采用霍爾元件檢測起跑線。圖3-9起跑線檢測原理圖圖3-10起跑線檢測電路PCB圖3.6運算放大器由于本身的信號很微弱不容易檢測到,所以要用一個運算放大電路來檢測所需的信號。圖3-11信號運放電路圖3-12運放電路PCB圖3.7液晶模塊和無線模塊由于對車進行調試的過程中需要觀察車得實時參數這樣就需要一個能顯示的界面,剛開始我們用的無線模塊來看跑車時傳回來的數據。快到賽區(qū)比賽時才知道不可以使用無線模塊,所以我們應用了液晶模塊,方便到現(xiàn)場觀看各種參數。液晶模塊如下圖圖3-13所示:圖3-13OLED接口原理圖第四章系統(tǒng)的軟件設計高效穩(wěn)定的軟件程序是智能車平穩(wěn)快速尋線的基礎。本智能車采用電感作為尋線傳感器,在智能車的轉向和速度控制方面,我們使用了魯棒性很好的經典PID控制算法,配合使用理論計算和實際參數補償的辦法,使在尋線中的智能車達到了穩(wěn)定快速的效果。4.1程序流程程序上電復位后,先進行初始化,包括時鐘初始化、I/O端口初始化、液晶無線選擇性初始化、PWM初始化、ATD初始化、PIT初始化等,對各個全局變量進行必要的初始化設置。然后進入AD采樣與模式選擇,通過撥碼開關設定不同的速度模式,按鍵設置不同的速度檔位。圖4-1主程序流程圖4.2舵機轉向和速度調節(jié)的PID控制算法4.2.1經典PID控制算法PID控制是工程實際中應用最為廣泛的調節(jié)器控制規(guī)律。問世至今70多年來,它以其結構簡單、穩(wěn)定性好、工作可靠、調整方便而成為工業(yè)控制的主要技術之一。單位反饋的PID控制原理框圖如圖4.2:圖4.2單位反饋的PID控制原理圖單位反饋e代表理想輸入與實際輸出的誤差,這個誤差信號被送到控制器,控制器算出誤差信號的積分值和微分值,并將它們與原誤差信號進行線性組合,得到輸出量u。其中,、、分別稱為比例系數、積分系數、微分系數。u接著被送到了執(zhí)行機構,這樣就獲得了新的輸出信號,這個新的輸出信號被再次送到感應器以發(fā)現(xiàn)新的誤差信號,這個過程就這樣周而復始地進行。PID各個參數作用基本介紹:增大微分項系數可以加快動態(tài)系統(tǒng)響應,但容易引起震蕩。一般增大比例系數能夠減小上升時間,但不能消除穩(wěn)態(tài)誤差。增大積分系數能夠消除穩(wěn)態(tài)誤差,但會使瞬時響應變差。增大微分系數能夠增強系統(tǒng)的穩(wěn)定特性,減小超調,并且改善瞬時響應。對連續(xù)系統(tǒng)中的積分項和微分項在計算機上的實現(xiàn),是將上式轉換成差分方程,由此實現(xiàn)數字PID調節(jié)器。位置式PID控制算法用矩形數值積分代替上式中的積分項,對導數項用后向差分逼近,得到數字PID控制器的基本算式(位置算式):其中T是采樣時間,、、為三個待調參數,我們在實際代碼實現(xiàn)算法時,處理成以下形式:PreU=Kp*error+Ki*Integral+Kd*derror增量式PID控制算法對位置式加以變換,可以得到PID算法的另一種實現(xiàn)形式(增量式):我們在實際代碼實現(xiàn)時,處理成PreU+=(Kp*d_error+Ki*error+Kd*dd_error)的形式。這種算法用來控制步進電機特別方便,對直流電機也可以采用,其實如果對控制有更高的要求或者干擾因素較多,我們可以對PID算法做各種改進,比如用梯形法做數值積分以提高精度,將差分改成一階數字濾波等等,在實際調車的過程中,我們確實遇到過由于自制碼盤采樣得到的脈沖上升下降沿不夠陡,使得速度采樣出現(xiàn)不穩(wěn)定和失真,但由于這些附加處理比較耗費代碼的運行時間,出于代碼效率和實際效果的比較,我們沒有采用這些改進的方案,另外可以考慮加反向器來整波形得到較為理想的方波。運用PID控制的關鍵是調整三個比例系數,即參數整定。PID整定的方法有兩大類:一是理論計算整定法。它主要是依據系統(tǒng)的數學模型,經過理論計算確定控制器參數。由于智能車整個系統(tǒng)是機電高耦合的分布參數系統(tǒng),并且要考慮賽道具體環(huán)境,要建立精確的智能車運動控制數學模型有一定難度,而且我們對車身機械結構經常進行不斷修正,模型參數變化較頻繁,可操作性不強;二是工程整定方法,它主要依賴工程經驗,直接在控制系統(tǒng)的試驗中進行,且方法簡單,我們采用了這種方法,同時,我們先后實驗了幾種動態(tài)改變PID參數的控制方法。4.2.2舵機控制策略舵機的控制采用經典的PID控制,各環(huán)節(jié)的具體參數要經過反復的調整,以達到對各種賽道類型的適應性的平衡。各環(huán)節(jié)的注意點如下:P環(huán)節(jié):和控制的力度相關,過軟和過硬都不好??梢赃m度地采用分段P的方法,即黑線在車的中間位置時P較軟,黑線偏離較遠時P較硬,以實現(xiàn)部分賽道的優(yōu)化。I環(huán)節(jié):I環(huán)節(jié)可以使控制更加精準,但也有使控制變遲鈍的負面效應,所以在前瞻較近時不宜加如I環(huán)節(jié),而當前瞻比較充足時可以適當加入I環(huán)節(jié),這樣可以彌補分段P的一些不足,也提高了控制的精準程度。D環(huán)節(jié):D環(huán)節(jié)能起到對賽道變化趨勢預測的作用。適當加入D環(huán)節(jié)可以使轉向更靈敏,并能起到優(yōu)化大S參數的作用。D的缺點是會放大“噪聲”,對檢測到得信息進行數字濾波可以部分解決這個問題。if(temp_z>50){ Angle_Kp=Kp_Angle[abs(Angle_PreDerr)/10]*3/4; Angle_Kd=50; }else { Angle_Kd=110; Angle_Kp=Kp_Angle[abs(Angle_PreDerr)/10]; }if(vAv<70)Angle_Kp=Angle_Kp*8/10;elseif(vAv<90)Angle_Kp=Angle_Kp*vi_FeedBack/90; dutu01=Angle_Kp*Angle_PreDerr+Angle_Kd*(Angle_PreDerr-Angle_PrePreDerr);4.2.3速度控速策略基于光電編碼器的速度檢測系統(tǒng),可以實現(xiàn)速度的閉環(huán)控制。具體的控速方法使用了PI控制和棒棒控制結合的方法,PI控制有利于控制的精度,棒棒控制有利于控制的力度,兩者結合是一個優(yōu)勢互補的解決方案。另一方面,由于在不同類型的賽道采用不同的速度,可以優(yōu)化路徑、提高平均速度,是提高成績的關鍵。這對車的加減速性能有較高的要求,而在程序可以使用反轉制動等方法。在不同的賽道情況上,需要選擇不同的給定速度,在保持車行進的路徑的前提下盡可能提高速度的目的。具體而言,在直道和彎道上面都采用較高的速度行進,在長直道進彎道的時候降低速度來保持車的路徑。我們通過前瞻傳感器的變化趨勢來判定進彎減速條件,可以實現(xiàn)提前減速。if(vi_Error>40)vl_PreU=VV_MAX;//設置調節(jié)死區(qū)elseif(vi_Error>0)//速度PID計算{vl_PreU+=v_Kp*vi_Error+v_Ki*d_Error+v_Kd*dd_Error;}elseif(vi_Error>-30){vl_PreU-=v_Kp*vi_Error*vi_Error+v_Ki*d_Error+v_Kd*dd_Error;}elsevl_PreU=VV_MIN; if(vl_PreU>=VV_MAX)//速度PID,防止調節(jié)最高溢出{vl_PreU=VV_MAX;}if(vl_PreU<=VV_MIN){vl_PreU=VV_MIN;}4.3信號提取與賽道識別傳感器的布局方案為車的賽道識別提供了一定的前瞻,軟件的設計方案就要利用好這樣的前瞻,更早地識別賽道變化情況,提高行進速度。同時,除了前瞻以外,還需要考慮車前方近處的賽道情況。此外,還需要對于一些特殊情況進行特殊的處理。通過位于小車前端兩側電感值的大小判斷交流線處于什么位置并作出控制,通過相應的算法求出偏離權值,進行方向控制。首先,是十字線的處理。在前瞻較大的時候,十字線的磁場分布與正常的九十度彎道非常類似,容易出現(xiàn)忽略十字線直接轉向的情況。進入十字線之后,內側的磁場與螺線管類似,遠大于外側的磁場,容易出現(xiàn)內切過大的情況。為此,我們在十字線附近采用了特殊的識別策略。并且在識別之后,在交叉線附近的直道上降低舵機的擺動。這樣可以降低十字線的特殊磁場的干擾。其次,出于提高前瞻的考慮,傳感器的視角并不是很大,容易出現(xiàn)迷失的情況。我們通過嘗試發(fā)現(xiàn),出現(xiàn)迷失之后,這三個水平傳感器的信號權值會變小。通過這一點,我們找到了判定迷失的條件。迷失之后,降速,舵機逐漸打到一個比較大的角度。最后,是坡道的處理。在坡道上,三個水平傳感器的信號權值變得很大的情況,以至于判斷為直到,車會加速行駛。如果坡道后面接的是一條長之道還好說,如果是一個急轉彎那就慘了,于是我們經過多次測試于大膽嘗試,決定采取如果坡道后面是長之道不降速,如果坡道后面是彎道則遇坡急減速。通過這一點,我們解決了坡道之后會出現(xiàn)沖出賽道的問題。AD_value_Sum-=AD_value_G[TestPoi];AD_value_Sum+=AD_value[1];AD_value_G[TestPoi]=AD_value[1];//更新新的中間數值TestPoi++;if(TestPoi==10)TestPoi=0;AD_value_Ave=AD_value_Sum/10;4.4調試手段有效的調試手段,對于及時發(fā)現(xiàn)并解決問題至關重要。而調試工具最重要的職能是獲取智能車在行駛時的各項數據。我們在調試中主要使用了如下幾種工具。4.4.1軟件開發(fā)平臺此次智能車大賽的軟件開發(fā)平臺為FreescaleCodeWarrior開發(fā)軟件。其使用界面如圖4-3所示。圖4-3FreescaleCodeWarrior運行界面CodeWarrior是面向以HC12和S12為CPU的單片機嵌入式應用開發(fā)的軟件包,包括集成開發(fā)環(huán)境IDE、處理器專家?guī)?、全芯片仿真、可視化參數顯示工具、項目工程管理器、C交叉編譯器、匯編器、鏈接器以及調試器等。在CodeWarrior軟件中可以使用匯編語言或C語言,以及兩種語言的混合編程。用戶可在新建工程時將芯片的類庫添加到集成環(huán)境開發(fā)環(huán)境中,工程文件一旦生成就是一個最小系統(tǒng),用戶無需再進行繁瑣的初始化操作,就能直接在工程中添加所需的程序代碼。在硬件初始化及控制方面,選取PE模式進行設置,不需要用戶去操作繁瑣的寄存器,就可以進行硬件的初始化,當需要在軟件執(zhí)行中使用相關寄存器時,只需要調用PE自動封裝好的相關函數即可。如圖4-4所示,利用BDM和CodeWarrior自帶的hiwave.exe用戶可以進行一系列的調試工作,如監(jiān)視寄存器狀態(tài)、修改PC指針、設置斷點等,這樣能幫助我們快速的找到軟件或者硬件的錯誤之處。圖4-4FreescaleCodeWarrior調試界面4.4.2無線模塊與串口調試助手通過無線模塊,可以將智能車行駛過程中的數據實時傳送到電腦,是一種實用高效的調試手段。我們使用的無線模塊是nRF24L01無線模塊,發(fā)射和接受各需一塊,可以選擇不同的頻道,因為多輛車同時調試時不會互相影響。圖4-5串口調試助手4.4.3OLED液晶顯示舵機初始打角是否走直線是決定車在跑的過程中能否走直線的關鍵因素。最初我們的調舵機的方法是用無線,用串口調試助手來顯示調試的舵機值,這需要兩個人來共同完成這個工作,顯示有些浪費,于是我們采用OLED液晶來顯示調試的舵機值,方便快捷,同時還可以用來顯示其他數據,如AD采樣值與最大值等。圖4-6OLED液晶顯示器第五章整車的硬件改造5.1車模底盤合理的底盤高度調節(jié)會提高智能車的加速性能。智能車的重心應該越低越好,降低地盤時實現(xiàn)重心下降的較為直接的方式。應注意到底盤高度的調節(jié)是將智能車的其他性能提高以后間接的幫助加速性能提高??紤]到坡道問題,為了能夠安全的通過,并不使地盤受到不必要的磨損和震蕩,所以就要根據實際情況來調節(jié)底盤的高度,因此地盤距離地面高度不能太低,且今年的車模是四驅車,加了減震彈簧,出廠的車模底盤太高,如果跑起來車會有很大的晃動,為了保持智能車的在快速行駛的過程中車身的穩(wěn)定性,也要降低了底盤。在日常生活我們見到的汽車一般都是前輪驅動的,所以我們根據日常生活的經驗重心都是放到驅動輪上,也就是我們看到的一般都是后輪高前輪低。我們的車模也是按照實際來調整的。調整之后的前輪處底盤離地面高度為0.9mm,后輪離地面高度為1.2mm。那么如何降低底盤就是機械改造的一部分了,由于車模的前輪和后輪的固定方式不同所以改造的方法就不同,不過都可以通過改變彈簧的長度來實現(xiàn)。5.2智能車四輪定位參數的選擇為保證智能小車直線行駛穩(wěn)定,轉向輕便靈活并盡可能的減少輪胎磨損,需要對小車的四輪定位參數進行調整。四輪定位內容主要有:主銷后傾角,主銷內傾角,前輪外傾角,前輪前束,外側車輪二十度時,內外轉向輪轉角差,后輪外傾角,后輪前束。其中,前輪定位的參數對小車性能有著至關重要的影響,這四個參數反映了前輪、主銷和前軸三者之間在車架上的位置關系。本文將對這四個參數做詳細闡述。5.2.1主銷后傾角主銷:轉向輪圍繞主銷進行旋轉,前軸的軸荷通過主銷傳給轉向車輪,具備這兩點的就叫做主銷。主銷內傾和車輪外傾角度主要是由轉向節(jié)決定的。主銷后傾角:主銷的軸線相對于車輪的中心線向后傾斜的角度。前輪重心在主銷的軸線上由于主銷向后傾斜使前輪的重心不在車輪與地面的接觸點上,于是產生了離心力,主銷后傾形成的離心力,可以保證汽車直線行駛的穩(wěn)定性還可以幫助車輪自動回正。主銷后傾角延長線離地面實際接觸越遠,車速越高,離心力就越大。在高速行駛中保持汽車直線行駛的穩(wěn)定性,適當的加大主銷后傾角可以幫助轉向輪自動回正,可有效扼制轉向器的擺振,可使轉向便輕,單獨適量調一側主銷后傾角可修理行駛跑偏。主銷后傾角靠離心力保證汽車直線行駛和車輪自動回正。高速行駛時跑偏可通過主銷后傾角調節(jié)。但主銷后傾角過大會造成高速時轉向發(fā)飄。通常后傾角值應設定在10--30.5.2.2主銷內傾角主銷內傾角:主銷的軸線相對于車輪的中心線向內傾斜的角度,如下圖3.4由于主銷軸線向內傾斜,所以使前軸荷更接近前輪中心線(前軸重心越接近前輪中心線轉向越輕)麥弗遜式懸架分為零主銷偏移和負主銷偏移兩種。當轉向輪在外力作用下發(fā)生偏轉時,由于主銷內傾的原因,車輪連同整個汽車的前部將被抬起一定高度;當外力消失后,車輪就會在重力作用下恢復到原來的中間位置。故主銷內傾角可保證汽車直線行駛的穩(wěn)定性,還可幫助車輪自動回正,主銷內傾軸線延長線在沒超過前輪中心線的前提下,離前輪中心線越近,轉向角越大,轉向輪抬起的越高,車輪的回正力矩就越大。從而使轉向操縱輕便,同時也減小了由于路面不平而從轉向輪輸出的力反饋。主銷內傾角靠前軸軸荷保證汽車直線行駛和車輪自動回正。但主銷內傾角不宜過大,否則在轉向時車輪主銷偏轉的過程中,輪胎與路面將產生較大的滑動,從而增加輪胎與路面間的摩擦阻力,不僅會使轉向變得沉重,還將加速輪胎的磨損。通常汽車主銷內傾角不大于80。5.2.3前輪外傾角前輪外傾角:轉向輪上端略向外傾斜叫前輪外傾角。通過車輪中心的汽車橫向平面與車輪平面的交線與地面垂線之間的夾角α,稱為“前輪外傾角”,輪胎呈現(xiàn)“八”字形張開時稱為“負外傾”,而呈現(xiàn)“V”字形張開時稱為“正外傾”。前輪外傾角一方面可以在汽車重載時減小或消除主銷與襯套,輪轂與軸承等處的裝配間隙,使車輪接近垂直路面滾動而滑動,同時減小轉向阻力,使汽車轉向輕便;另一方面還可以防止由于路面對車輪垂直反作用力的軸向分力壓向輪轂外端的軸承,減小軸承及其鎖緊螺母的載荷,從而增加這些零件的使用壽命,提高汽車的安全性。一般前輪外傾角為10左右。模型車提供了序號為EX-19的配件來調節(jié)前輪外傾角:當所采用的配件上無數字4時前輪外傾角為00,當所采用的配件上有數字4時前輪外傾角約為10。由于本模型車主要用于競速,在設計中必然要盡可能減輕重量,所以其底盤承重不大,且前輪外傾角只兩檔可調,故設定為00即可,關鍵是前輪前束要與之相匹配。5.2.4前輪前束當車輪有了外傾角后,在滾動時就類似于圓錐滾動,從而導致兩側車輪向外滾開。由于轉向橫拉桿和車橋的約束使車輪不可能向外滾開,車輪將在地面上出現(xiàn)邊滾邊向內滑移的現(xiàn)象,從而增加了輪胎的磨損。在安裝車輪時,為消除車輪外傾帶來的這種不良后果,可以使汽車兩前輪的中心面不平行,并使兩輪前邊緣距離R小于后邊緣距離A,A-R之差稱為“前輪前束”,如圖3.6如示,一般前束值為1-12mm。像內八字樣前端小后端大的稱為“前束”,而像外八字一樣后端小前端大的稱為“后束”或“負前束”。模型車是由舵機帶動左右橫拉桿實現(xiàn)轉向的。主銷在垂直方向的位置確定后,改變左右橫拉桿的長度即可改變前輪前束的大小。左桿短,可調范圍為10.8-18.1mm;右桿長,可調范圍為29.2-37.6mm,由上述原理可知,前輪前束須與前輪外傾角相匹配,如前輪外傾角設定為0°,則前輪前束須為0mm或只有很小的前輪前束值。5.2.5行駛跑偏:兩側主銷的傾角不一致時,那側主銷后傾角小就向哪側跑偏。兩側車輪外傾角不一致時,那側前輪外傾角大就向那側跑偏。舵機的兩根橫拉桿沒有等量調整,那根長就往那側跑偏。前輪前束值誤差過大會造成行駛跑偏。包容角:前輪外傾角和主銷內傾角的和。車輪定位造成的轉向重:先檢查和調整前輪前束或將主銷后傾角加大轉彎半徑的大小主要取決于轉向角和軸距。如同時需要調轉彎半徑和前輪前束,必須先調前輪前束,因為條前輪前束會改變轉彎半徑,調轉彎半徑不會改變前輪前束。5.3智能車轉向舵機調整優(yōu)化理想的轉向模型,是指在輪胎不打滑時,忽略左右兩側輪胎由于受力不均產生的變形,忽略輪胎受重力影響下的變形時車輛的的轉向建模。在這種理想的模型下,車體的轉向半徑可以計算得到。轉向機構在車輛運行過程中有著非常重要的作用。合適的前橋和轉向機構可以保證在車輛直線行駛過程中不會跑偏,能保證車輛行駛的方向穩(wěn)定性;而在車輛轉向時,合適的轉向機構可以使車輛自行回到直線行駛狀態(tài),具有好的回正性。正是由于這些原因,轉向系統(tǒng)優(yōu)化設計成為智能車設計中機械結構部分的重點,直接關系到賽車能否順利地完成比賽。在實際操作中,我們通過理論計算的方案進行優(yōu)化,然后做出實際結構以驗證理論數據,并在實際調試過程中不斷改進。在模型車制做過程中,賽車的轉向是通過舵機帶動左右橫拉桿來實現(xiàn)的。轉向舵機的轉動速度和功率是一定,要想加快轉向機構響應的速度,唯一的辦法就是優(yōu)化舵機的安裝位置和其力矩延長桿的長度。由于功率是速度與力矩乘積的函數,過分追求速度,必然要損失力矩,力矩太小也會造成轉向遲鈍,因此設計時就要綜合考慮轉向機構響應速度與舵機力矩之間的關系,通過優(yōu)化得到一個最佳的轉向效果。經過最后的實際的參數設計計算,最后得出一套可以穩(wěn)定高效工作的參數機構。5.4后輪差速機構調整差速機構的作用是在車模轉彎的時候,降低后輪與地面之間的滑動;并且還可以保證在輪胎抱死的情況下不會損害到電機。此次所使用車模配備的是后輪差速機構。差速器的特性是:阻力越大的一側,驅動齒輪的轉速越低;而阻力越小的一側,驅動齒輪的轉速越高,以此次使用的后輪差速器為例,在過彎時,因外側前輪輪胎所遇的阻力較小,輪速便較高;而內側前輪輪胎所遇的阻力較大,輪速便較低。差速器的調整中要注意滾珠輪盤間的間隙,過松過緊都會使差速器性能降低,松緊程度應邊試跑邊調整,直至找到最佳值。另外建議在差速機構上涂抹少許潤滑油,使鋼珠滾動更加順暢靈活。5.5測速電機測速發(fā)電機是采用同軸直連或者齒輪傳動等方式,將測速發(fā)電機與驅動電機相連,它的輸出電壓正比于轉速。我們測速裝置用的是一個小型的旋轉編碼器。電機轉動時帶動傳動盤轉動,通過齒輪的嚙合,傳動盤的轉動會帶動旋轉編碼器的轉動,測速裝置就產生一系列脈沖,把這一系列的高低電平被到單片機的PACNT接口,單片機捕捉這一系列高低電平的上升沿和下降沿。通過累積一定時間內的脈沖個數,可以計數出相應的速度值。
第六章結論從最初的報名開始,我們查找各種相關資料,學習單片機,思考整體思路,解決各種問題,到最后我們完成了智能車的制作,在這過程中我們學到了很多,這份技術報告中介紹了我們智能車全部的內容。機械方面,舵機安裝方式是經過多次修改,安裝,調試才確定的。在算法方面我們是多個算法的集合,包含了各個算法的優(yōu)點,語言簡單但是實用性極強,且適合任何跑道。智能車的設計與制作是從2011年2月開始的,經過半年的努力,我們完成了智能車的制作,實現(xiàn)了磁導航,閉環(huán)控制等的功能。從一開始的明確設計目的、資料收集,到方案的確定,原理圖和PCB圖的設計,購買元器件,實際電路實驗驗證,再有焊接電路板,智能車的軟件編程,算法確定,參數調試等等過程中,我們學到了許多課本上學不到的知識,鍛煉了自己的實際動手能力,與組員團結合作的能力,交流溝通的能力,分析問題的能力。參加完這次的比賽,讓我們都覺得受益良多,為今后的學習打下了良好的基礎。但是,由于時間有限,加之所學知識的限制,我們的智能車還有不少方面存在缺陷。這些問題將在以后進一步研究和解決。最后,在文章中出現(xiàn)的不足之處,希望老師多多包含和指點。
參考文獻[1]李仕伯,馬旭,卓晴.基于磁場檢測的尋線小車傳感器布局研究.電子產品世界,2009(12),41-44[2]張昊飏,馬旭,卓晴.基于電磁場檢測的尋線智能車設計.電子產品世界[3]清華大學2隊技術報告.//卓晴,黃開勝,邵貝貝.學做智能車.北京:北航出版社,2007.3[4].卓晴黃開勝邵貝貝,學做智能車[M],北京:北京航空航天大學出版社,2007[5].邵貝貝,單片機嵌入式應用的在線開發(fā)方法,北京:清華大學出版社,2004[6].FreescaleSemiconductor,Inc.MC9S12DG128DeviceUserGuide.[7].童詩白,華成英.模擬電子技術基礎[M].北京.高等教育出版社.2000[8].劉敬忠,于玲.車輛側滑與行車安全淺談.江蘇農機化.2006[9].張葵葵,吳義虎.汽車急轉側滑的預防控制原理.現(xiàn)代制造工程.2006[10].魏道高,李克強等.汽車前束值算法研究.農業(yè)機械學報.2006
附錄1、模型車系統(tǒng)參數統(tǒng)計項目參數路徑檢測方法(賽題組)電磁組車模幾何尺寸(長、寬、高)(毫米)800/250/140車模軸距/輪距(毫米)115(原參數)車模平均電流(勻速行駛)(毫安)2000電路電容總量(微法)1200傳感器種類及個數5新增加伺服電機個數0賽道信息檢測空間精度(毫米)5賽道信息檢測頻率(次/秒)1000車模整體結構圖2、車模源程序代碼#include<hidef.h>/*commondefinesandmacros*/#include"derivative.h"/*derivative-specificdefinitions*/#include"main.h"#define LED1 PORTB_PB4#define LED2 PORTB_PB5#define LED3 PORTB_PB6#define LED4 PORTB_PB7unsignedcharDeal_Time=0;/*電機參數*/#define BACKWARD PORTE_PE4#define FOREWARD PORTE_PE5#defineZHENGZHUAN{BACKWARD=0;FOREWARD=1;}#defineFANZHUAN{BACKWARD=1;FOREWARD=0;}#defineBAOSI{BACKWARD=1;FOREWARD=1;}#defineHUAXING{BACKWARD=0;FOREWARD=0;}//unsignedintDJ_R_MAX=2840,DJ_L_MAX=3580,DJ_MID=3210;2013-03-18//unsignedintDJ_R_MAX=2840,DJ_L_MAX=3540,DJ_MID=Servo_Mid;2013-4-18/*舵機參數*/#defineServo_L_Max2810#defineServo_Mid3140#defineServo_R_Max3480unsignedintDJ_R_MAX=Servo_R_Max,DJ_L_MAX=Servo_L_Max,DJ_MID=Servo_Mid;/*電感參數*/intAD_Left[]={0,0,0};intAD_Mid[]={0,0,0};intAD_Right[]={0,0,0};intsensor[]={0,0,0};unsignedintAD_value[]={0,0,0};unsignedintAD_Max[]={600,600,600};intMaxNum=0;byteRefAd=20,AD_Min=10;//丟線參考AD值charLost_Flag=0;//丟信號標志位intMid_AD_value=0,Last_Pos=0;//丟線處理intMid_AD=0;//偏移量舵機P值intAngle_Kp=0;//20charAngle_Kd=0;//50intAngle_PreDerr=0;//偏移量舵機P值intAngle_PrePreDerr=0;//偏差的偏差舵機D值intSumHead=0;intHeadi=0;intDouDong=0,Lderr=0;//加入抖動bytetemp_z=0,temp_w=0,Sum_Z=100,Sum_W=0,TESTi=0,temp_w_l=0,temp_w_r=0;intSevro_Correct=0;#defineLOCA_MAX330//最大調節(jié)量輸出為正負660。#defineLOCA_MIN-320intAD[10]={0};bytez_limt=80,w_limt=60;intAD_Remember[100]={0};#defineChannel3/*速度參數*/intSpeed_set=2000;intvi_FeedBack=0;intMeasure=0,Speed_Measure1=0;floatlast_speed_pid_out=0,speed_pid_out=0;floatError_1=0,Error_2=0,Error_3=0;intspeed_Kp=0,speed_Ki=0,speed_Kd=0;voidSetBusCLK_64M(void){CLKSEL=0X00; //disengagePLLtosystemPLLCTL_PLLON=1; //turnonPLLSYNR=0xc0|0x07;REFDV=0x80|0x01;POSTDIV=0x00;//pllclock=2*osc*(1+SYNR)/(1+REFDV)=128MHz;_asm(nop);//BUSCLOCK=64M_asm(nop);while(!(CRGFLG_LOCK==1)); //whenpllissteady,thenuseit;CLKSEL_PLLSEL=1; //engagePLLtosystem;}voidIO_init(){DDRB=0b11110000;//按鍵+LEDPORTB=0XF0;DDRE_DDRE4=1;LED1=0;LED2=0;LED3=0;LED4=0;DDRE_DDRE4=1;DDRE_DDRE5=1;//用于判斷電機正反轉ZHENGZHUANDDRT_DDRT4=0;DDRT_DDRT5=0;PTT_PTT4=0;PTT_PTT5=0;DDRT_DDRT6=1;DDRT_DDRT7=0;PTT_PTT6=1;DDRT|=0b00001111;//DDRT&=0b11110000;DDRJ_DDRJ7=1;//BEERPTJ_PTJ7=0;}voidPWM01_Init(void){PWME_PWME1=0;PWMCTL_CON01=1;//通道01級聯(lián)PWMCAE_CAE1=0;//左對齊PWMPOL_PPOL1=1;//PWM輸出起始為高電平PWMPRCLK_PCKA=1;//ClockA2分頻結果為32MHzPWMSCLA=1;//ClockSA=ClockA/2ClockSA為16MHZPWMCLK_PCLK1=1;//時鐘來源選擇ClockSAPWMPER01=4000;//輸出頻率=通道頻率/PWMPER01=4kHZPWMDTY01=0;//PWME_PWME1=1;//啟動PWM輸出}voidPWM23_Init(void){PWME_PWME3=0;PWMCTL_CON23=1;//通道23級聯(lián)PWMCAE_CAE3=0;//左對齊PWMPOL_PPOL3=1;//PWM輸出起始為高電平PWMPRCLK_PCKB=4;//ClockB16分頻結果為4MHzPWMSCLB=1;//ClockSB=ClockB/2ClockSB為2MHZPWMCLK_PCLK3=1;//=1時鐘來源選擇ClocksBPWMPER23=40000;//輸出頻率=通道頻率/PWMPER23=50HZPWMDTY23=Servo_Mid;//PWME_PWME3=1;//啟動PWM輸出}voidchangePWM01(intangles){staticintangleold=0;if(angles!=angleold)PWMDTY01=angles;angleold=angles;}voidchangePWM23(intangles){staticintangleold=0;if(angles!=angleold)PWMDTY23=angles;angleold=angles;}voidinitPIT0(void)//定時中斷初始化函數1MS定時中斷設置{PITCFLMT_PITE=0;//定時總中斷關閉 PITCE_PCE0=1;//定時器通道0使能PITMUX=0X00;///PITMTLD0=8-1;//8位定時器初值設定(四個同道共用)。8分頻,64MHz/8=8MHzPITLD0=8000-1;//第0同道16位定時器初值設定。8000000Hz/8000=1000Hz ///PITINTE_PINTE0=1;//定時器中斷通道0中斷使能 PITCFLMT_PITE=1;//定時器總中斷打開}/**********************功能:脈沖累加器初始化***********************/voidPAOVF_Init(void){TSCR1_TEN=1;//(7)使能定時器模塊PACTL_PAEN=0;//(6)累加器禁止PACTL_PAMOD=0;//(5)PAMOD=0,事件計數模式;PAMOD=1,門控時間累加模式PACTL_PEDGE=0;//(4)選擇通道7的脈沖沿(0,下降沿)PACTL_PAOVI=0;//使能累加器溢出中斷,即PAOVF=1時申請中斷PACTL_PAI=1;//使能累加器輸入中斷,即PAIF=0時申請中斷PACNT=0;//計算器初值為0PAFLG_PAOVF=1;//寫入清除該位,當累加器溢出時置位PAFLG_PAIF=1;//寫入時清除該位,當累加器有變化時置位PACTL_PAEN=1;//(6)累加器使能}//功能:AD初始化AD:8MHZ//*************************************************************************voidAD_int(void){ATD0CTL1=0b00100000;//10位精度,禁止外部觸發(fā)ATD0CTL2=0b01000000;//自動清零,禁止外部觸發(fā),無等待模式ATD0CTL3=0b10011000;//bit3~bit6設置轉換通道個數ATD0CTL4=0b00101001;//采樣周期12個,ATDclock(2MHZ)=(BusClock(40MHZ)/(9+1))*0.5ATD0CTL5=0b00000000;//單個通道采樣,輸入通道可選bit:3210啟動AD}/************************************************************************函數名稱:byteADCvalue();函數功能:某一同道8位A/D轉換函數全局變量:無入口參數:channel=通道號(0~7)出口參數:該通道的A/D轉換結果(0~255)*************************************************************************/unsignedintADCvalue(bytechannel){unsignedinttemp;//暫存A/D轉換的結果 //ATDCTL5.DJM=0,結果寄存器數據采用左調整 //ATDCTL5.SCAN=1,連續(xù)轉換序列 //ATDCTL5.CC~CA=channel,啟動通道轉換 ATD0CTL5=(0x20|channel); while(1)//取A/D轉換結果 if(ATD0STAT0_SCF)//判斷ATD0STAT0的第7位是否為1 { temp=ATD0DR0L+ATD0DR0H*256;//從A/D數據寄存器0中讀10位數據 //temp=(temp>>6);//對數據調整,使低十位有效 break; } returntemp;}/******************************************************函數名稱:voidAD_Access();函數功能:針對某幾個同道進行5次AD數據轉換并求其平均值全局變量:無******************************************************/voidAD_Access(void){charAD_temp=0,i0;for(i0=0;i0<Channel;i0++)AD_value[i0]=0; //將每一個同道的AD值清零for(AD_temp=0;AD_temp<5;AD_temp++)//每個同道轉換5次{ AD_value[0]+=ADCvalue(3); //i0要轉換的同道 AD_value[1]+=ADCvalue(2); //i0要轉換的同道 AD_value[2]+=ADCvalue(1); //i0要轉換的同道}for(i0=0;i0<Channel;i0++){ AD_value[i0]=AD_value[i0]/5; //取平均值} AD_Right[0]=AD_value[2];AD_Mid[0]=AD_value[1];AD_Left[0]=AD_value[0];}/******************************************************函數名稱:AD_Value_Max();函數功能:對獲得的三個同道AD值求最大值全局變量:無******************************************************/voidAD_Value_Max(void){chari;for(i=0;i<Channel;i++) //冒泡法求最大值{AD_Access(); //AD轉換并且求平均值if(AD_value[i]>AD_Max[i]) AD_Max[i]=AD_value[i];}}voidData_Process(void){ chari=0;for(i=0;i<3;i++)//將AD數值進行0~100標量化{ if(AD_value[i]<AD_Max[i])sensor[i]=200-(AD_Max[i]-AD_value[i])*200/AD_Max[i]; elsesensor[i]=200;}MaxNum=0;for(i=1;i<3;i++)//求那個電感是最大的{if(sensor[i]>=sensor[MaxNum])MaxNum=i;}if(sensor[MaxNum]<AD_Min)//如果最大的電感還小于一定值則這次丟失{ Lost_Flag=1;}if(Lost_Flag==1)//當在中間丟失數據時也會保持,但是這種情況是實際中不可能的!{ Mid_AD_value=Last_Pos;//如果丟失保持上一次的值Mid_AD_value小于0偏右應向左打角 if(Last_Pos<=0&&(MaxNum==0||MaxNum==1)&&sensor[0]>=AD_Min) { Lost_Flag=0; } elseif(Last_Pos>=0&&(MaxNum==1||MaxNum==2)&&sensor[2]>=AD_Min) { Lost_Flag=0; } if(Mid_AD<-60)Last_Pos=Last_Pos-3; if(Mid_AD>60)Last_Pos=Last_Pos+3; if(Last_Pos>200)Last_Pos=200; if(Last_Pos<-200)Last_Pos=-200; }elseif(Lost_Flag==0){switch(MaxNum){ case0: //車離開導線偏右 { if(sensor[0]>RefAd) { if(sensor[1]>RefAd) { Mid_AD_value=-66-66*(sensor[0]-sensor[1])/(sensor[0]-RefAd); } else Mid_AD_value=-200+67*(sensor[0]-RefAd)/(sensor[0]-sensor[1]); } else Mid_AD_value=-200; }break; case1: { if(sensor[1]>RefAd)//已修改 { if(sensor[2]>sensor[0])//右邊大于左邊說明車偏左 Mid_AD_value=66-67*(sensor[1]-sensor[2])/(sensor[1]-sensor[0]); else //左邊大于右邊 Mid_AD_value=-67+67*(sensor[1]-sensor[0])/(sensor[1]-sensor[2]); } }break; case2: { if(sensor[2]>RefAd) { if(sensor[1]>RefAd) Mid_AD_value=66+67*(sensor[2]-sensor[1])/(sensor
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時聘請勞動合同樣本
- 業(yè)務合作合同保密條款范本
- 個體工商戶用工合同模板
- 個人合伙合同簡單范本
- 個人金融產品投資合作合同范本
- 個體工商戶股權轉讓合同
- 專業(yè)顧問聘用合同樣本
- 互聯(lián)網企業(yè)高級研發(fā)人才服務合同范本
- 中外合資教育機構合作辦學合同
- 二手住房買賣合同范本
- 《PLC應用技術(西門子S7-1200)第二版》全套教學課件
- 第01講 直線的方程(九大題型)(練習)
- 市政道路監(jiān)理大綱34368
- 《基礎會計》教學課件-整套教程電子講義
- 人教版七年級上冊數學全冊課時練習帶答案
- GB/T 44143-2024科技人才評價規(guī)范
- 對醫(yī)院領導的批評意見怎么寫更合適范文(6篇)
- 賬期協(xié)議書賬期合同書
- 2024年常德職業(yè)技術學院單招職業(yè)適應性測試題庫完整
- 天津市河東區(qū)2023-2024學年九年級上學期期末數學試題
- 工程防滲漏培訓課件
評論
0/150
提交評論