光電組 遼寧工程技術大學 旗雨之城_第1頁
光電組 遼寧工程技術大學 旗雨之城_第2頁
光電組 遼寧工程技術大學 旗雨之城_第3頁
光電組 遼寧工程技術大學 旗雨之城_第4頁
光電組 遼寧工程技術大學 旗雨之城_第5頁
已閱讀5頁,還剩82頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

全國大學生智能汽車邀請賽技術報告PAGE86PAGE87第九屆“飛思卡爾”杯全國大學生智能汽車競賽技術報告學校:遼寧工程技術大學隊伍名稱:旗雨之城參賽隊員:孫雁宇韓自成王紹齊帶隊教師:李斌關于技術報告和研究論文使用授權的說明本人完全了解第九屆“飛思卡爾”杯全國大學生智能汽車競賽關于保留、使用技術報告和研究論文的規定,即:參賽作品著作權歸參賽者本人,比賽組委會和飛思卡爾半導體公司可以在相關主頁上收錄并公開參賽作品的設計方案、技術報告以及參賽模型車的視頻、圖像資料,并將相關內容編纂收錄在組委會出版論文集中。參賽隊員簽名:帶隊老師簽名:日期:摘要本文介紹了遼寧工程技術大學旗與之城隊制作的第九屆“飛思卡爾”杯全國大學生智能汽車競賽的智能車系統。文中介紹了該系統的軟、硬件結構及其開發流程。本文設計的智能車系統以MC9S12XS128微控制器為核心控制單元,通過TSL1401線性CCD檢測賽道信息,使用模擬比較器對圖像進行硬件二值化,提取黑色引導線,用于賽道識別;通過光電編碼器檢測模型車的實時速度,使用PID控制算法調節驅動電機的轉速和轉向舵機的角度,實現了對模型車運動速度和運動方向的閉環控制,并進行了大量硬件與軟件測試。測試結果表明,該智能車能夠很好地跟隨黑色引導線,可以實現對應于不同形狀的道路予以相對應的控制策略,可快速穩定的實現整個賽道的行程。關鍵字:飛思卡爾智能車MC9S12XS128線性CCDPID控制算法第一章引言 21.1智能車大賽背景及應用前景 21.2概述 21.3系統結構圖 3第二章智能車機械結構調整與優化 42.1總體思路 42.2智能車前輪定位的調整 52.3系統電路板安裝 82.4舵機的安裝 92.5線性CCD支架的設計安裝 122.6測速模塊安裝 132.7智能車部分結構安裝及改造 142.7.1車模的差速及齒輪機構調整 142.7.2輪胎的選用 162.7.3重心高度的調整 162.7.4智能車后輪減速齒輪機構調整 172.8小結 17第三章硬件系統電路設計與實現 193.1硬件設計方案 193.2電源電路設計模塊 203.3ccd供電電路設計 203.4線性ccd的選取和設計 213.5單片機供電電路設計 223.6電機驅動電路設計 233.7編碼器供電電路 243.8舵機電源電路設計 253.9起跑線檢測 263.10硬件電路部分小結 26第四章軟件系統設計與實現 274.1賽道特征提取及優化處理 284.2彎道處理策略分析 284.3速度PID閉環控制 304.4路徑控制策略 314.5小結 32第五章開發工具、制作、安裝、調試過程 335.1開發工具 335.2調試過程 33第六章車模主要技術參數 35第七章結論 36參考文獻 37第一章引言1.1智能車大賽背景及應用前景隨著科學技術的不斷發展進步,智能控制的應用越來越廣泛,幾乎滲透到所有領域。智能車技術依托于智能控制,前景廣闊且發展迅速。有研究認為智能汽車作為一種全新的汽車概念和汽車產品,在不久的將來會成為汽車生產和汽車市場的主流產品。全國大學生智能汽車競賽是以智能汽車為研究對象的創意性科技競賽,是面向全國大學生的一種具有探索性工程實踐活動,是教育部倡導的大學生科技競賽之一。面向大學生的智能汽車競賽最早始于韓國,在國內,全國大學生“飛思卡爾”杯智能汽車競賽已經舉辦了九屆,得到了各級領導及各高校師生的高度評價。該競賽以“立足培養,重在參與,鼓勵探索,追求卓越”為指導思想,旨在促進高等學校素質教育,培養大學生的綜合知識運用能力、基本工程實踐能力和創新意識,激發大學生從事科學研究與探索的興趣和潛能,倡導理論聯系實際、求真務實的學風和團隊協作的人文精神,為優秀人才的脫穎而出創造條件。大賽為智能車領域培養了大量后備人才,為大學生提供了一個充分展示想象力和創造力的舞臺,吸引著越來越多來自不同專業的大學生參與其中。1.2概述在本次比賽中,本組使用大賽組委會統一提供的競賽車模,采用飛思卡爾16位微控制器MC9S12XS128作為核心控制單元,自主構思控制方案及系統設計,包括傳感器信號采集處理、控制算法及執行、動力電機驅動、舵機控制等,最終實現一套能夠自主識別路線,并且可以實時輸出車體狀態的智能車控制硬件系統。在制作小車的過程中,我們對小車的整體構架進行了深入的研究,分別在機械機構、硬件和軟件上都進行過更進,硬件上主要是考慮并實踐各種傳感器的布局,改進驅動電路,軟件上先后進行了幾次大改,最終研究出一套實際可行的辦法。本文先從總體上介紹了智能車的設計思想和方案選擇,然后分別從機械、硬件、軟件等方面的設計進行論述,重點介紹了硬件電路的設計和路徑識別的算法,接著描述了智能車的制作及調試過程,其中包含我們在制作和調試過程中遇到的問題及其解決方法,并列出了模型車的主要技術參數。1.3系統結構圖圖1-3系統結構圖第二章智能車機械結構調整與優化在小車的調試初期,由于速度較低,機械結構對小車的影響不是很明顯,但當小車速度有了較大提高之后,機械性能對小車的影響越來越大,所以我們又重新調整了機械機構。根據本屆賽道的特點,我們采用了低重心緊湊型的設計方案,并架高舵機以提高響應速度;各系統模塊設計成面積較小方形電路板。同時固定線性CCD傳感器的材料我們采用了質量較小,強度較大的碳纖維管。其整車布局如下圖2-1所示。圖2-1車模整體結構2.1總體思路對于車模的機械調整,我們的入手方面為:(1)整車重量:由于大賽使用統一的電池和電動機及傳動齒輪,并不允許使用升壓電路對電機進行升壓,故車模的輸出功率是一定的,這也意味著更輕的車模質量將使車模擁有更為優良的加減速性能,不僅如此,車模的轉向靈活性也會有較大的提高,所以,我們采用了碳素桿作為攝像頭支架,并拆除了車體上一些不必要的部件以減少車體重量。(2)重心位置:由于小車是以較高速度運行的,在過彎時,必然會有較大的離心力,而重心過高將會引起小車的側翻。并且重心不在車體的幾何中心會造成車體在較高速度下行進的不穩定,所以,在設計PCB時盡量使板體左右重量對稱。(3)傳動裝置:由于B車模使用的是滾珠差速,沒有星輪差速的效果好,太緊會減小電機與車輪間的無效滑動,但會大大減少差速效果,太松差速效果較好,但電機與車輪間無效滑動太大,甚至會使車體無法運行,故差速需要調整到一個較為折中的狀態。(4)車體響應速度:由于舵機輸出的力矩是一定的,故力臂越長轉向線速度越快,但輸出力會大大減少,所以增長力臂的時候會在一定程度上增加轉角速度,但可能會因摩擦力太大而打不動角。并且,我們在測試中發現,過長的舵機臂會限制導向輪的打角幅度,進而可能導致一些彎道無法轉過,故舵機桿我們選取了一個恰當的值。2.2智能車前輪定位的調整(1)主銷內傾:主銷內傾的調整應該保持在一個合適的范圍,“一般來說0~8度范圍內皆可”。在實際的調整中,只要將角度調整為5度左右就會對于過彎性能有明顯的改善。如果賽道比較滑,可以將這個角度再調節的大一些。在實際制作中,這個角度調節為8度左右。圖2-2主銷內傾角(2)后輪前束:由于本屆比賽B車模倒向運行,導向輪位于車體后方,故機械特性有所變化,但總體上仍然符合該原理。調節合適的前輪前束在轉向時有利過彎,還能提高減速性。將前輪前束調節成明顯的內八字,運動阻力加大,提高減速性能。由于阻力比不調節前束時增大,所以直線加速會變慢。智能車采用穩定速度策略或者采用在直道高速彎道慢速的策略時,應該調節不同的前束。后一種策略可以適當加大前束。根據我們小車的實際情況,我們選擇了較小的前束。圖2-3后輪前束(3)主銷前傾:由于車模倒向運行,動力前置,轉向特性與以往相反,采用主銷前傾可以增加汽車直線行駛時的穩定性和在轉向后使導向輪自動回正。由于主銷后傾,主銷(即轉向軸線)與地面的交點位于車輪接地點的前面。這時,車輪因受到地面的阻力,總是被主銷拖著前進。這樣,就能保持行駛方向的穩定。當汽車轉彎時,由于離心力的作用,地面對車輪的側向反力作用在主銷的后面,使車輪有自動回正的趨勢。主銷后傾角越大,方向穩定性越好,自動回正作用也越強,但轉向越沉重。實際汽車主銷后傾角一般不超過30,由前懸架在車架上的安裝位置來保證。本車模的實際主銷后傾角大概在15-20度左右。由于智能車行駛的速度較低,可以適當減小主銷后傾角。下方與車體連接孔的高度調節可以在一定范圍內調整主銷后傾角。圖2-4主銷前傾經調整后的導向輪效果如圖2-5。圖2-5車模導向輪調節效果2.3系統電路板安裝我們將系統做成一個PCB上,劃分為功率驅動電路區域,數字電路區域和模擬穩壓部分。之前我們將電路板安裝在電池的上方,結果發現在小車在以較高速度過急彎的時候非常容易側翻,在用三線法測量小車的重心的時候發現小車的重心位于車體底盤中心上方5.5cm處,屬于較高的車模重心。后來在設計PCB的時候確定了狹長的PCB形狀,在不改變攝像頭位置的情況下將主電路板填充于電池與線性CCD架之間,這種做法大大降低了小車的重心,在經三線法測量后小車重心降低了將近2cm,并在后來的測試中顯示了更好的過彎性能,在各種道型上都較以前的穩定性有所提高。電路板安裝如圖2-6。圖2-6主電路板的安裝2.4舵機的安裝舵機以前安裝位置位于車體的中心,如圖2-8所示,這種安裝方式會大大減少小車本來就狹小的車體空間并且其安裝高度太低,在這種長度的力臂下舵機輸出的力將遠遠大于小車轉向時所需要的力從而造成了舵機力量輸出的浪費。而我們知道,力矩等于力乘以力臂長度,即:M=L×F其中M為力矩,L為力臂長度,F為力。由此可知,當力矩一定時,力臂越短,輸出力越小,相反的,力臂越長,輸出力越大,而舵機恰好是一個恒力矩輸出的裝置,并且車模標配的SD-5舵機在5.5V供電時響應速度為0.14sec/60。。由于舵機輸出角速度恒定不變,故力臂越長的話其臂端的線速度就越大,則車模的轉向速度就越大,但同時也會帶來一個問題,就是轉向力量變小,甚至可能導致小車在轉向時不能提供足夠的力進行轉向。所以反應速度與輸出力之間是一個二次函數關系,該二次函數開口向下,存在著一個極值點,該點兩坐標即為力與速度相平衡的最大值。在對舵機力臂進行適當加長時舵機臂的活動范圍將會由于車模機械特性上的限制而減小,這就導致了舵機控制上的不連續,進而導致轉向時不平滑。不但如此,當舵機臂加長時,由于臂端運行軌跡為圓弧,在水平方向上分解時越遠離中心線的部分需要更大的打角才能產生相同的水平位移,故會造成舵機打角與轉角間的非線性,增加系統的控制難度。所以在經過一系列的計算與權衡之后,我們選擇了2.8cm長度的舵機臂長。舵機安裝如圖2-7。圖2-7舵機的安裝圖2-8車模原有舵機安裝方式在確定了舵機的安裝方式和擺臂的長度后,我們發現,本來想要刻意設計成的阿克曼轉角由這種方式巧妙地達成了。為了確保使得車子在行駛過程中轉彎的時候不發生側滑,在近代造車工藝中才產生了阿克曼角,阿克曼角如圖2-8示。 圖2-9阿克曼角2.5線性CCD支架的設計安裝為了保持車體尋跡具有較好的前瞻性,并且固定方法簡單、輕巧并具有一定的剛度,我們最終選擇了直徑1cm碳纖維管,把線性CCD放在了車體較前的位置,撐出高度340mm,兼顧了線性CCD的高度要求與整車的重心高度要求,圖2-10和圖2-11為CCD傳感器支架的安裝實物圖。圖2-10CCD桿與底座的連接圖2-11線性CCD的連接2.6測速模塊安裝速度傳感器一般可以選擇對射式光柵或光電編碼器。對射式光柵的重量相對較輕,阻力也相當的小,但由于整個裝置暴露在外界空氣中,容易受到外界光線或粉塵的影響;并且一般外置式的光電碼盤分割條數有限,返回線數較少,可能會造成計速不準確,而編碼器就不存在此類問題。所以測速模塊我們采用的是歐姆龍單相500線增量式旋轉編碼器,通過編碼器對電機轉速的測定我們可以知道車模在某個時刻的速度,從而通過軟件調整差值,使車模的速度達到我們想要的效果,讓車模電機運轉處于我們所要求的理想狀態,從而形成一個速度閉環控制系統,我們使用了測速編碼器去測量脈沖數,就可以得到當前電機的轉速。圖2-12編碼器的安裝方式2.7智能車部分結構安裝及改造2.7.1車模的差速及齒輪機構調整差速作用就是在電機向兩邊半軸傳遞動力的同時允許兩邊半軸以不同的速度旋轉滿足兩邊車輪盡可能以純滾動的形式做不等距行駛,減小輪胎與地面間的摩擦,差速機構如圖2-13所示。模型車在過彎時車輪的軌線是圓弧,如果向左轉彎,在相同的時間里,右側輪子走的弧線比左側輪子長,為了平衡這個差異,就要左邊輪子慢一點,右邊輪子快一點,用不同的轉速來彌補距離的差異。我們希望是模型車在加減速的時候,后輪沒有差速,而在過大彎道時有很大的差速。這樣,即加速快又過彎靈活。但是,實際的差速機構不可能達到這效果,我們調節差速只是平衡兩項,在轉彎較靈活地方情況下盡量不影響加速性能。B型模型車采用雙滾珠差速,首先將左后輪的防松螺母擰緊,通過調整后軸上的防松螺母壓緊小差速盤;通過調整右后輪防松螺母的松緊,實現對大差速齒輪盤松緊的調節。調節后的效果應為:開動電機后,握住一側輪,另一側可正常轉動;握住兩側輪,差速齒輪無法轉動。電機齒輪,編碼器齒輪與車模主齒輪間的配合也相當重要,總體原則是:兩傳動齒輪軸保持平行,齒輪間的配合間隙要合適,過松容易打壞齒輪,過緊又會增加傳動阻力,浪費動力;傳動部分要輕松、順暢,不能有遲滯或周期性振動的現象。判斷齒輪傳動是否良好的依據是,聽一下電機帶動后輪空轉時的聲音。聲音刺耳響亮,說明齒輪間的配合間隙過大,傳動中有撞齒現象;聲音悶而且有遲滯,則說明齒輪間的配合間隙過小,或者兩齒輪軸不平行,電機負載變大。調整好的齒輪傳動噪音很小,并且不會有碰撞類的雜音,后輪減速齒輪機構就基本上調整好了,動力傳遞十分流暢。圖2-13車模差與齒輪速機構2.7.2輪胎的選用本屆比賽B車模采用EVA發泡泡沫作為輪胎材料,在使用的過程中主要暴露出的問題有:高速行駛時輪胎抓地力不足;輪胎材料強度不足,長期使用容易掉渣、碎裂,輪胎不圓,跑起來出現上下震動的情況。規則中不允許對輪胎進行任何改變輪胎性能的處理,因此在調試過程中,我們盡量選擇對稱、圓的輪胎,對不規則的輪胎進行適度的打磨;盡量減少調試時間和調試次數;在不調試的時間里盡量避免四輪與地面接觸,保證輪胎的形狀不發生改變。2.7.3重心高度的調整重心的高度是影響智能車穩定性的因素之一。當重心高度偏高時,智能車在轉彎過程中會發生后輪抬起,即‘抬腳’現象,嚴重時甚至翻車。本隊重心高度的調節主要從以下方面著手:一、車底盤高度調整:合理的底盤剛度和底盤高度調節會提高智能車的加速性能。智能車的重心應該越低越好,降低地盤時實現重心下降的較為直接的方式。應注意到底盤高度的調節是將智能車的其他性能提高以后間接的幫助加速性能提高。但是由于賽道中坡道的限制,底盤的高度在低于5mm時將會沖撞坡道,并不使地盤受到不必要的磨損和震蕩,劇烈的沖擊甚至會撞壞轉向機構。因此地盤距離地面高度不能低于5mm。降低底盤的方式可以通過在前橋、后橋處增加墊片來實現。二、車體構件高度調整:在智能車改裝過程中,我們一直把重心作為考慮因素之一。使重量的分布盡量靠近底盤。此外更小體積的電路板可以恰好鑲嵌在底盤其他構件的空隙之中。三、緊固螺絲:在智能車對于緊固程度要求不高的地方,如電路板固定螺絲,傳感器定位螺絲等,采用尼龍材質的螺絲;在車底盤等高度較低的地方采用模型車原配螺絲;在安裝外設的時候,盡量采用規格合適的螺絲釘。這樣不僅可以降低整車重量,而且可以使重心高度盡量降低。2.7.4智能車后輪減速齒輪機構調整模型車后輪采用540電機驅動,電機軸與后輪軸之間的傳動比為36:105(電機軸齒輪齒數為36,后軸傳動齒數為105)。齒輪傳動機構對模型車的驅動能力有很大的影響。齒輪傳動部分安裝位置的不恰當,會大大增加電機驅動后輪的負載,會嚴重影響模型車的速度性能。調整的原則是:兩傳動齒輪軸保持平行,齒輪間的配合間隙要合適,過松容易打壞齒輪,過緊又會增加傳動阻力,浪費動力;傳動部分要輕松、順暢,不能有遲滯或周期性振動的現象。判斷齒輪傳動是否良好的依據是,聽一下電機帶動后輪空轉時的聲音。聲音刺耳響亮,說明齒輪間的配合間隙過大,傳動中有撞齒現象;聲音悶而且有遲滯,則說明齒輪間的配合間隙過小,或者兩齒輪軸不平行,電機負載變大。調整好的齒輪傳動噪音很小,并且不會有碰撞類的雜音,后輪減速齒輪機構就基本上調整好了,動力傳遞十分流暢。2.8小結小車的性能與機械結構有著非常密切的聯系。良好的機械結構是小車提高速度的關鍵。在同等的控制環境下,機械機構的好壞對其速度的影響十分顯著。我們非常重視對小車機械結構的改進,經過大量的理論研究和實踐,我們將線性CCD桿安裝在車模的前半部分,以達到合適的前瞻;為了較好的調節四輪質量分布,在搭小車的過程中,我們盡量對稱安裝各部件,每一個環節都是建立在合理的四輪定位基礎之上;為了使轉向力與速度平衡,轉向舵機采用立式安裝方式。電池盡量安裝在靠近底盤處,由于模型車的自身特點,模型車底盤可利用空間很小,硬件組成員改進了電路板形狀,使電路板和模型車的底盤形成了完美契合。第三章硬件系統電路設計與實現3.1硬件設計方案在硬件電路設計時我們遵循了可靠,緊湊,可擴展的原則。其中可靠性是硬件設計中的重中之重,小車的功能實現完全是建立在硬件電路穩定發揮作用的基礎之上的,在設計中我們充分考慮了EMC,盡量避免在主控電路下走高速信號,并對PCB上的非功率電路區域做了接地的敷銅處理,并在雙面敷銅處打孔以消除其夾層間的電容效應,將功率電路部分與模擬數字部分使用磁珠相連,盡量減小功率電路對模擬與數字部分的電磁干擾。在對單片機供電的電路中使用了二級穩壓的方法,以增強其穩定性。緊湊是指在PCB設計當中盡量使其能夠適應在小車的底盤指定區域的安裝,為了充分利用雙層板的布局空間,我們把元件布在了板的兩面以有更多的空間去考慮EMC設計規則,并盡量減小元器件的使用數量,對元器件布局進行合理安排,以盡量簡化PCB??蓴U展為在以有的緊湊PCB設計基礎上預留出一些接口用以完成以后的改進。我們將單片機的E0-E7口及部分A口用排針的形式在PCB上接出,用以安裝例如液晶和矩陣鍵盤等輔助調試設備。系統硬件電路主要由以下幾個部分構成:1)MC9S12XS128最小系統:采用藍宙最小128模塊;2)電源電路:包括5v穩壓電路、5.5v可調穩壓電路3)賽道檢測電路:采用TSL1401線性CCD傳感器;4)電機驅動電路:電機驅動采用全橋驅動;5)舵機驅動電路:由于使用的電池是7.2v,不能直接適用于舵機,所以需要對舵機外加穩壓電路;6)車速檢測電路:增量式旋轉編碼器。3.2電源電路設計模塊電源模塊的設計包括:傳感器供電模塊、單片機供電模塊、驅動電機供電模塊以及其它的外圍輔助模塊等。設計中我們注意了電源轉換效率、噪聲、干擾等。保證系統硬件電路可靠運行。首先了解一下不同電源的特點,電源分為開關電源和線性電源,線性電源的電壓反饋電路是工作在線性狀態,開關電源是指用于電壓調整的管子工作在飽和和截至區即開關狀態的。線性電源一般是將輸出電壓取樣然后與參考電壓送入比較電壓放大器,此電壓放大器的輸出作為電壓調整管的輸入,用以控制調整管使其結電壓隨輸入的變化而變化,從而調整其輸出電壓,但開關電源是通過改變調整管的開和關的時間即占空比來改變輸出電壓的。從其主要特點上看:線性電源技術很成熟,制作成本較低,可以達到很高的穩定度,波紋也很小,而且沒有開關電源具有的干擾與噪音,開關電源效率高、損耗小、可以降壓也可以升壓,但是交流紋波稍大些。電源模塊對于一個控制系統來說極其重要,關系到整個系統是否能夠正常工作,因此在設計控制系統時應選好合適的電源模塊。整個硬件電路的電源全部由7.2V,2A/h的可充電鎳鎘電池提供。由于電路中的不同電路模塊所需要的工作電壓、電流各不相同,因此需要多個穩壓電路將電池電壓轉換成各個模塊的所需電壓。3.3ccd供電電路設計由于整個系統中+5V電路功耗較小且CMOS攝像頭輸出像素信號時為峰峰值很小的正弦波,如圖3-3所示,所以極容易受到電源紋波的影響,我們本來打算使用高效率的開關電源穩壓芯片LM2576S-5,但為了降低電源紋波,故選擇使用串聯型穩壓電路,如圖3-4所示。在實際制作過程中,曾選用過LM2940-5,但當電機啟動,小車猛然加速或制動時,會出現小車沖出跑道的情況因為小車程序中加了起跑延時,而在小車沖出跑道后并沒有過一段時間再啟動,故排除了單片機復位的可能性,我們懷疑是攝像頭供電問題。于是我們取下了主板上給攝像頭供電的電源線,將一個4F5.5V的超級電容充滿電之后加在攝像頭電源與地之間,由于該電容儲電量巨大,所以可供攝像頭取電相當長的時間。當我們再把用電容供電的攝像頭小車放在跑道上運行時,就沒有出現過沖出跑道的情況。后來我們用示波器檢測小車懸空,電機加減速時LM2940的電壓變化情況,發現在電機加減速時LM2940將出現將近1V的壓降。而ccd在供電電壓稍低于5V時就會出現畫面有黑色豎條的情況,進而引起小車的誤判,從而沖出跑道。之后我們將LM2940換為了TI公司的一款LDO,TPS76850,該芯片擁有超快的反應速度,能在輸入端電壓變化劇烈時保持輸出電壓不變,經我們示波器實際觀測在電池電壓劇烈波動時其輸出電壓毫無波動,后來確定最終使用該穩壓芯片。圖3-1CCD供電電路圖3.4線性ccd的選取和設計ccd是智能小車系統信息提取關鍵,其信息輸出信息的好壞將首先決定小車的性能。因此ccd的選取必須慎重,既要保證圖像質量好,滿足后續處理和賽道識別的要求,又要考慮到單片機采集和處理的能力。對于單片機來說,ccd分辨率不是越高越好。因為這樣只會徒增單片機的負擔。ccd由鏡頭、圖像傳感芯片和外圍電路構成。而圖像傳感芯片是攝像頭最重要的部分。圖3-2TSL14013.5單片機供電電路設計對于整個車來說,單片機是最核心的東西了,就像是一個人的大腦一樣,所以對于單片機的穩壓電源莫過于是最重要的了,我們在開始的時候產用了7805,5v穩壓芯片,但由于該芯片不太穩定,電流較小,而且單片機對穩壓芯片要求非常嚴格,經過試驗我們還是采用了與ccd一樣的穩壓芯片tps76850來給單片機進行供電。圖3-3單片機供電電路3.6電機驅動電路設計電機驅動電路對于競速賽事的重要性是不言而喻的,一個好的加速與制動能力對小車整體速度的提升有著至關重要的作用。電機轉速與電壓成正比,轉矩與電流成正比。一般直流電機調速多采用PWM技術,通過控制方波的占空比來控制加在電機兩端的電壓,進而控制電機的轉速。我們最初使用的是IGBT,MOSFET驅動專用光耦TLP250與IRF3205搭建H橋來進行對RS540電機的驅動,如圖3-7。由于IRF3205有著較低的漏源電阻,故我們認為驅動性能將會很好。但在后來的測試中發現該電路在輸入PWM高于5KHz時需要50%以上的占空比才能使電機轉動,但在低頻時PWM波將會使電機產生較為強烈的震動,故后來放棄了這種方案。之后我們選用了Infineon公司的半橋驅動器BTN7971B,該款半橋芯片在25℃時集成的PMOS與NMOS導通內阻分別為7毫歐與9毫歐,并且擁有著70A的電流上限,所以驅動能力較為強勁。并且沒有出現高頻PWM驅動不了的情況,比以前有效的減小了電機的震動。雖然BTN7971B驅動能力很好,但我們為了進一步減小內阻與芯片的發熱量,采用了4片搭建兩個并聯的H橋的形式組成電路。如圖3-4。圖3-4電機驅動電路3.7編碼器供電電路本系統中編碼器部分需要5v電壓供電,我們選用LM2940穩壓芯片。LM2940是一個低壓差穩壓器,旨在提供一個典型的500mV的壓差電流高達1A的輸出電壓最大1V。它能夠減少接地電流時的輸入電壓和輸出電壓之間的差,LM2940提供低靜態電流,只有當穩壓器在漏失模式(VIN-VOUT≤3V)下才存在較高的靜態電流,但由于我們覺得tps76850有較高的穩定性,所以最終我們選用tps76850穩壓芯片。圖3-5編碼器供電電路3.8舵機電源電路設計舵機電源是5.5v,我們選用LM2576-adj,它是輸出電壓可調型,其技術參數為:輸入電壓3.5V-40V,輸出電壓1.23-37V,輸出電流3A,具有熱關閉和限流保護功能。由于小車有兩個舵機需要用該芯片供電,故在電感的選取上使用了貼片式的屏蔽功率電感一是該電感磁芯較大,線圈直徑較粗,可以滿足大電流的需求,二是該電感為屏蔽式的,可有效減少開關器件在電感上產生的電磁干擾向空間散布,進而減小了高速數字電路的出錯可能性。圖3-6舵機供電電路圖3-7貼片屏蔽電感3.9起跑線檢測我們運用TCRL5000紅外對管進行起跑線檢測電路的搭建,運用lmv393雙路電壓比較器進行對返回電壓的比較,用此來區分白線與黑線,對起跑線進行檢測。圖3-8起跑線檢測電路3.10硬件電路部分小結硬件部分是小車的基礎,只有硬件電路功能完好,穩定,才能使小車系統正常工作。其中,供電部分是重點,能夠為各個傳感器及單片機提供穩定電源,為后續軟件運行及調試打下堅實基礎。在電路設計中將所有器件集中于一塊電路板上,避免了使用導線或杜邦線進行各個部分之間的電氣連接,從而減小了因導線接觸不良或杜邦線接口松動造成的系統不穩定。第四章軟件系統設計與實現高效的軟件程序是智能車高速平穩自動尋線的基礎。我們設計的智能車系統采用CCD進行賽道識別,圖像采集及校正處理就成了整個軟件的核心內容。在智能車的轉向和速度控制方面,我們使用了經典PID控制算法,配合使用理論計算和實際參數補償的辦法,使智能車能夠穩定快速尋線。主要流程圖:系統供電系統供電圖像采集圖像采集圖像處理圖像處理判斷有效性否判斷有效性舵機打角計算是舵機打角計算電機轉速計算電機轉速計算速度反饋速度反饋結束結束圖4-1系統軟件流程圖4.1賽道特征提取及優化處理在進行圖像的二值化之后,即開始對賽道的特征即黑線進行提取,由于引導黑線在賽道兩邊,也就是說邊線將更難以檢測,而且在轉彎的時候更容易出現丟線的情況。由于小車在正常行駛時基本位于賽道的中心所以黑線不會出現在小車視野的中心,故我們在檢測引導黑線的時候從圖像的中心向兩邊進行掃描,在檢測左邊線的時候,從最下面的一行開始向左邊逐個點進行判斷在檢測到黑點后再向左檢測兩個點,若仍然為黑點,則認為該黑點有效,黑線位置判定準確,再向上掃描的時候,從上一行檢測到黑點的地方向右5個點處再向左掃描。因為賽道是連續的不會出現突變,以這種方法進行檢測可大大減少單片機處理時間并降低錯誤概率,并且不會誤把起跑線識別為邊線,該方法稱為邊緣跟蹤算法。在提取黑線后,取兩邊黑線的平均值,提取出中線。在得到正確灰度圖像后,二值化程度的關鍵就在閥值的設定。所說的閾值就是將灰度或彩色圖像轉換為高對比度的黑白圖像,比閾值亮的像素轉換為白色;而比閾值暗的像素轉換為黑色。4.2彎道處理策略分析在車輛進彎時,需要對三個參數進行設定:切彎路徑、轉向角度、入彎速度。其中,切彎路徑主要決定了車輛是選擇內道過彎還是外道過彎。切內道,路經最短,但是如果地面附著系數過小會導致車輛出現側滑的不穩定行駛狀態,原因是切內道時,曲率半徑過小,同時速度又很快,所以模型車需要的向心力會很大,而賽道本身是平面結構,向心力將全部由來自地面的摩擦力提供,因此賽道表面的附著系數將對賽車的運行狀態有很大影響。切外道,路徑會略長,但是有更多的調整機會,同時曲率半徑的增加會使得模型車可以擁有更高的過彎速度。轉向角度決定了車輛過彎的穩定性。合適的轉向角度會減少車輛在轉彎時的調整,不僅路徑可以保證最優,運動狀態的穩定也會帶來效率的提高,減少時間。在考慮轉向角度設置時需要注意以下幾個問題:對于檢測賽道偏移量的傳感器而言,在增量較小時的轉向靈敏度;檢測到較大彎道時的轉向靈敏度;對于類似S彎的變向連續彎道的處理。對于入彎速度的分析,應該綜合考慮路徑和轉向角度的影響。簡單而言,我們會采取入彎減速,出彎加速的方案,這樣理論上可以減少過彎時耗費的時間。然而,在過去幾屆比賽中,通過觀察各參賽車對彎道的處理后,我們發現并不是所有人都選擇了相同的方案。正如前面說到的那樣,不聯系路徑和轉向角度,只是單純地分析過彎速度,會造成思路的局限甚至錯誤。例如,在不能及時判斷入彎和出彎的標志點就采取“入彎減速、出彎加速”的方案,會出現彎道內行駛狀態不穩定、路徑差,同時出彎加速時機過晚,一樣會浪費時間。所以現在本系統參考實際駕駛時的一些經驗,對過彎速度的處理方式確定為:入彎時急減速,以得到足夠的調整時間,獲得正確的轉向角度;在彎道內適當提速,并保持角度不變,為出彎時的加速節約時間;出彎時,先準確判斷標志,然后加速,雖然會耗費一些時間,但是面對連續變向彎道可以減少判斷出錯的概率,保證行駛狀態的穩定性,而且彎道內的有限加速對后面的提速也有很大的幫助。綜合考慮用可以接收的額外時間換回行駛穩定性還是值得的。4.3速度PID閉環控制圖4-2PID控制工作原理PID控制策略其結構簡單,穩定性好,可靠性高,并且易于實現。其缺點在于控制器的參數整定相當繁瑣,需要很強的工程經驗。相對于其他的控制方式,在成熟性和可操作性上都有著很大的優勢。所以最后我們選擇了PID的控制方式。在小車跑動中,因為不需要考慮小車之前走過的路線,所以,我們舍棄了I控制,將小車舵機的PID控制簡化成PD控制。本方案中舵機轉角控制采用位置式的PD控制,速度閉環控制采用了增量式PID控制。在本方案中,使用試湊法來確定控制器的比例、積分和微分參數。試湊法是通過閉環試驗,觀察系統響應曲線,根據各控制參數對系統響應的大致影響,反復試湊參數,以達到滿意的響應,最后確定PID控制參數。試湊不是盲目的,而是在控制理論指導下進行的。在控制理論中已獲得如下定性知識:比例調節(P)作用:是按比例反應系統的偏差,系統一旦出現了偏差,比例調節立即產生調節作用用以減少偏差。比例作用大,可以加快調節,減少誤差,但是過大的比例,使系統的穩定性下降,甚至造成系統的不穩定。積分調節(I)作用:是使系統消除穩態誤差,提高無差度。因為有誤差,積分調節就進行,直至無差,積分調節停止,積分調節輸出一常值。積分作用的強弱取決與積分時間常數Ti,Ti越小,積分作用就越強。反之Ti大則積分作用弱,加入積分調節可使系統穩定性下降,動態響應變慢。積分作用常與另兩種調節規律結合,組成PI調節器或PID調節器。微分調節(D)作用:微分作用反映系統偏差信號的變化率,具有預見性,能預見偏差變化的趨勢,因此能產生超前的控制作用,在偏差還沒有形成之前,已被微分調節作用消除。因此,可以改善系統的動態性能。在微分時間選擇合適情況下,可以減少超調,減少調節時間。微分作用對噪聲干擾有放大作用,因此過強的加微分調節,對系統抗干擾不利。此外,微分反應的是變化率,而當輸入沒有變化時,微分作用輸出為零。微分作用不能單獨使用,需要與另外兩種調節規律相結合,組成PD或PID控制器。試湊法的具體實施過程為:1、整定比例部分,將比例系數由小變大,并觀察相應的系統響應,直至得到反應快、超調小的響應曲線。如果系統靜差小到允許范圍,響應曲線已屬滿意,那么只需比例控制即可,由此確定比例系數。2、如果在比例控制基礎上系統靜差不能滿足設計要求,則加入積分環節,整定時首先置積分時間為很大值,并將經第一步整定得到的比例系數略微縮?。ㄈ缈s小為原值的0.8),然后減小積分時間,使得在保持系統良好動態的情況下,靜差得到消除,在此過程中,可根據響應曲線的好壞反復改變比例系數和積分時間,以期得到滿意的控制過程,得到整定參數。3、若使用比例積分控制消除了靜差,但動態過程經反復調整仍不能滿意,則可加微分環節,構成比例、積分、微分控制器。在整定時,先置微分時間為零,在第二步整定基礎上增大,同樣地相應改變比例系數和微分時間,逐步試湊以獲得滿意的調節效果和控制參數。4.4路徑控制策略由于CCD的前瞻性很好,故采用PD控制,基本的行駛策略是使賽車保持在引圖4-3大S最優路線圖導線的中心線上,但這只適用于直道,對于普通彎道與大S彎道,如果不改變策略,肯定會影響全程時間,所以根據不同道路曲率調整舵機的參數,選取最優路線以減少路程,路線如圖4.3所示,實線為實際道路,虛線為選取的行駛路線。對小S彎道可按直道處理,便可提速節省時間,路線如圖4-4所示。圖4-4小S最優路徑4.5小結智能車中機械和硬件是基礎,而算法程序就是小車的靈魂,因此軟件系統的設計起著至關重要的作用,在小車的調試過程中我們曾幾度修改過小車的循跡與控制算法,但最后發現還是經典的PID控制算法更適合我們的小車調試,所以后來我們保留了最基本最經典的控制算法。第五章開發工具、制作、安裝、調試過程5.1開發工具程序的開發是在組委會提供的CodeWarriorIDE下進行的,包括源程序的編寫、編譯和鏈接,并最終生成可執行文件。CodeWarriorforS12是面向以HC1和S12為CPU的單片機嵌入式應用開發軟件包。包括集成開發環境IDE、處理器專家庫、全芯片仿真、可視化參數顯示工具、項目工程管理器、C交叉編譯器、匯編器、鏈接器以及調試器。5.2調試過程通過組委會提供的CodeWarriorIDE編譯軟件的在線調試功能,可以得到大量的信息,為智能汽車的調試提供了很大的幫助。在智能汽車的調試過程中,有針對性的開發一個便于人機交互的上位機系統,通過簡單明了的可視化界面直觀的顯示智能汽車的狀態對調試有很大幫助。我們開發了用于監測智能汽車實時狀態的實時監測系統,大大提高了調試效率。智能汽車通過無線模塊與實時監測系統進行通訊。通過該系統,我們可以實時了解到智能汽車的實際行駛路線,并且能夠監測智能汽車在行駛過程中轉角、傳感器狀態及速度等相關信息。實時監測系統還有一些其他輔助功能,為智能汽車調試過程提供了大量有用的信息。智能汽車實時監測系統用C#開發完成。該系統通過PC機串口與無線模塊連接。上位機軟件隨著智能汽車調試進度做了很多版本。從一開始只能接收并處理一些簡單的信息到最后可以完整的畫出賽道圖,我們的上位機軟件有了很大的進步。最終形成了比較成熟的版本。實時監測系統主界面如圖5.1所示:圖5-1智能車調試工具上位機主界面在該版本監控系統中,我們不僅可以監控智能汽車行駛過程中的狀態,并且可以保存一些重要信息,比如各種特殊道路上傳感器的狀態,速度及賽車路徑圖等。通過該系統,我們可以綜合智能汽車實際行駛中的信息,分析得出最優控制策略,進而得到最優控制策略。第六章車模主要技術參數表6.1模型車技術參數統計表項目參數車模幾何尺寸(長、寬、高)(毫米)280×200×330車模軸距/輪距(毫米)130車模平均電流(勻速行駛)(毫安)1800電路電容總量(微法)1739傳感器種類及個數CCD2個,500線編碼器1個新增加伺服電機個數0賽道信息檢測空間精度(毫米)10賽道信息檢測頻率(次/秒)33除XS128之外其它主要芯片TPS76850,LM2576車模重量(帶有電池)(千克)1.2第七章結論我們從認識智能車比賽,到參與到其中,組裝機械,焊接電路,編寫程序再到參加比賽,經過了將近大半年的時間,在此期間,我們從對只能車的模糊認識,再到讓小車以令人滿意的速度跑起來,進行了了大量的摸索與探究,其間,有令人歡欣鼓舞的突破,也有令人絕望心碎的瓶頸,但我們都沒有放棄對智能車速度與穩定性提升的追求??赡苡捎谖覀兌际嵌昙墝W生,對專業知識的掌握程度還不夠,考慮的問題也不夠全面,小車中的一些問題沒有得到圓滿解決,但我們也沒有讓那通宵達旦調車的日日夜夜的努力白費,小車在東北賽區也沒有表現得讓人失望,在即將來臨的大賽前我們依然有足夠的信心相信小車仍然表現得不會令人失望。參考文獻[1]卓晴,黃開勝,邵貝貝等.學做智能車——挑戰“飛思卡爾”杯[C].北京:北京航空航天大學出版社,2007.[2]尹念東.智能車輛的研究及前景[J].上海汽車技術導向,1994.2008.[3]邵貝貝.單片機嵌入式應用的在線開發方法[M].北京:清華大學出版社,2004.[4]余星毅,徐斌,余春賢,譚興聞.吉林大學愛德2隊技術報告.[5]Codewarrior使用指南.[6]程學慶.LabVIEW圖形化編程與實例應用[M].北京:中國鐵道出版社,2005.5.1.[7]吳銘鴻,葉增軟,陳求興.廈門大學至善隊技術報告.[8]齊鵬遠,易筱,王洪陽.北京科技大學光電隊技術報告.附錄A:源程序代碼#include<hidef.h>/*commondefinesandmacros*/#include"derivative.h"/*derivative-specificdefinitions*/#include"math.h"#include<stdio.h>#defineI_Limit400#defineSpeed_err_MAX100#defineucharunsignedchar#defineuintunsignedint#defineSpeed_err_MAX_separate50//#defineTSL_CLK2PORTA_PA2//定義線性傳感器2的端口CLK//#defineTSL_SI2PORTA_PA0//定義線性傳感器2的端口SI#defineTSL1401_SI(x)(PORTA_PA1=(x))#defineTSL1401_CLK(x)(PORTA_PA0=(x))voidPWM_Init(void);voidDly_us(byteus);voidSetBusCLK_64M(void);voidUART_Init(void);voiduart_putchar(unsignedcharc);voidECT0_init(void);voidECT0_init(void);voidIO_Init(void);voiddelay(void);voidDelayMs(inttime);voidSendImageData(void);voidDEAL(void);voidMeasure(void);voidStand_PD(void);//voidRD_TSL(void);voidCCD_Init(void);voidkalman_update(void);voidDeviceInit(void);voidDEAL1(void);voidDEAL2(void);voidSpeed_Ctrl(void);voidOutPut_Data(void);voidTSL1401_GetLine();//voidADC_Init(void);uintADCValue(ucharchannel);voidDelayMs(inttime);//ucharpixel[128];//全局變量聲明volatileucharADV[128]={0};volatileunsignedintInter_cout=0;volatileintMAXA,MINA,LENGTH,LEFT[51],RIGHT[51],MID[51],LEFT_zhangai[51],RIGHT_zhangai[51];volatileuintSUB=0;volatileuintSUB1=0;volatileintCCD_threshold=15;volatileunsignedcharRoad_lost_like=0;volatileintMINA_2_MID=0;//volatilefloatOutData[4]={0};volatileintCCD_Pianyi=26;volatileunsignedcharCOUNT=0;volatileuintM_PACNT;volatileintspeed1=0;volatilefloatSpeed_err_0=0;volatilefloatSpeed_err_1=0;volatilefloatSpeed_err_2=0;volatilefloatSpeed_err_3=0;//速度給定量,慢慢增加//93//114//110//105volatilefloatSET_V=60;volatileintSpeed_erro_MAX=30;volatileintSpeed_I_Limit=0;volatilefloatfP=0,fI=0,fD=0;volatilefloatSpeed_P=18;volatilefloatSpeed_I=5;//0.02volatilefloatSpeed_D=0;volatilefloatSpeed_CtrlInteral=0;volatilefloatSpeed_Out_old=0;volatilefloatSpeed_Out_New=0;volatileunsignedintInter_cout1=0;volatilecharPTM0=0;volatilecharPTM2=0;volatilecharPTM4=0;volatilecharPTM6=0;volatilecharLEFT_qipaoxian=0;volatilecharRIGHT_qipaoxian=0;volatilechartime_zhangai=50;//舵機程序中的過程參量volatilefloatCarAngle_err_0;volatilefloatCarAngle_err_1;volatilefloatCarAngle_err_2;volatilefloatCarAngle_err_3;volatilefloatCarAngle_err_new;volatilefloatGyro_err_new;volatilefloatCarAngle=0;volatilefloatStand_PD_result;volatilefloatStand_PD_result0;volatilefloatStand_PD_result1;/**************************舵機參數區***********************************///volatilefloatStand_P_0_zheng=205;//直立時靠近內側參數18//232//265volatilefloatStand_D_0_zheng=1500;//volatilefloatStand_P_0_fan=205;//volatilefloatStand_D_0_fan=1500;//volatileunsignedcharTimer_1ms_flag=0;volatileunsignedintdirection_cout=0;volatileunsignedcharUART_COUNT=0;volatilecharUART_qipaoxian=0;volatilecharPTM_PTM=0;unsignedchardatabuf[10];floatOutData[4]={0};voidmain(void){//DelayMs(1000);DeviceInit();MID[0]=57;LEFT[4]=0;LEFT[3]=0;LEFT[2]=0;LEFT[1]=0;RIGHT[4]=0;RIGHT[3]=0;RIGHT[2]=0;RIGHT[1]=0;UART_COUNT=0;/*DDRM_DDRM0=0;//配置IO為輸入測試用PTM_PTM0=1;//配置IO的數據為PERM_PERM0=1;PPSM_PPSM0=0;RDRM_RDRM0=0;*///PTT_PTT0=0;DDRT_DDRT0=0;RDRT_RDRT0=0;PERT_PERT0=1;PPST_PPST0=0;DDRT_DDRT1=0;RDRT_RDRT1=0;PERT_PERT1=1;PPST_PPST1=0;//LEFT_qipaoxian=PTIT_PTIT0;//LEFT_qipaoxian=PTT_PTT0;//if()DelayMs(1000);while(1){if(PTIT_PTIT0>0.9)PTM6=PTT_PTT0;if(PTM6>0.9){LEFT_qipaoxian=1;//PORTK_PK3=0;PORTE_PE2=0;//配置IO的數據為0}if(PTT_PTT1>0.9)PTM4=PTT_PTT1;if(PTM4>0.9){RIGHT_qipaoxian=1;//PORTK_PK3=0;PORTE_PE3=0;//配置IO的數據為0}if(Timer_1ms_flag>0)//如果1毫秒中斷標志發生{Timer_1ms_flag=0;//標志位置零kalman_update();//系統控制}}}/********************PWM1PWM3PWM5PWM7通道級聯初始化程序********************/voidPWM_Init(void)//channel01--leftchannel23--right{PWMPRCLK=0X20|0X02; //fenpin//ClockA4分頻CLOCKB4分頻MCLK=32MPWMSCLB=0X00;//SA時鐘設置PWMSCLA=0X00; //SB時鐘設置PWMCLK=0X00|0X00; //選擇ClockACLOCKBPWMPOL=0X02|0X08|0X20|0X80; //開始為高電平PWMCAE=0X01; //通道01中通道23左對齊通道45左對齊通道67左對齊PWMCTL=0X0C|0X10|0X20|0X40|0X80; //01通道級聯23通道級聯TWAI=1FREZ=1PWMPER01=53500; //頻率300HZPWMDTY01=0;//占空比0%10800為中值680015000PWMPER23=53500;//頻率320010KHZPWMDTY23=0;//占空比PWMPER45=1600; //頻率320010KHZPWMDTY45=0;//占空比0%PWMPER67=1600; //頻率320010KHZPWMDTY67=0; //占空比0%PWMSDN=0X00;//PWM關閉寄存器PWME=0X02|0X08|0X20|0X80; //使能通道01使能通道23使能通道45使能通道67}unsignedshortCRC_CHECK(unsignedchar*Buf,unsignedcharCRC_CNT){unsignedshortCRC_Temp;unsignedchari,j;CRC_Temp=0xffff;for(i=0;i<CRC_CNT;i++){CRC_Temp^=Buf[i];for(j=0;j<8;j++){if(CRC_Temp&0x01)CRC_Temp=(CRC_Temp>>1)^0xa001;elseCRC_Temp=CRC_Temp>>1;}}return(CRC_Temp);}voidOutPut_Data(void){inttemp[4]={0};unsignedinttemp1[4]={0};unsignedchari;unsignedshortCRC16=0;for(i=0;i<4;i++){temp[i]=(int)OutData[i];temp1[i]=(unsignedint)temp[i];}for(i=0;i<4;i++){databuf[i*2]=(unsignedchar)(temp1[i]%256);databuf[i*2+1]=(unsignedchar)(temp1[i]/256);}CRC16=CRC_CHECK(databuf,8);databuf[8]=CRC16%256;databuf[9]=CRC16/256;}////////////////////////////////延時函數us///////////////////////////////////////////////////////*voidDly_us(byteus){byteii;for(ii=0;ii<us;ii++){_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);}}*//****************************設置總路線頻率*********************************/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(void){DDRA_DDRA0=1;//配置IO為輸出DDRA_DDRA1=1;//配置IO為輸出PORTA_PA0=0;//配置IO的數據為0PORTA_PA1=0;//配置IO的數據為0DDRE_DDRE2=1;//配置IO為輸出DDRE_DDRE3=1;//配置IO為輸出PORTE_PE3=1;//配置IO的數據為0PORTE_PE2=1;//配置IO的數據為0}///////////////////ccd初始化//////////////////////////voidCCD_Init(void){ATD0CTL1=0x00;//7:1-外部觸發,65:00-8位精度,4:放電,3210:chATD0CTL2=0x40;//禁止外部觸發,中斷禁止ATD0CTL3=0x90;//右對齊無符號,每次轉換4個序列,NoFIFO,Freeze模式下繼續轉ATD0CTL4=0x01;//765:采樣時間為4個AD時鐘周期,ATDClock=[BusClock*0.5]/[PRS+1]ATD0CTL5=0x30;//6:0特殊通道禁止,5:1連續轉換,4:1多通道輪流采樣}////函數名:延時函數delay(),DelayMs()//功能:延時函數//返回:無//voiddelay(void){unsignedinti;for(i=0;i<5;i++){asm("nop");}}/*voidDelayMs(inttime){shortx,y;for(x=0;x<4106;x++){for(y=time;y>0;y--){}}}*/////////////////////////////CCD信號采集////////////////////////////////////////////*voidRD_TSL(void){uchari=0;//test=1;TSL_CLK2=0;//起始電平高TSL_SI2=0;//起始電平低Dly_us(1);//合理的延時TSL_CLK2=0;//下降沿TSL_SI2=1;//上升沿Dly_us(1);//合理延時TSL_CLK2=1;//上升沿TSL_SI2=0;//下降沿Dly_us(1);//合理延時for(i=0;i<128;i++){TSL_CLK2=0;//下降沿Dly_us(1);//合理延時TSL_CLK2=1;//上升沿while(!ATD0STAT0_SCF);//等待轉換結束ADV[i]=ATD0DR0L;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論