版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于激光傳感器和嵌入式系統(tǒng)</p><p><b> 的移動(dòng)機(jī)器人</b></p><p><b> 目 錄 </b></p><p><b> 目錄I</b></p><p><b> 第一章 緒論4</b><
2、;/p><p><b> 1.1選題背景4</b></p><p> 1.2主要內(nèi)容及研究意義4</p><p> 1.3系統(tǒng)框架及整體設(shè)計(jì)思路5</p><p> 第二章 系統(tǒng)硬件設(shè)計(jì)6</p><p><b> 2.1電源系統(tǒng)6</b></p>
3、<p> 2.2智能車的眼睛:激光收發(fā)模塊8</p><p> 2.3智能車核心處理器9</p><p> 2.4智能車動(dòng)力部分——馬達(dá)13</p><p> 2.5轉(zhuǎn)向工具:舵機(jī)16</p><p> 2.6調(diào)試工具17</p><p> 第三章 機(jī)械結(jié)構(gòu)設(shè)計(jì)18</p&g
4、t;<p> 2.1激光頭的安裝方案設(shè)計(jì)19</p><p> 2.2舵機(jī)位置的選擇19</p><p> 2.3核心板的設(shè)計(jì)20</p><p> 2.4激光管結(jié)構(gòu)設(shè)計(jì)21</p><p> 第四章 軟件開發(fā)及調(diào)試22</p><p> 4.1單片機(jī)程序設(shè)計(jì)23</p>
5、;<p> 4.2應(yīng)用系統(tǒng)開發(fā)過程24</p><p> 4.3工程創(chuàng)建25</p><p> 4.4程序編譯27</p><p> 4.1下載調(diào)試28</p><p> 4.2單片機(jī)的資源分配28</p><p> 第五章 程序分析29</p><p>
6、 第六章 參考文獻(xiàn)35</p><p><b> 摘 要</b></p><p> “飛思卡爾杯”全國(guó)大學(xué)生智能汽車邀請(qǐng)賽屬教育部主辦的全國(guó)五大競(jìng)賽之一,其專業(yè)知識(shí)涉及控制、模式識(shí)別、傳感技術(shù)、汽車電子、電氣、計(jì)算機(jī)、機(jī)械等諸多學(xué)科。根據(jù)大賽的技術(shù)要求,設(shè)計(jì)制作了智能車控制系統(tǒng)。在整個(gè)智能車控制系統(tǒng)中,如何準(zhǔn)確地識(shí)別道路及實(shí)時(shí)地對(duì)智能車的方向進(jìn)行控制是整個(gè)控制
7、系統(tǒng)的關(guān)鍵。</p><p> 本文首先對(duì)智能車的硬件進(jìn)行設(shè)計(jì),其次對(duì)系統(tǒng)的軟件部分進(jìn)行設(shè)計(jì),整個(gè)系統(tǒng)涉及車模機(jī)械結(jié)構(gòu)調(diào)整以及傳感器電路設(shè)計(jì)及與信號(hào)處理。通過軟件與硬件的搭配,實(shí)現(xiàn)避障的功能和遠(yuǎn)程控制的功能。</p><p> 關(guān)鍵字:智能車 傳感器 嵌入式 </p><p><b> Abstract</b></p>
8、<p> Freescale Cup National Undergraduate Smart Car Competition is sponsored by the National Ministry of Education, one of the five contests, their professional knowledge related to control, pattern recognition, s
9、ensor technology, automotive electronics, electrical, computer, machinery and many other disciplines. According to the technical requirements of the contest, we design the intelligent vehicle control system. In the entir
10、e control system of the smart car, how to accurately identify the road a</p><p> This paper first introduces the hardware of the smart car. The second part of the system is software design. The entire syste
11、m is involved in mechanical models of structural adjustment and the sensor circuit design. Through the software and hardware collocation, realize the function of obstacle avoidance and the function of remote control.<
12、/p><p> Key word: intelligent car; Sensors; Embedded; Remote contr</p><p><b> 第一章 緒論</b></p><p><b> 1.1選題背景</b></p><p> 物質(zhì)生活的提高,使人們更加注重和諧與健康,本
13、來危險(xiǎn)系數(shù)極高但人們卻習(xí)以為常的工作,如今也少有人參與,因?yàn)槿缃竦娜藗円颜业搅舜嫠麄儏⑴c人類難以到達(dá)的位置的智能設(shè)備,當(dāng)然,設(shè)備必須具有一定的智能性,能夠獨(dú)立的判斷所處環(huán)境的所有有用信息,并加以判斷,予以歸類,尋找最合適的位置,捕捉最難得最珍貴最具實(shí)時(shí)性的信息,然后進(jìn)行實(shí)時(shí)反饋,讓我們可以更加客觀地采取判斷,不至于因環(huán)境的變化或者不適應(yīng)等各種外界因素影響我們的主管意識(shí),可以說,這種智能設(shè)備的出現(xiàn),一定程度上解放了人類的勞動(dòng)力,既如此,
14、我們就更應(yīng)繼續(xù)從事這方面的學(xué)習(xí)與研究,充分發(fā)揮這一領(lǐng)域給社會(huì)帶來的益端.</p><p> 目前最為前沿的就是仿生機(jī)器人,但比之稍簡(jiǎn)單的就是智能車,因?yàn)樗鼰o需判斷各種平衡的因素,更具穩(wěn)定性和實(shí)用性,在此基礎(chǔ)上賦予它一定的感知、判斷和交互能力,同樣可以做出與人類能力相及甚至超越人類極限的事情。工業(yè)上,這種機(jī)器人已經(jīng)應(yīng)用于各種行業(yè),目前所要追求的目標(biāo)就是更加的小巧與低成本,更大的實(shí)用性。</p>&l
15、t;p> 1.2主要內(nèi)容及研究意義</p><p> 智能車即輪式移動(dòng)機(jī)器人,是一種集環(huán)境感知、決策規(guī)劃、自動(dòng)行駛等功能于一體的綜合智能系統(tǒng),智能車集中地運(yùn)用了自動(dòng)控制、模式識(shí)別、傳感器技術(shù)、汽車電子、電氣、計(jì)算機(jī)、機(jī)械等多個(gè)學(xué)科的知識(shí)[1] 。隨著控制技術(shù)、計(jì)算機(jī)技術(shù)和信息技術(shù)的發(fā)展,智能車在工業(yè)生產(chǎn)和日常生活中已經(jīng)扮演了非常重要的角色。近年來,智能車在野外、道路、現(xiàn)代物流及柔性制造系統(tǒng)中都有廣泛運(yùn)用
16、,已成為人工智能領(lǐng)域研究和發(fā)展的熱點(diǎn)。目前,智能車領(lǐng)域的研究已經(jīng)能夠在具有一定標(biāo)記的道路上為司機(jī)提供輔助駕駛系統(tǒng)甚至實(shí)現(xiàn)無人駕駛,這些智能車的設(shè)計(jì)通常依靠特定道路標(biāo)記完成識(shí)別,通過推理判斷模仿人工駕駛進(jìn)行操作[2]。本文所述智能車就是一種自動(dòng)導(dǎo)引小車,能夠在給定的區(qū)域內(nèi)沿著軌跡自動(dòng)進(jìn)行行進(jìn)。</p><p> 1953年,美國(guó)Barrett Electric公司制造了世界上第1臺(tái)采用埋線電磁感應(yīng)方式跟蹤路徑的自
17、動(dòng)導(dǎo)向車,也被稱作“無人駕駛牽引車”(automated guided vehicle,簡(jiǎn)稱AGV)。這些自動(dòng)導(dǎo)向車主要用于自動(dòng)化倉(cāng)貯系統(tǒng)和柔性裝配系統(tǒng)的物料運(yùn)輸[3]。20世紀(jì)60年代和70年代初,AGV仍采用這種導(dǎo)向方式。但是,20世紀(jì)70年代中期,具有載貨功能的AGV在歐洲得到了應(yīng)用并被引入到美國(guó)。這些自動(dòng)導(dǎo)向車主要用于自動(dòng)化倉(cāng)儲(chǔ)系統(tǒng)和柔性專配系統(tǒng)的物料運(yùn)輸。在20世紀(jì)70年代和80年代初,“智能車”的應(yīng)用領(lǐng)域擴(kuò)大而且工作條件也變
18、得多樣化,因此,新的導(dǎo)向方式和技術(shù)得到了更廣泛的研究與開發(fā)[4]。自動(dòng)導(dǎo)向無軌行走車輛常用蓄電池作為動(dòng)力源,它是機(jī)電一體化的典型[5]。AGV技術(shù)在汽車工業(yè)上有著廣泛的用途,歐洲和美、日等國(guó)的汽車生產(chǎn)工業(yè)在80年代就開始大量使用AGV技術(shù),現(xiàn)已成為比較成熟的技術(shù)。</p><p> 智能車有著極為廣泛的應(yīng)用前景[6]。結(jié)合傳感器技術(shù)和自動(dòng)駕駛技術(shù)可以實(shí)現(xiàn)汽車的自適巡航并把車開得開得又快又穩(wěn)、安全可靠;汽車夜間行
19、駛時(shí),如果裝上紅外攝像頭,就能實(shí)現(xiàn)夜晚汽車的安全輔助駕駛;他也可以工作在倉(cāng)庫(kù)、碼頭、工廠或危險(xiǎn)、有毒、有害的工作環(huán)境里,此外他還能擔(dān)當(dāng)起無人值守的巡邏監(jiān)視、物料的運(yùn)輸、消防滅火等任務(wù)。在普通家庭轎車消費(fèi)中,智能車的研發(fā)也是有價(jià)值的,比如霧天能見度差,人工駕駛經(jīng)常發(fā)生碰撞,如果用上這種設(shè)備,激光雷達(dá)會(huì)自動(dòng)探測(cè)前方的障礙物,電腦會(huì)控制車輛自動(dòng)停下來撞車就不會(huì)發(fā)生了。</p><p> 對(duì)于歷史而言,解放和發(fā)展勞動(dòng)力
20、永遠(yuǎn)是人們提出的自私卻又可行的目標(biāo),這其中就包括人身安全的保證,在人類無法到達(dá)或者危險(xiǎn)性極高的環(huán)境下,能夠自行潛入并獲取我們所需要的信息,最理想的就是能夠自發(fā)的進(jìn)行簡(jiǎn)單的處理,但是這種設(shè)想的實(shí)現(xiàn)卻有著很大的難度。比如說這種機(jī)器人小車的運(yùn)行,車子一旦研制出來,就應(yīng)成批量生產(chǎn),也就是外形無法隨著環(huán)境的改變而改變,這就給機(jī)器人小車的制造產(chǎn)生了困難,比如說摩擦系數(shù)、軟硬程度、空氣阻力、傾斜度、行走空間等等各種無法預(yù)料的因素,只有生產(chǎn)一種小巧、靈
21、活多變的探測(cè)設(shè)備,才能夠真正的實(shí)現(xiàn)人力的替代;當(dāng)然除了環(huán)境的多變性,還有車子整體的性能和承載外界不良因素的力度,要采集信息的強(qiáng)弱與收發(fā)的干擾等等。</p><p> 無疑,四個(gè)或者更多輪子的車型機(jī)器人要比人形的機(jī)器人穩(wěn)定的多,控制也更為簡(jiǎn)單,體積更加小巧,所以,目前世界各大探測(cè)公司都在研發(fā)這種機(jī)器人,比較實(shí)用且有代表性的是GE的探測(cè)小車,能夠?qū)⑼饨绮杉母鞣N影像采集并進(jìn)行處理和保存,然后完整的反饋回來,具有工業(yè)
22、上的可行性。</p><p> 1.3系統(tǒng)框架及整體設(shè)計(jì)思路</p><p> 智能車系統(tǒng)采用飛思卡爾的16位微控制器MC9S12XS128單片機(jī)作為核心控制單元用于智能車系統(tǒng)的控制。在選定智能車系統(tǒng)采用光電傳感器方案后,智能車的位置信號(hào)由車體前方的光電傳感器采集,經(jīng)MC9S12XS128 MCU的I/O口輸入后,用于智能車的運(yùn)動(dòng)控制決策,同時(shí)內(nèi)部PWM模塊發(fā)出PWM波,控制舵機(jī)轉(zhuǎn)彎,
23、同時(shí)驅(qū)動(dòng)直流電機(jī)對(duì)智能車進(jìn)行加速和減速控制,最終使智能車能夠自主行駛,并自覺繞開前方障礙。</p><p> 第二章 系統(tǒng)硬件設(shè)計(jì)</p><p> 在小車的整體設(shè)計(jì)中,采用紅外信號(hào)作收發(fā)模塊,讓小車具有識(shí)別功能;MC9S12XS128作為處理器,判斷有誤障礙物,并給與舵機(jī)相應(yīng)命令,繞開障礙達(dá)到避障功能。機(jī)械上獨(dú)特的設(shè)計(jì),讓小車在保證簡(jiǎn)單的情況下盡量的美觀!下面將對(duì)智能避障車整體系統(tǒng)
24、進(jìn)行詳細(xì)講述!</p><p><b> 2.1電源系統(tǒng)</b></p><p><b> 整體結(jié)構(gòu)圖:</b></p><p> 智能避障車的動(dòng)力電源采用飛思卡爾比賽專用電源,負(fù)荷電壓7.8V左右,在充電結(jié)束后會(huì)有一定的上浮,升至8.1V左右,對(duì)于小車的馬達(dá),可以直接使用,期間曾試過變壓后給馬達(dá)供電,但是效果不是很
25、好,經(jīng)常導(dǎo)致變壓塊發(fā)熱現(xiàn)象嚴(yán)重,后采用電源直接供電,這個(gè)直接供電當(dāng)然也是通過下面將要介紹的這個(gè)模塊予以驅(qū)動(dòng)。這個(gè)驅(qū)動(dòng)是用場(chǎng)效應(yīng)管搭建H橋來驅(qū)動(dòng)電機(jī),因?yàn)閳?chǎng)效應(yīng)管具有內(nèi)阻小、開關(guān)速度快等優(yōu)點(diǎn),并且方便加散熱片。場(chǎng)效應(yīng)管是電壓驅(qū)動(dòng)器件,只要柵極電壓稍高一點(diǎn)就能使管子導(dǎo)通。本模塊電路輸入電壓5-15V,最大輸出電流理論上74A。</p><p> 如圖所示,從正面看,CD4011的14腳接VDD(7.2V左右),7腳
26、接GND,要接上拉電阻,否則可能會(huì)出現(xiàn)邏輯混亂。下圖就是電機(jī)驅(qū)動(dòng)的電路原理圖:</p><p> 顯然,電源這對(duì)于小車的激光收發(fā)模塊無疑是不能使用的,這就需要進(jìn)行變壓輸出,降低至5V穩(wěn)定輸出,采用最簡(jiǎn)單的穩(wěn)壓模塊LM7805,作為核心板的電源,78**系列的穩(wěn)壓集成塊的極限輸入電壓是36V,最低輸入電壓比輸出電壓高3-4V。還要考慮輸出與輸入間壓差帶來的功率損耗,所以一般輸入為9-15V之間,適合我所用的7.8
27、V直流電源,同時(shí)再獨(dú)立接另一個(gè)LM7805作為激光管的電源,這樣可以避免激光管啟動(dòng)時(shí)的高功率干擾到核心板的電平信號(hào);由于在允許電壓范圍內(nèi),電壓越大,舵機(jī)響應(yīng)速度越快,因此采用6V電壓給舵機(jī)供電,由LM7806 為主要芯片的6V 穩(wěn)壓電路,完全可以滿足舵機(jī)對(duì)電壓和電流的要求,因此選用此電路作為舵機(jī)的供電電源。具體5V和6V供電電路接線圖2-5所示:</p><p> 由于在智能車運(yùn)行過程中阻力的變化頻繁,這種阻力
28、可能由于加速制動(dòng)劇烈,也可能由于拐向帶來的力矩方向變化造成的阻力,因此電池負(fù)載變化劇烈,輸出電壓也劇烈變化,且幅度很大,所以在電池端多加了濾波電容,予以補(bǔ)償。</p><p> 2.2智能車的眼睛:激光收發(fā)模塊</p><p> 說起激光傳感器,相信大家都不陌生,下面先介紹下感應(yīng)障礙物的原理:</p><p> 由發(fā)射管發(fā)射一定波長(zhǎng)的紅光,經(jīng)障礙物反射到接收管
29、。由于在遠(yuǎn)近不同距離上反射回的光強(qiáng)度不同,在遠(yuǎn)處的大部分光線都被吸收或者散射掉了,而障礙物上可以反射回大部分光線,所以接收到的反射光強(qiáng)不一樣,由障礙物反射回來的大量光線直接導(dǎo)致接收三極管導(dǎo)通,而由遠(yuǎn)處(空曠處為無限遠(yuǎn) )反射回來的光線不能導(dǎo)致接收三極管導(dǎo)通,信號(hào)輸入到單片機(jī)中便是高電平和低電平,這樣就可以將有無障礙物區(qū)分開來。</p><p> 但是一個(gè)好的激光傳感器,多少會(huì)存在不穩(wěn)定現(xiàn)象其實(shí)不穩(wěn)定,很大的因素
30、就是發(fā)射出來的激光信號(hào)頻率,不是接收管最佳的接收管的最佳頻率。盡管激光接收頻率可以用芯片編程序,輸出PWM信號(hào)驅(qū)動(dòng),但是那樣的抗干擾能力欠佳,既然要做又知道哪里出的問題,那就盡量改善嘛!</p><p> 一個(gè)好的調(diào)制管,使用效果明顯有改進(jìn),究其原因,半導(dǎo)體光電元件的頻率特性是指它們的輸出信號(hào)與調(diào)制光頻變化的關(guān)系,當(dāng)光敏電阻受到脈沖照射時(shí),光電流達(dá)到其穩(wěn)態(tài)值;當(dāng)光突然消失時(shí),光電流變?yōu)榱?,這就是激光收發(fā)模塊的基
31、本原理。</p><p> 我所使用的調(diào)制管根據(jù)下拉電阻的不同能夠產(chǎn)生140KHZ-205KHZ方波信號(hào),經(jīng)過信號(hào)發(fā)到驅(qū)動(dòng)激光發(fā)射管,理論上接收管在頻率180KHZ—205KHZ左右的頻率下接收能力最強(qiáng),我的接收管發(fā)射管實(shí)測(cè)頻率為180KHZ,另外配一個(gè)聚光透鏡,增強(qiáng)接收管對(duì)反射光的吸收。當(dāng)然,要對(duì)準(zhǔn)焦點(diǎn)能夠增強(qiáng)接收管接收效果和抗干擾能力!</p><p> 在焊接激光模塊的電路時(shí),要
32、注意的事項(xiàng)很多,激光發(fā)射器的供電電壓應(yīng)在4.5-5.5V,由于我的電源模塊相互獨(dú)立,因此避免了各種電路同時(shí)上電造成的電壓波動(dòng),經(jīng)過測(cè)試,能夠保證激光發(fā)射器的電壓在5.0±0.2V,也就保證了激光管的長(zhǎng)使用壽命。同時(shí),由于激光發(fā)射器的特殊工作原理,具有靜電敏感性,使用過程中要做好ESD,盡量避免人體接觸和帶靜電物體接觸激光管,避免靜電傷害,否則容易出現(xiàn)發(fā)光效率降低甚至不工作等現(xiàn)象,解決辦法是:</p><p&
33、gt; 焊接前先洗手,摸一下暖氣片,釋放人體靜電;</p><p> 電烙鐵接地,每次用之前釋放靜電;</p><p> 堅(jiān)持室內(nèi)操作,避免日光直接照射激光接收芯片(多次試車,盡管樓道狹小,仍然堅(jiān)持室內(nèi))。</p><p> 每次試跑,注意極性不能戒飯,電壓一定不超過5.5V(予以保證),電流不能大于50mA(予以保證)。</p><p&
34、gt; 如圖所示,電壓經(jīng)調(diào)制管調(diào)制給與激光頭,產(chǎn)生所需調(diào)頻光信號(hào),電路搭建時(shí)一定要注意保證限流電阻大于65歐姆,這樣才能給予激光頭足夠的保護(hù)作用,但是不能過大,這樣產(chǎn)生的激光信號(hào)將會(huì)很弱,影響小車前瞻的距離,直接影響小車對(duì)障礙物的判斷時(shí)間,嚴(yán)重時(shí),小車將會(huì)無法躲開障礙物。</p><p> 調(diào)制激光信號(hào)產(chǎn)生后,下面就是由接收管來接收我們的特定光信號(hào),然后判斷前方、左前方或者右前方是否有障礙物,也就是起到了眼睛
35、的作用。 </p><p> 當(dāng)然,這其中曾走過很多的彎路,比如說激光頭焊接時(shí),因?yàn)楹附蛹夹g(shù)不達(dá)標(biāo),造成激光頭燒壞,理論上焊接時(shí)電烙鐵與激光引腳的解除時(shí)間應(yīng)不多于10s.</p><p> 為了增強(qiáng)對(duì)障礙物的敏感度,也就是增加對(duì)反射光線的吸收率,我在原來的接收管上增加了一個(gè)透鏡,這樣做有兩個(gè)目的:</p><p> 增強(qiáng)對(duì)反射光線的吸收;</p>
36、<p> 利用透鏡只能接收前方光線、阻隔側(cè)面光線的功能,減小外接漫反射光線對(duì)接收管的影響。</p><p> 如圖2-9,是我采用的透鏡:</p><p> 固定時(shí),透鏡的焦點(diǎn)與激光發(fā)射然后反射回來的光線不在同一直線上,造成透鏡不但沒有發(fā)揮出聚光的作用,卻將室內(nèi)外的干擾光線連同激光信號(hào)一起屏蔽了,但是在這過程中,我卻學(xué)習(xí)到很多課本上無法獲得也無從想象的東西。</p&
37、gt;<p> 在進(jìn)行激光發(fā)射與接收的時(shí)候,曾如右圖外接LED指示燈,用于測(cè)試小車激光發(fā)射與接收是否故障,這讓故障的檢測(cè)更加直觀。</p><p> 2.3智能車核心處理器</p><p> 在所有的前期準(zhǔn)備結(jié)束后,我已經(jīng)獲得了小車前方是否有障礙物的信號(hào),下面就是要對(duì)這個(gè)信號(hào)進(jìn)行判斷、處理,我采用的是飛思卡爾半導(dǎo)體公司的MC9S12XS128單片機(jī),是一個(gè)16位處理器,
38、總體上分為三個(gè)模塊:IO模塊(帶有中斷)、脈沖寬度調(diào)制模塊(主要針對(duì)舵機(jī))和定時(shí)器模塊。</p><p> 其中,大部分I/O引腳可由相應(yīng)的寄存器位來配置選擇數(shù)據(jù)方向、驅(qū)動(dòng)能力,使能上拉或下拉式裝置。當(dāng)用作通用IO口時(shí),所有的端口都有數(shù)據(jù)寄存器和數(shù)據(jù)方向寄存器。由于小車最大的難點(diǎn)在于轉(zhuǎn)向的控制,所以下面主要介紹所用到的最多的模塊。</p><p> XS128具有XS128具有8位8通
39、道的PWM,相鄰的兩個(gè)通道可以級(jí)聯(lián)組成16位的通道。XS128具有8位8通道的PWM,相鄰的兩個(gè)通道可以級(jí)聯(lián)組成16位的通道。下面是脈沖調(diào)制模塊的幾種功能:</p><p> PWME:PWM通道使能寄存器。PWMEx=1將立即使能該通道PWM波形輸出。若兩個(gè)通道級(jí)聯(lián)組成一個(gè)16位通道,則低位通道(通道數(shù)大的)的使能寄存器成為該級(jí)聯(lián)通道的使能寄存器,高位通道(通道數(shù)小的)的使能寄存器和高位的波形輸出是無效的。&
40、lt;/p><p> PWMPOL:PWM極性寄存器。PPOLx=1,則該通道的周期初始輸出為高電平,達(dá)到占空比后變?yōu)榈碗娖剑幌喾?,若PPOLx=0,則初始輸出為低電平,達(dá)到占空比后變?yōu)楦唠娖健?lt;/p><p> PWMCLK:PWM時(shí)鐘源選擇寄存器。0、1、4、5通道,PCLKx=0使用Clock A,PCLKx=1使用Clock SA;2、3、6、7通道,PCLKx=0使用Clock
41、B,PCLKx=1使用Clock SB。</p><p> PWMPRCLK:PWM預(yù)分頻時(shí)鐘源選擇寄存器。</p><p> PWMPERx:PWM通道周期寄存器,每個(gè)通道都有一個(gè)獨(dú)立的8位周期寄存器,它的值將間接決定該通道的PWM波形周期。該寄存器采用雙緩沖器設(shè)計(jì),即寫入的新值不立即生效,直到本次有效周期結(jié)束或者計(jì)數(shù)器寄存器清零或者該通道被禁止。讀該寄存器將返回最近一次寫入的值(不
42、一定是當(dāng)前生效的值)。復(fù)位將重置值為0xFF。</p><p> 下面是如何由周期寄存器的值計(jì)算最終PWM輸出波形的周期與頻率方法:</p><p> 左對(duì)齊輸出:(CAEx = 0)</p><p> PWMx Period = Clock (A, B, SA, or SB) * PWMPERx</p><p> PWMx Freq
43、uency = Clock (A, B, SA, or SB) / PWMPERx</p><p> 中心對(duì)齊輸出:(CAEx=1)</p><p> PWMx Period = Clock (A, B, SA, or SB) * (2 * PWMPERx)</p><p> PWMx Frequency = Clock (A, B, SA, or SB) /
44、 (2 * PWMPERx)</p><p> Clock A、Clock B由下面的PWMPRCLK設(shè)置:</p><p> PWMDTYx:PWM占空寄存器。每個(gè)通道都有一個(gè)獨(dú)立的8位占空寄存器,它的值將間接決定該通道的PWM波形占空比。該寄存器采用雙緩沖器設(shè)計(jì),即寫入的新值不立即生效,直到本次有效周期結(jié)束或者計(jì)數(shù)器寄存器清零或者該通道被禁止。讀該寄存器將返回最近一次寫入的值(不一
45、定是當(dāng)前生效的值)。復(fù)位將重置值為0xFF。</p><p> 下面是如何由占空寄存器的值計(jì)算最終PWM輸出波形的占空比的方法:</p><p> Polarity = 0 (PPOLx = 0)</p><p> Duty Cycle = [(PWMPERx - PWMDTYx) / PWMPERx] * 100%</p><p>
46、 Polarity = 1 (PPOLx = 1)</p><p> Duty Cycle = [PWMDTYx / PWMPERx] * 100%</p><p> 定時(shí)器模塊由1個(gè)增強(qiáng)的可編程預(yù)分頻器驅(qū)動(dòng)的可編程計(jì)數(shù)器、8個(gè)輸入捕捉/輸出比較通道和1個(gè)脈沖累加器組成。定時(shí)器模塊一共有8個(gè)引腳,其中脈沖累加器與第7號(hào)通道的引腳是共用的。其中:</p><p>
47、 TCNT:定時(shí)器計(jì)數(shù)寄存器。</p><p> TSCR1:定時(shí)器系統(tǒng)控制寄存器1。</p><p> TTOV:定時(shí)器溢出時(shí)觸發(fā)寄存器。</p><p> TCTL1/TCTL2:定時(shí)器控制寄存器1/2。</p><p> PR2、PR1、PR0三位決定了定時(shí)器預(yù)分頻比。</p><p> PTPSR:
48、精確定時(shí)器預(yù)分頻器選擇寄存器。</p><p> 若TSCR1中的PRNT=1,PTPSR的值將決定主定時(shí)器預(yù)分頻比。</p><p><b> 表:2-4</b></p><p> 圖2-11為處理器電路板:</p><p> 2.4智能車動(dòng)力部分——馬達(dá)</p><p> 驅(qū)動(dòng)電機(jī)采
49、用直流伺服電機(jī),在此我選用的是RS-380SH型號(hào)的伺服電機(jī),這是因?yàn)橹绷魉欧姍C(jī)具有優(yōu)良的速度控制性能,它輸出較大的轉(zhuǎn)矩,直接拖動(dòng)負(fù)載運(yùn)行,同時(shí)它又受控制信號(hào)的直接控制進(jìn)行轉(zhuǎn)速調(diào)節(jié)。在很多方面有優(yōu)越性,具體來說,它具有以下優(yōu)點(diǎn):</p><p> (1)具有較大的轉(zhuǎn)矩,以克服傳動(dòng)裝置的摩擦轉(zhuǎn)矩和負(fù)載轉(zhuǎn)矩。</p><p> (2)調(diào)速范圍寬,高精度,機(jī)械特性及調(diào)節(jié)特性線性好,且運(yùn)行速
50、度平穩(wěn)。</p><p> (3)具有快速響應(yīng)能力,可以適應(yīng)復(fù)雜的速度變化。</p><p> (4)電機(jī)的負(fù)載特性硬,有較大的過載能力,確保運(yùn)行速度不受負(fù)載沖擊的影響。</p><p> (5)可以長(zhǎng)時(shí)間地處于停轉(zhuǎn)狀態(tài)而不會(huì)燒毀電機(jī),一般電機(jī)不能長(zhǎng)時(shí)間運(yùn)行于停轉(zhuǎn)狀態(tài),電機(jī)長(zhǎng)時(shí)間停轉(zhuǎn)時(shí),穩(wěn)定溫升不超過允許值時(shí)輸出的最大堵轉(zhuǎn)轉(zhuǎn)矩稱為連續(xù)堵轉(zhuǎn)轉(zhuǎn)矩,相應(yīng)的電樞電流為
51、連續(xù)堵轉(zhuǎn)電流。</p><p> 下圖為該伺服電機(jī)的結(jié)構(gòu)圖。</p><p> 圖2-14是此伺服電機(jī)的性能曲線。</p><p> 由于小車的馬達(dá)全速轉(zhuǎn)動(dòng)時(shí),速度過快,激光收發(fā)的距離又過短,所以,如果小車滿功率運(yùn)行,勢(shì)必難以躲開障礙物,因此,必須給小車限速,這就用到了剛才介紹的PWM模塊,讓處理器給予馬達(dá)一占空比較低的信號(hào),這個(gè)過程可以理解為小車的功率受占空
52、比所限制,因此達(dá)不到滿功率,所以只能以與占空比相對(duì)應(yīng)的速度行進(jìn)。</p><p> 表2-5 RS380-ST/3545技術(shù)指標(biāo)</p><p> 2.5轉(zhuǎn)向工具:舵機(jī)</p><p> 舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。其工作原理是:控制信號(hào)由接收機(jī)的通道進(jìn)入信號(hào)調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生
53、周期為20ms,寬度為1.5ms的基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)芯片決定電機(jī)的正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)。舵機(jī)的控制信號(hào)是PWM信號(hào),利用占空比的變化改變舵機(jī)的位置。一般舵機(jī)的控制要求如圖所示。</p><p> 舵機(jī)的接線方法如圖2-17:</p><p>
54、 控制線輸入一個(gè)周期性的正向脈沖信號(hào),這個(gè)周期性脈沖信號(hào)的高電平時(shí)間通常在1ms-2ms之間。而低電平時(shí)間應(yīng)在5ms到20ms間,并不很嚴(yán)格。下表3.3表示出一個(gè)典型的20ms周期性脈沖的正脈沖寬度與微型伺服馬達(dá)的輸出臂的位置的關(guān)系:</p><p> 由于我采用的是比賽中剩下的車模,在零件和機(jī)械結(jié)構(gòu)上均作了變更,具體的參數(shù)都是后期實(shí)驗(yàn)調(diào)出來的,關(guān)于舵機(jī)的具體參數(shù),將在軟件部分具體介紹。在允許電壓范圍內(nèi),電壓越
55、大,舵機(jī)響應(yīng)速度越快,因此采用6V電壓給舵機(jī)供電,模塊在電源部分有介紹的。</p><p><b> 2.6調(diào)試工具</b></p><p> BDM下載器,將程序下載到核心板中,我采用的是8位16位通用型BDM下載器,在程序拷貝過程中,會(huì)有紅燈閃爍,若出現(xiàn)解除不良,等等其他原因,燈就不會(huì)出現(xiàn)閃爍現(xiàn)象。圖示為下載器外觀和內(nèi)部結(jié)構(gòu)電路板。</p>&l
56、t;p> 第三章 機(jī)械結(jié)構(gòu)設(shè)計(jì)</p><p> 本設(shè)計(jì)采用前輪驅(qū)動(dòng),前輪轉(zhuǎn)向。使用激光收發(fā)模塊判斷有誤障礙,主要電路板安裝在車身后側(cè),舵機(jī)和馬達(dá)位于小車腹部,整體重心偏后,有較好的穩(wěn)定性,經(jīng)過改裝后的車模參數(shù)如下表:</p><p><b> 表 3-1</b></p><p> 3.1激光頭的安裝方案設(shè)計(jì)</p>
57、<p> 車身前端寬度比較大,舵機(jī)控制轉(zhuǎn)向又只有±45°,這時(shí)候前輪導(dǎo)向距離如果過短,將會(huì)導(dǎo)致車身無法繞開障礙物。基于此問題,我們將兩組激光收發(fā)模塊的間距盡量緊湊,然后以相對(duì)的角度來增加前瞻的寬度,再采用兩根鋼絲,固定住我們的激光收發(fā)模塊,然后以固定膠將其按照事先調(diào)好的角度固定在車身上,這樣,就解決了由于車身龐大無法繞開的問題,同時(shí)又變相增加了小車對(duì)障礙物的反應(yīng)靈敏度。</p><
58、p> 在保證了探測(cè)障礙物和及時(shí)躲避的問題的同時(shí),這種設(shè)計(jì)方案還讓小車的重心前移了一定距離,由于重心基本都在后輪上,小車又是前輪導(dǎo)向,所以難免會(huì)有一點(diǎn)吃力,因此這樣做也可以增加小車前輪的受力,讓導(dǎo)向更加靈活有力。</p><p> 3.2舵機(jī)位置的選擇</p><p> 如下圖所示,舵機(jī)的位置選擇在了車身的右側(cè),這樣做有兩個(gè)原因,一個(gè)就是車模原來的結(jié)構(gòu)設(shè)計(jì)中,馬達(dá)安裝在稱身左側(cè),
59、通過傳輸軸給予前后輪驅(qū)動(dòng)力,左側(cè)已經(jīng)沒有足夠的空間安裝這個(gè)舵機(jī)了;另一個(gè)重要原因是,如果舵機(jī)安排在輪子正上方,理論上可以給予小車最大的力矩,但是這樣做的話,需要多安裝2-4個(gè)轉(zhuǎn)軸和傳輸軸,加之轉(zhuǎn)軸之間相互傳輸力的損耗,基本可以與現(xiàn)在的力矩相差無幾;機(jī)械上的難點(diǎn)還有,較大的力矩需要更有力的固定點(diǎn),車身前端為彈簧減震器,沒有多余的地方安裝多個(gè)轉(zhuǎn)軸,可以說,舵機(jī)的位置選擇如何,直接影響到舵機(jī)的效率。</p><p>
60、 當(dāng)然,在進(jìn)行軟件調(diào)試的時(shí)候,本來應(yīng)該先調(diào)好角度,然后再固定車模,但是</p><p> 我的選擇讓我只能先固定舵機(jī)和前輪的連接,因?yàn)槎鏅C(jī)的安裝方向不是與車身平行,而是成一個(gè)30左右的角度,這就導(dǎo)致輪子在左右轉(zhuǎn)開相同角度的時(shí)候,舵機(jī)向兩個(gè)極端轉(zhuǎn)過的角度也是不同的,為了盡量配合集合角度,舵機(jī)曾安裝過多次,終于找到舵機(jī)的左極端、中點(diǎn)、右極端。具體位置如下圖:</p><p><b>
61、; 3.3核心板的設(shè)計(jì)</b></p><p> 為了便于各部分電路在出現(xiàn)故障的情況下,能夠及時(shí)統(tǒng)一的斷電,盡早保護(hù)元器件不受損害,在小車的尾部,固定了一個(gè)電源開關(guān),負(fù)責(zé)整個(gè)小車所有電路的供電;同時(shí)為了保護(hù)核心板在調(diào)試時(shí),遇到無法繞開障礙物的情況下,避免撞到障礙物,將核心板盡量安排在小車后面,將驅(qū)動(dòng)電路安裝在核心板的一側(cè),并外接了一個(gè)電腦散熱板的散熱扇,幫助小車在轉(zhuǎn)向時(shí)由于馬達(dá)降低轉(zhuǎn)速而帶來的負(fù)擔(dān)
62、,電池盡量緊貼小車底部,讓小車在行進(jìn)過程中的轉(zhuǎn)向更加穩(wěn)定。</p><p> 為了便于調(diào)試,小車的前端傳感器與核心板的連接均不用焊錫焊接,采用杜邦線,這樣可以隨時(shí)調(diào)試,查找問題,及時(shí)修改。</p><p> 3.4激光管結(jié)構(gòu)設(shè)計(jì)</p><p> 激光頭發(fā)射路徑的設(shè)計(jì),與小車自身的大小相關(guān),就是在接收管所能感應(yīng)到的最遠(yuǎn)距離處的兩束激光的寬度與車身大小相同或者大
63、于小車的寬度,這樣更加有利于小車對(duì)障礙物的躲閃。</p><p> 根據(jù)小車轉(zhuǎn)向的多次測(cè)量,估算小車的轉(zhuǎn)向半徑,就是圖中的R大于0.5m,這與不同路面的摩擦系數(shù)相關(guān)。簡(jiǎn)單示意圖:</p><p> 第四章 軟件開發(fā)及調(diào)試</p><p> 由于智能車的控制核心為Freescale 16位單片機(jī),故用由飛思卡爾公司提供的軟件CodeWarrior進(jìn)行編譯開發(fā)。
64、程序的下載采用CodeWarrior軟件包自帶的下載工具h(yuǎn)iwave.exe,智能車與PC采用BDM下載器進(jìn)行通信,方便了車模參數(shù)調(diào)試。</p><p> 4.1單片機(jī)程序設(shè)計(jì)</p><p> 單片機(jī)的行為是受程序控制的,因此開發(fā)與使用單片機(jī)必然會(huì)遇到程序設(shè)計(jì)的問題,單片機(jī)設(shè)計(jì)是一個(gè)硬件與軟件結(jié)合的問題,而其軟件設(shè)計(jì)的工作往往占有更多的成分。一個(gè)完整的嵌入式系統(tǒng)開發(fā)過程,除了硬件電路
65、的設(shè)計(jì)外,軟件工作包括程序編輯、匯編或編譯、程序下載、程序調(diào)試、脫機(jī)驗(yàn)證等過程。</p><p> 程序的編輯就是按照一定的格式,采用匯編或者C等高級(jí)語言進(jìn)行編寫,在這里,我采用的是C語言。早期的單片機(jī)程序設(shè)計(jì)在DOS環(huán)境下符合一定的格式編輯,然后采用一個(gè)合適的軟件匯編,生成二進(jìn)制等CPU能識(shí)別的目標(biāo)代碼,將單片機(jī)(內(nèi)帶程序存儲(chǔ)器的情形)或程序存儲(chǔ)器放入編程器,編程器通過串口或USB等接口與PC機(jī)相連,將PC機(jī)
66、存放的CPU能識(shí)別的代碼下載到單片機(jī)或程序存儲(chǔ)器中。下圖是一個(gè)簡(jiǎn)單的說明。</p><p> 程序設(shè)計(jì)過程采用以上方式進(jìn)行開發(fā)的情形下,單片機(jī)必須是能從電路板上取下來,這對(duì)貼片封裝的單片機(jī)就無能為力了。此時(shí)為了能在線仿真調(diào)試,需要昂貴的仿真頭和仿真電纜與軟件,而且?guī)缀鯖]有仿真器能做到100%的功能仿真,甚至有的問題正是來自于仿真器。隨著技術(shù)的發(fā)展,采用ISP技術(shù),只要在目標(biāo)電路板上預(yù)留一個(gè)接口,通過一個(gè)很小的下
67、載器,與PC機(jī)串、并口或USB口相連,就可以進(jìn)行程序的調(diào)試與下載,尤其是有的單片機(jī)具有JTAG接口,下載調(diào)試更加方便,調(diào)試盡可能少占用單片機(jī)資源。</p><p> 單片機(jī)系統(tǒng)的開發(fā)離不開相應(yīng)的開發(fā)工具,包括編程器、實(shí)時(shí)仿真器、虛擬仿真軟件、編譯軟件等。開發(fā)工具的主要作用包括系統(tǒng)硬件電路的診斷與檢查、程序的輸入與修改、程序的調(diào)試、程序的固化等。</p><p> 編程器的作用就是將單片
68、機(jī)程序的機(jī)器碼燒寫到單片機(jī)的存儲(chǔ)器中,也稱為程序的下載、燒寫或固化。對(duì)于支持ISP功能的單片機(jī),只需要下載電纜(或下載器)就可以完成。</p><p> 實(shí)時(shí)仿真器包括相應(yīng)的軟件和硬件,一般是通過PC機(jī),用軟件監(jiān)視程序在單片機(jī)中的實(shí)際情況。有的時(shí)候,程序?qū)嶋H是在PC機(jī)上運(yùn)行,當(dāng)需要與硬件交換信息的時(shí)候,才通過適當(dāng)?shù)慕涌趯?shí)現(xiàn)PC機(jī)與目標(biāo)板的信息交換。仿真器的主要功能是實(shí)時(shí)運(yùn)行程序,在程序中設(shè)置斷點(diǎn),通過仿真接口,
69、監(jiān)視和控制程序的運(yùn)行,查看和修改內(nèi)部寄存器和數(shù)據(jù)存儲(chǔ)器等。除了硬件實(shí)時(shí)仿真器,另一種做法就是軟件監(jiān)控程序的方法,在單片機(jī)的程序存儲(chǔ)器中開辟一塊地方,預(yù)先下載一段代碼,該代碼與PC機(jī)通訊,接受PC機(jī)的命令,同時(shí)接管單片機(jī)正常的中斷,讀取單片機(jī)內(nèi)部寄存器與存儲(chǔ)器信息,并發(fā)送到PC機(jī),以達(dá)到程序監(jiān)控的目的。針對(duì)支持ISP功能的單片機(jī),可以通過實(shí)時(shí)仿真器或監(jiān)控軟件完成程序的下載工作。</p><p> 在制作過程中,運(yùn)
70、行的編譯環(huán)境為 CodeWarrior 5.0,CodeWarrior5.0是Metrowerks公司一套比較著名的集成開發(fā)環(huán)境,具有直觀,易用的優(yōu)點(diǎn)。CodeWarrior5.0包括項(xiàng)目管理,代碼生成,語法敏感編輯器等,具有快速下載,單步調(diào)控的特點(diǎn),同時(shí)可以融合C語言和匯編語言的混合編程。CodeWarrior5.0具有在線調(diào)試,單步運(yùn)行程序的功能,同時(shí)能夠觀察到主程序中定義的所有的變量的值。這一功能在進(jìn)行程序錯(cuò)誤檢查和改正時(shí)起到了至
71、關(guān)重要的作用。</p><p> 圖4.1即為CodeWarrior5.0的編程界面:</p><p> 4.2應(yīng)用系統(tǒng)開發(fā)過程</p><p> ?。?)軟件結(jié)構(gòu)設(shè)計(jì)。當(dāng)硬件設(shè)計(jì)完成后,就能夠具體明確軟件的設(shè)計(jì)要求了。軟件結(jié)構(gòu)設(shè)計(jì)的任務(wù)就是劃分程序功能模塊,把功能相對(duì)獨(dú)立的程序劃分成一個(gè)功能模塊是一種常用的方法,如數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)輸出、程序循環(huán)等模塊。
72、模塊劃分后,進(jìn)一步明確各模塊之間的關(guān)系,各模塊之間的接口??紤]一個(gè)系統(tǒng)的最后歸檔也需要詳細(xì)的流程圖,所以無論模塊簡(jiǎn)單還是復(fù)雜,都有必要畫出各模塊的流程圖。在這一階段,應(yīng)盡量將和硬件有關(guān)的底層程序封裝起來,以便底層硬件測(cè)試和驅(qū)動(dòng)程序與高層程序可以同時(shí)研發(fā),并保證程序的調(diào)試效率和可移植性。</p><p> ?。?)選擇開發(fā)平臺(tái)(語言)。程序設(shè)計(jì)語言對(duì)程序設(shè)計(jì)效率有重大影響。匯編語言是最為常用的一種程序設(shè)計(jì)語言,用它
73、編寫的程序代碼精簡(jiǎn)、直接面向硬件。但匯編語言的編程效率低下,不易縮短產(chǎn)品或系統(tǒng)的開發(fā)周期。現(xiàn)在普遍采用的單片機(jī)系統(tǒng)高級(jí)開發(fā)語言是C語言。</p><p> (3)具體程序的編寫。在程序編寫時(shí)應(yīng)注意程序模塊的可測(cè)性,有些重要的模塊可能還要規(guī)劃出測(cè)試數(shù)據(jù)接口,便于使用軟件仿真進(jìn)行測(cè)試。</p><p> ?。?)軟件編譯和仿真調(diào)試。采用各種顯示手段,盡量對(duì)程序進(jìn)行比較完整的測(cè)試,不把問題遺留
74、到硬件仿真和脫機(jī)驗(yàn)證階段階段。</p><p><b> 4.3工程創(chuàng)建</b></p><p> 如需添加已經(jīng)創(chuàng)建過的項(xiàng)目,則需在上圖中選擇下一步,則會(huì)進(jìn)入到下個(gè)界面:</p><p> 找到項(xiàng)目,添加即可。</p><p><b> 4.4程序編譯 </b></p><
75、;p> 圖4-6 程序界面一</p><p> 圖4-7 程序界面一</p><p> 主程序框架,顯示程序地址和循環(huán)等部分。</p><p> 主程序要實(shí)現(xiàn)的具體功能見下表:</p><p><b> 表4-1</b></p><p><b> 4.1下載調(diào)試<
76、/b></p><p> 調(diào)試軟件為Codewarrior4.5,調(diào)試器為清華大學(xué)工程物理系開發(fā)的 BDM。軟件編寫初期進(jìn)行調(diào)試,只要讓車在靜態(tài)狀態(tài)下,邊采集傳感器信息,邊通過hiwave.exe程序的窗口中讀取通過軟件處理的數(shù)據(jù),通過與理論值進(jìn)行對(duì)比來判斷程序的正誤。利用 BDM 可以即時(shí)的對(duì)軟件和硬件進(jìn)行監(jiān)控,在調(diào)試過程中可以方便的設(shè)置斷點(diǎn)、選用單步運(yùn)行的方式,同時(shí)查看各個(gè)寄存器的值,EEPROM中的
77、數(shù)據(jù)掉電之后不會(huì)丟失,可以用來記錄數(shù)據(jù)再進(jìn)行后處理。這些強(qiáng)大的功能,都為我們的軟件調(diào)試提供了極大的便利。</p><p> 我所采用的方法為在線調(diào)試,如上面介紹的開發(fā)工具,使車處于靜止?fàn)顟B(tài),利用 BDM 將數(shù)據(jù)從單片機(jī)傳入電腦,可以直接在線分析數(shù)據(jù),對(duì)錯(cuò)誤和故障進(jìn)行診斷。這個(gè)調(diào)試方法適用于整個(gè)智能車的制作和調(diào)試過程。</p><p> 根據(jù)實(shí)際情況與理想數(shù)值的偏差,不斷修改數(shù)據(jù),漸近于
78、理想狀態(tài)。</p><p> 總體上,可以充分利用了現(xiàn)有的調(diào)試工具和通信設(shè)備,得到了我所需要的數(shù)據(jù)和結(jié)果,以便更好的為我的決策進(jìn)行優(yōu)化。</p><p> 4.2單片機(jī)的資源分配</p><p> 根據(jù)本次設(shè)計(jì)的特點(diǎn),智能車的控制系統(tǒng)主要有道路信息采集模塊,電機(jī)驅(qū)動(dòng)模塊,舵機(jī)驅(qū)動(dòng)模塊及串口模塊等。為了讓這些模塊能正常工作就要對(duì)單片機(jī)的引腳進(jìn)行合理分配。對(duì)于XS
79、128引腳資源豐富,它有兩種封裝80PIN和112PIN,由于設(shè)計(jì)時(shí)采用的是112PIN封裝形式,故不用擔(dān)心引腳不夠使用的問題。但是,DG128的112PIN封裝引腳比較亂,同一功能的引腳有可能在不同的側(cè)面,故在進(jìn)行最小系統(tǒng)板的設(shè)計(jì)時(shí),花了很長(zhǎng)時(shí)間去調(diào)整單片機(jī)引腳的引出方法。最終,根據(jù)這些模塊的功能和特點(diǎn),現(xiàn)將所需要的資源總結(jié)如表4.1所示。</p><p> 表4.2系統(tǒng)資源分配表</p>&l
80、t;p><b> 第五章 程序分析</b></p><p> #include<hidef.h></p><p> #include"derivative.h"</p><p> #include<MC9S12XS128.H></p><p> #includ
81、e <stdio.h></p><p><b> int i;</b></p><p><b> int j;</b></p><p><b> int k;</b></p><p> word *AD_wValue;</p><p>
82、;<b> int m;</b></p><p> word sensortemp=0x0000;</p><p> void Initial_PLL(void);</p><p> void PORT_Init(void);</p><p> void AD_Init(void);</p>&l
83、t;p> void sensor_judge(void); </p><p> void AD_GetValue(void);</p><p> void PWMInit(void);</p><p> void PWM_01(void);</p><p> void PWM_02(void);</p><
84、p> #pragma CODE_SEG DEFAULT</p><p> void Initial_PLL(void) /*鎖相環(huán)初始化設(shè)定鎖相環(huán)周期和總線周期 總線16M*/</p><p> {CLKSEL=0X00; </p><p> PLLCTL_PLLON=1; </p><p> SYNR
85、=0x00 | 0x01; </p><p> REFDV=0x80 | 0x01; </p><p> POSTDIV=0x00; </p><p> _asm(nop); </p><p> _asm(nop);</p><p> while(!(CRGFLG_LOCK==
86、1)); </p><p> CLKSEL_PLLSEL =1; </p><p><b> }</b></p><p> void PWMInit(void)</p><p> {PWMPOL=0X10; /*設(shè)置先輸出高電平</p><p>
87、 PWMCLK=0X10; /*選擇時(shí)鐘源為Clock SA</p><p> PWMPRCLK=0X07; /*始終分頻寄存器,選擇128分頻</p><p> PWMCAE=0X00; /*所有通道對(duì)齊方式選擇左對(duì)齊</p><p> PWMCTL=0X00; /*設(shè)置PWM通道
88、不級(jí)聯(lián)</p><p> PWMSCLA=0X05; /*0 和 2通道設(shè)置預(yù)分頻 </p><p> PWMPER4=0X64;/*對(duì)4腳周期寄存器設(shè)置 16M/(128*2*64)=1k</p><p> PWMDTY4=100; /*通道占空比設(shè)置</p>&l
89、t;p> PWME=0x10; /*4通道使能</p><p><b> }</b></p><p> void PWM_01(void) /*PWM1通道設(shè)置</p><p> {PWMCTL_CON01=1; </p>&l
90、t;p> PWMCAE_CAE1=0; </p><p> PWMCNT01 = 0; </p><p> PWMPOL_PPOL1=1; </p><p> PWMPRCLK = 0X04; </p><p> PWMSCLA = 0x08; </p><p> PWM
91、CLK_PCLK1 = 1; </p><p> PWMPER01 = 20000; </p><p> PWMDTY01 = 2010; </p><p> PWME_PWME1 = 1; </p><p><b> }</b></p><p> void PWM_02(
92、void) /*PWM2通道設(shè)置</p><p> {PWMPRCLK=0X60;</p><p> PWMCLK_PCLK2=1;</p><p> PWMSCLB=0X7D;</p><p> PWMPOL_PPOL2=0XFF;</p><p> PWMCA
93、E_CAE2=0X00;</p><p> PWMPER2=0X13;</p><p> PWMDTY2=0X13;</p><p> PWME_PWME2=1;</p><p><b> }</b></p><p> void PORT_Init(void) /*磀端口
94、初始化*/</p><p> {DDRA=0x00; /*端口A方向輸入*/</p><p> PUCR_PUPAE=1; /*端口A信號(hào)上拉*/</p><p> PORTA=0x00; /*端口A初值為0*/</p><p> DDRP=0XFF;
95、 /*PWM口輸出*/</p><p> PTP_PTP2=0X00; /*PWM2口為低電平*/</p><p><b> } </b></p><p> void AD_Init(void) /*AD初始化*/</p><p> {ATD0CTL1=0X
96、00; /*外部觸發(fā),8位精度,采樣前不放電*/</p><p> ATD0CTL2=0X40; /*標(biāo)志位自動(dòng)清零,禁止外部觸發(fā),關(guān)中斷,低電平有效*/</p><p> ATD0CTL3=0X90; /*右對(duì)齊,每次2個(gè)序列,非先進(jìn)先出,遇到斷點(diǎn)繼續(xù)*/</p><p> ATD0CTL4=0X01; /*采樣時(shí)間為4
97、個(gè)AD時(shí)鐘周期,PRS為預(yù)分頻器f=f(BUS)/[2*(PRS+1)]=6MHZ,即時(shí)鐘分頻為6MHZ*/</p><p> ATD0CTL5=0X30; /*特殊通道禁止,連續(xù)轉(zhuǎn)換,多通道,其實(shí)通道0*/</p><p> ATD0DIEN=0X00; /*禁止數(shù)字輸入*/</p><p><b> }</b>&
98、lt;/p><p> void AD_GetValue(void) /*讀AD轉(zhuǎn)換結(jié)果*/</p><p> {*AD_wValue=ATD0DR0; /*讀取結(jié)果寄存器的值*/</p><p> if(*AD_wValue>=128)</p><p><b> m=1;</b></p>
99、<p><b> else</b></p><p><b> m=0;</b></p><p> sensortemp=m;</p><p> *AD_wValue=ATD0DR1; /*讀取結(jié)果寄存器的值*/</p><p> if(*AD_wValue>=128)
100、</p><p><b> m=1;</b></p><p><b> else</b></p><p><b> m=0;</b></p><p> sensortemp=(sensortemp<<1)|m;</p><p> A
101、TD0STAT0_SCF=1; /*清除隊(duì)列完成標(biāo)志*/</p><p><b> }</b></p><p> void sensor_judge(void) /*傳感器狀態(tài)采集*/</p><p><b> {</b></p><p> switch(sensortemp)
102、</p><p><b> {</b></p><p> case 0x0001 :PWMDTY01=1950; /*1通道輸出舵機(jī)控制信號(hào)-----右轉(zhuǎn)*/ </p><p><b> break;</b></p><p> case 0x0002 :PWMDTY01=850; /*左轉(zhuǎn)*
103、/</p><p><b> break;</b></p><p> case 0x0003 :PWMDTY01=1350; /*前進(jìn)*/</p><p><b> break;</b></p><p> default:break;</p><p><b>
104、; }</b></p><p> if(sensortemp==0x0000) /*都有障礙物時(shí)*/</p><p> if(PWMDTY01==1950)</p><p> PWMDTY01=1950;</p><p> else if(PWMDTY01==850)</p><p>
105、 PWMDTY01=850; </p><p><b> else</b></p><p> PWMDTY01=1950;</p><p> sensortemp=0;</p><p><b> }</b></p>
106、<p> void main(void) /*主函數(shù)*/</p><p> {Initial_PLL();</p><p> PWMInit();</p><p> PWM_01(); </p><p><b> PWM_02();</b></p><p> PO
107、RT_Init(); /*端口初始化*/</p><p> AD_Init();</p><p> PWMDTY01=835; /*左轉(zhuǎn)*/</p><p> for(i=0;i<=200;i++) </p><p><b> {</b></p>
108、<p> for(j=0;j<=200;j++) </p><p><b> {</b></p><p> for(k=0;k<=100;k++);</p><p><b> } </b></p><p><b> }</b></p>
109、;<p> PWMDTY01=1450; /*回中*/</p><p> for(i=0;i<=200;i++) </p><p><b> {</b></p><p> for(j=0;j<=200;j++) </p><p><b>
110、 {</b></p><p> for(k=0;k<=100;k++);</p><p><b> } </b></p><p><b> }</b></p><p> PWMDTY01=1950; /*右轉(zhuǎn)*/</p>
111、<p> for(i=0;i<=200;i++) </p><p><b> {</b></p><p> for(j=0;j<=200;j++) </p><p><b> {</b></p><p> for(k=0;k<=100;k++);</p&
112、gt;<p><b> } </b></p><p><b> }</b></p><p> PWMDTY01=1350; /*回中*/</p><p> for(i=0;i<=100;i++) </p><p><b>
113、 {</b></p><p> for(j=0;j<=100;j++) </p><p><b> {</b></p><p> for(k=0;k<=100;k++);</p><p><b> } </b></p><p><b>
114、; }</b></p><p> PWMDTY4=30; /*PWM4通道占空比40%</p><p> EnableInterrupts; /*開啟中斷</p><p><b> for(;;)</b></p><p>
115、; {_DISABLE_COP();</p><p> AD_GetValue();</p><p> sensor_judge();</p><p><b> }</b></p><p><b> }</b></p><p><b> 參考文獻(xiàn)<
116、/b></p><p> [a] 高洪堯.江銘交.匯光幕靶精度測(cè)量原理及應(yīng)用[J].西安工業(yè)學(xué)院學(xué)報(bào),1995,15 (3) :242-245</p><p> [b] 高月華.基于紅外光電傳感器的智能車自動(dòng)尋跡系統(tǒng)設(shè)計(jì)[J].半導(dǎo)體光電,2009,30(1):134-137</p><p> [c] 儲(chǔ)江偉.郭克友.王榮本.自動(dòng)導(dǎo)向車導(dǎo)向技術(shù)分析與評(píng)價(jià)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能避障小車畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)+智能循跡避障小車設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---智能循跡避障聲控小車設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--智能超聲波避障小車
- 智能避障小車設(shè)計(jì)
- 智能避障小車設(shè)計(jì)
- 智能超聲波避障小車-畢業(yè)設(shè)計(jì)論文
- 智能循跡避障小車畢業(yè)論文
- 避障語音控制小車系統(tǒng)畢業(yè)設(shè)計(jì)
- 小車設(shè)計(jì)論文-智能尋光避障小車
- 畢業(yè)論文---智能循跡避障小車
- 基于pic單片機(jī)智能遙控避障安全小車報(bào)告
- 智能尋光避障小車設(shè)計(jì)論文
- 畢業(yè)論文——智能循線避障小車設(shè)計(jì)與制作
- 智能尋跡避障小車系統(tǒng)硬件設(shè)計(jì)
- 智能自動(dòng)避障小車開題報(bào)告
- 智能循跡避障小車控制系統(tǒng)設(shè)計(jì)
- 藍(lán)牙智能遙控小車畢業(yè)設(shè)計(jì)論文
- 小車避障系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 智能尋跡遙控避障機(jī)器人---畢業(yè)論文
評(píng)論
0/150
提交評(píng)論