版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計說明書</b></p><p> 設(shè)計題目: 教育機(jī)器人避障 </p><p> 院 系: 自動化測試與控制系 </p><p> 班 級: </p><p> 設(shè) 計 者: &l
2、t;/p><p> 學(xué) 號: </p><p> 指導(dǎo)教師: </p><p> 設(shè)計時間: 2012.09 </p><p><b> 課程設(shè)計任務(wù)書</b></p><p> *注:此任務(wù)書由課程設(shè)計指導(dǎo)教師填
3、寫</p><p><b> 課程設(shè)計開題報告</b></p><p> 題 目:教育機(jī)器人避障</p><p> 院 (系) 自動化測試與控制系 </p><p> 專 業(yè) </p><p> 學(xué) 生 </p>
4、<p> 學(xué) 號 </p><p> 班 號 </p><p> 指導(dǎo)教師 </p><p> 開題報告日期 2012.08.28 </p><p><b> 2005年9月</b></p><
5、p> 課題研究目的及意義:</p><p> 隨著近些年來智能小車的流行,很多人都通過自己動手模仿制作一款智能小車來培養(yǎng)自己對單片機(jī)研究的興趣。伴隨而來的就是帶有不同功能不同硬件組裝而成的智能小車的誕生。通過對本課題---避障小車的研究開發(fā),我們可以了解單片機(jī)開發(fā)過程,掌握單片機(jī)的各部分組成及功能。同時有利于程序編寫能力的提高。通過設(shè)計程序流程圖,建立編寫程序的基本思想。最后我們也可以提高個人遇到問題、
6、分析問題、解決問題的能力。</p><p> 本次課程設(shè)計欲在動手實踐過程中提高自己編寫程序的能力,進(jìn)一步鞏固上學(xué)期對單片機(jī)課本內(nèi)容的理論學(xué)習(xí),從課本走向日常生活。由于單片機(jī)具有顯著的優(yōu)點,它已成為科技領(lǐng)域的有力工具,人類生活的得力助手。它的應(yīng)用遍及各個領(lǐng)域,主要表現(xiàn)在以下幾個方面: 單片機(jī)在智能儀表中的應(yīng)用:單片機(jī)廣泛地用于各種儀器儀表,使儀器儀表智能化。單片機(jī)在機(jī)電一體化中的應(yīng)用:微機(jī)控制的車床、鉆床等。單
7、片機(jī)在實時控制中的應(yīng)用:在工業(yè)測控、航空航天、尖端武器、機(jī)器人等各種實時控制系統(tǒng)中,都可以用單片機(jī)作為控制器。單片機(jī)在分布式多機(jī)系統(tǒng)中的應(yīng)用:在比較復(fù)雜的系統(tǒng)中,常采用分布式多機(jī)系統(tǒng)。多機(jī)系統(tǒng)一般由若干臺功能各異的單片機(jī)組成,各自完成特定的任務(wù),它們通過串行通信相互聯(lián)系、協(xié)調(diào)工作。單片機(jī)在人類生活中的應(yīng)用:洗衣機(jī)、電冰箱、電子玩具、收錄機(jī)等家用電器。目前,單片機(jī)正朝著高性能和多品種方向發(fā)展趨勢將是進(jìn)一步向著CMOS化、低功耗、小體積、大
8、容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。</p><p> 通過本次課程設(shè)計,大家會帶著更多的熱情關(guān)注單片機(jī)產(chǎn)品的發(fā)展過程,甚至投入到產(chǎn)品的開發(fā)中來。</p><p><b> 研究內(nèi)容:</b></p><p> 功能:能夠?qū)ξ矬w運動方向受到的阻礙作出各種躲避障礙的動作。 </p><p> 超聲波
9、模塊原理:超聲模塊通過發(fā)射器向四面八方發(fā)射出去,發(fā)射出的超聲波在空氣中沿直線傳播,遇到障礙物后發(fā)生反射反應(yīng)。超聲波接收器收到被障礙物反射回的超聲波以后,經(jīng)由內(nèi)部計算得到障礙物的距離信號。 </p><p> 圖(1) 避障小車</p><p> 圖(2) 超聲波模塊</p><p> 1.教育機(jī)器人簡介:</p><p><b
10、> 教育機(jī)器人組成:</b></p><p> 機(jī)器人的核心芯片為Atmel公司生產(chǎn)的8位AT89S52單片機(jī),是一種高性能CMOS、低功耗的8位單片機(jī),片內(nèi)含8k Bytes Flash,運用ISP(in-system programmable)的可反復(fù)擦寫1000次;只讀程序存儲器器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及其引腳結(jié)構(gòu)。在實際工程應(yīng)
11、用中,功能強(qiáng)大的AT89S52已成為許多提供高性價比嵌入式控制應(yīng)用系統(tǒng)的解決方案。</p><p> 教育機(jī)器人由一塊教學(xué)底板和車體部分組成,機(jī)器人的動作由伺服電機(jī)控制。伺服電機(jī)與單片機(jī)接口的連接,通過P1_0引腳的控制輸出用來控制右的伺服電機(jī),而P1_1則用來控制左邊的伺服電機(jī)。</p><p> 如圖所示為電機(jī)連接原理圖和實際接線圖</p><p> 圖(
12、3)電機(jī)連接原理圖和實際接線圖</p><p> 機(jī)器人伺服電機(jī)控制原理 :</p><p> 控制電機(jī)運動轉(zhuǎn)速的是高電平持續(xù)的時間,當(dāng)高電平持續(xù)時間為1.3ms時,電機(jī)順時針全速旋轉(zhuǎn),當(dāng)高電平持續(xù)時間1.7ms時,電機(jī)逆時針?biāo)傩D(zhuǎn)。 </p><p> 圖(4)標(biāo)定后,電機(jī)靜止的脈沖序列</p><p> 圖(5) 電機(jī)順時針轉(zhuǎn)動的
13、脈沖序列</p><p> 圖(6)電機(jī)逆時針轉(zhuǎn)動的脈沖序列</p><p> 機(jī)器人伺服電機(jī)如何調(diào)零: </p><p> 零速度點(1.5ms脈寬序列),一個順時針最大速度點(1.7ms脈寬序列),和一個逆時針的最大速度點(1.3ms脈寬序列),其中越靠近零速度點,速度越小,遠(yuǎn)離零點越大速度越大。 </p><p> 通過發(fā)送一個
14、校準(zhǔn)信號到伺服電機(jī),連續(xù)旋轉(zhuǎn)伺服電機(jī)的零位信號為1.5ms。如果電機(jī)還沒有進(jìn)行零點標(biāo)定,如圖所示,用螺絲刀輕輕調(diào)節(jié)馬達(dá)上的電位器,直到馬達(dá)停止轉(zhuǎn)動。</p><p><b> 圖(7)調(diào)零</b></p><p> 2.程序設(shè)計流程圖:</p><p> 三.關(guān)鍵問題及解決辦法:</p><p><b>
15、 關(guān)鍵問題:</b></p><p> 1.通過單片機(jī)驅(qū)動小車前進(jìn)、后退、加速、減速、正轉(zhuǎn)、反轉(zhuǎn)等的基本程序模塊;</p><p> 2.分析怎樣控制輪子的旋轉(zhuǎn)可以實現(xiàn)基本功能;</p><p> 3.了解超聲波模塊的測距原理;</p><p> 4.編寫超聲波測距子程序;</p><p> 5
16、.調(diào)試,根據(jù)小車運行情況適當(dāng)改寫程序;</p><p><b> 解決辦法:</b></p><p> 1.仔細(xì)閱讀課程設(shè)計指導(dǎo)書,了解單片機(jī)如何控制伺服電機(jī)運轉(zhuǎn);</p><p> 2.具體分析小車模型,找到與小車運動方式相對應(yīng)的電機(jī)的旋轉(zhuǎn)方式;</p><p> 3.查找小車所用超聲波模塊型號,去網(wǎng)上搜索單片
17、機(jī)控制此超聲波的驅(qū)動程序,也可參考指導(dǎo)書相應(yīng)程序;</p><p> 4.認(rèn)真觀察小車運行狀態(tài),將錯誤的運行現(xiàn)象當(dāng)做正確的運行現(xiàn)象去分析,因為現(xiàn)象并沒有“對錯”,找到小車這樣運行的可能原因,然后修改調(diào)試。</p><p><b> 課題完成情況:</b></p><p> 經(jīng)過十天的努力,本次課程設(shè)計如期的完成了規(guī)定的任務(wù):</p&
18、gt;<p> 1)2012.8.27——2012.8.28:通過閱讀課程設(shè)計指導(dǎo)書,去網(wǎng)站查找單片機(jī)方面的資料,基本了解了小車避障的原理,本次課設(shè)采用的是超聲波模塊進(jìn)行距離測量,因為超聲波模塊可以提供無接觸的測量,從3cm到1.8m距離測量,可以用來辨別障礙物,同時可以非常容易的連接到微控制器上。通過此模塊,可以獲得在聲納范圍內(nèi)的確切的障礙物的距離,機(jī)器人就可以像蝙蝠一樣通過聲納來感知周圍的環(huán)境,同時根據(jù)障礙物的距離精
19、確地控制電機(jī)運行,從而讓機(jī)器人可以輕松地避開障礙物;</p><p> 2)2012.8.29——2012.8.30:通過前兩天對基本知識的了解,繪制程序流程圖,并編寫簡單的小車運行程序,包括小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、加速、減速的程序;</p><p> 3)2012.8.31——2012.9.3:研究算法,設(shè)計避障小車總體程序;</p><p> 4)20
20、12.9.4——2012.9.5:調(diào)試小車;</p><p> 5)2012.9.6——2012.9.7:撰寫避障小車說明書,并驗收。</p><p> 附錄:小車避障程序:</p><p> /***************************************************************</p><p>
21、; 程序名:小車避障程序</p><p> 硬件支持:AT89S52</p><p> 接口說明:P1_0控制右側(cè)伺服電機(jī),P1_1控制左側(cè)伺服電機(jī),P1_5接sin</p><p> **************************************************************/</p><p> #
22、include<reg51.h>//通用89C51頭文件</p><p> sbit sin=P1^5;</p><p> sbit p1=P1^0;</p><p> sbit p2=P1^1; //按位定義SFR中的存儲器名</p><p&g
23、t; unsigned int dis=0;</p><p> unsigned int Ltime,Htime,Time; //定義全局變量</p><p> /**************************************************************</p><p> 函數(shù)名:納秒級CP
24、U延時函數(shù)</p><p> 調(diào)用:delay(1)</p><p> 參數(shù):1~65535</p><p><b> 返回值:無</b></p><p> 結(jié)果:占用CPU方式延時與參數(shù)相等的納秒時間</p><p> *********************************
25、*****************************/</p><p> void delay(unsigned int i)</p><p><b> {</b></p><p><b> i=i/10;</b></p><p> while(--i);</p><
26、;p><b> } </b></p><p> /**************************************************************</p><p> 函數(shù)名:CPU延時函數(shù) </p><p> 調(diào)用:delay1(1)</p><p> 參數(shù):1~65535
27、</p><p><b> 返回值:無</b></p><p> 結(jié)果:占用CPU方式延時與參數(shù)相等的時間</p><p> **************************************************************/</p><p> void delay1(unsigned
28、int i)</p><p><b> {</b></p><p> while(--i);</p><p><b> }</b></p><p> /**************************************************************</p&g
29、t;<p> 函數(shù)名:超聲波測距程序</p><p> 調(diào)用:getx(1)</p><p><b> 參數(shù):1~255</b></p><p><b> 返回值:無</b></p><p> 結(jié)果:測量與障礙物之間的距離</p><p> ****
30、*********************************************************/</p><p> void getx(unsigned char a)</p><p><b> {</b></p><p><b> TH0=0;</b></p><p>&
31、lt;b> TL0=0;</b></p><p><b> if(a)</b></p><p><b> {</b></p><p><b> sin=0;</b></p><p><b> sin=1;</b></p&g
32、t;<p> delay1(1);</p><p><b> sin=0;</b></p><p><b> }</b></p><p> while(sin);</p><p> while(!sin);</p><p><b> TR0
33、=1;</b></p><p> while(sin);</p><p><b> TR0=0;</b></p><p> Ltime=TL0;</p><p> Htime=TH0;</p><p> Time=Htime*256+Ltime;</p><
34、;p> dis=Time/(2*29);</p><p><b> } </b></p><p> /**************************************************************</p><p> 函數(shù)名:小車左轉(zhuǎn)程序</p><p><b>
35、; 調(diào)用:left()</b></p><p><b> 參數(shù):無</b></p><p><b> 返回值:無</b></p><p><b> 結(jié)果:小車左轉(zhuǎn)</b></p><p> *********************************
36、*****************************/ </p><p> void left()</p><p> { unsigned char y;</p><p> for(y=0;y<18;y++)</p><p><b>
37、; {</b></p><p><b> p1 =1;</b></p><p> delay(1300);</p><p><b> p1 =0;</b></p><p> delay(20000);</p><p><b> p2 =1;&
38、lt;/b></p><p> delay(1300);</p><p><b> p2 =0;</b></p><p> delay(20000);</p><p><b> }</b></p><p><b> }</b></
39、p><p> /**************************************************************</p><p> 函數(shù)名:小車右轉(zhuǎn)程序</p><p> 調(diào)用:right()</p><p><b> 參數(shù):無</b></p><p><b&
40、gt; 返回值:無</b></p><p><b> 結(jié)果:小車右轉(zhuǎn)</b></p><p> **************************************************************/</p><p> void right()</p><p> {unsign
41、ed char y;</p><p> for(y=0;y<18;y++)</p><p><b> {</b></p><p><b> p1 =1;</b></p><p> delay(1700);</p><p><b> p1 =0;<
42、;/b></p><p> delay(20000);</p><p><b> p2 =1;</b></p><p> delay(1700);</p><p><b> p2 =0;</b></p><p> delay(20000);</p>
43、<p><b> }</b></p><p><b> }</b></p><p> /**************************************************************</p><p> 函數(shù)名:小車前進(jìn)程序</p><p> 調(diào)用
44、:forward()</p><p><b> 參數(shù):無</b></p><p><b> 返回值:無</b></p><p><b> 結(jié)果:小車前進(jìn)</b></p><p> *********************************************
45、*****************/</p><p> void forward()</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<5;i++)</p><p><b>
46、 {p1 =1;</b></p><p> delay(1300);</p><p><b> p1 =0;</b></p><p> delay(20000);</p><p><b> p2 =1;</b></p><p> delay(1700);
47、</p><p><b> p2 =0;</b></p><p> delay(20000);}</p><p><b> }</b></p><p> /****************************************************************<
48、;/p><p><b> 函數(shù)名:主函數(shù)</b></p><p><b> 調(diào)用:main()</b></p><p><b> 參數(shù):無</b></p><p><b> 返回值:無</b></p><p><b>
49、 結(jié)果:</b></p><p> ****************************************************************/</p><p> void main()</p><p><b> {</b></p><p> TMOD=0x01;</p&
50、gt;<p><b> EA=1;</b></p><p> ET0=1;TR0=1; //定時器T0初始化,T/C方式寄存器TMOD選擇工作方式為16位T/C,開啟T/C0,允許中斷</p><p> forward();</p><p><b>
51、; while(1)</b></p><p><b> { </b></p><p><b> getx(1); </b></p><p> if(dis>10)</p><p><b> {</b></p><p> fo
52、rward();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> left();</b></p><p><b>
53、 getx(1);</b></p><p> if(dis>10)</p><p><b> {</b></p><p> forward();</p><p><b> }</b></p><p><b> else</b>
54、</p><p><b> {</b></p><p><b> right();</b></p><p><b> right();</b></p><p><b> getx(1);</b></p><p> if(d
55、is>10)</p><p><b> {</b></p><p> forward();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b><
56、;/p><p><b> right();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&
57、lt;/p><p><b> }</b></p><p><b> 問題與解決方案:</b></p><p><b> 問題:</b></p><p><b> 編程思路;</b></p><p> 小車“一頓一頓”前進(jìn)問題;
58、</p><p> 程序燒不進(jìn)單片機(jī)內(nèi);</p><p> 小車可能撞到障礙物然后才會拐彎;</p><p><b> 解決方案:</b></p><p> 設(shè)計任務(wù)拿到手中無從下手,我到圖書館中查找了一些書籍,大略將杜洋的《愛上單片機(jī)》一書翻閱了一遍,他提倡了一種“虛擬積木”的方法,積木里包含單片機(jī)C語言編程常
59、用的函數(shù)模塊與語句,編寫一般程序只要復(fù)制、黏貼,應(yīng)用程序即可搞定。</p><p><b> 第一步:畫流程圖;</b></p><p> 第二步:將流程圖中的區(qū)塊變成具體的程序語句;</p><p> 第三步:按照流程圖編寫主函數(shù);</p><p> 編程的盡頭有三件東西:應(yīng)用程序,驅(qū)動程序與算法。通過對這本書
60、的閱讀,我對本次課程設(shè)計有了基本的思路與著手點。</p><p> 首先將這種現(xiàn)象當(dāng)做一種正確現(xiàn)象去分析,我們通過再次分析所編寫的程序,發(fā)現(xiàn)小車只執(zhí)行一遍forward()函數(shù)就繼續(xù)前進(jìn)了,于是我們在forward()程序中加進(jìn)了一個for循環(huán),但事實證明用處并不大,小車仍然有“一頓一頓”的現(xiàn)象,只不過相隔兩次之間運行的距離稍遠(yuǎn)一些。靜下來繼續(xù)分析,我們會發(fā)現(xiàn),小車之所以會產(chǎn)生這種現(xiàn)象使由于小車在運行完forw
61、ard()程序之后,在進(jìn)行測距程序運行過程中所用時間過長,修改思路有兩種:一是重新編寫測距程序模塊,這也是我們最初只想到的方法,后來在老師的指導(dǎo)下,通過改變延時程序的時間,最終實現(xiàn)了理想結(jié)果。</p><p> 先取下超聲波測距模塊,帶程序燒進(jìn)去后再重新安上即可;</p><p> 小車的速度稍有些快,我們可以通過改變小車的速度來實現(xiàn),我想也可通過用PWM引腳進(jìn)行控制,通過改變占空比,
62、從而控制小車速度,但由于時間關(guān)系,并未嘗試。</p><p><b> 心得體會:</b></p><p> 通過本次課程設(shè)計,培養(yǎng)了我對單片機(jī)研究的濃厚興趣。之前一直停留于書本上的理論知識,稍顯枯燥乏味,但當(dāng)將其運用于實際生活中時,單片機(jī)顯得很好玩。而且通過自己的動手實踐,將理論與實踐相結(jié)合,才將之前一些死記硬背的知識點真正的記住了。</p>&l
63、t;p> 課程設(shè)計只是一個開始,課程設(shè)計期間我在網(wǎng)絡(luò)上找到了好多個關(guān)于單片機(jī)設(shè)計實物方面的網(wǎng)站,上面有大家自己手工制作的小創(chuàng)意,以后有機(jī)會可以不時地去研究一下,對自己也是大有裨益。</p><p> 通過與同學(xué)的討論研究,此次課程設(shè)計才得以順利完成,感謝同學(xué)們的幫助,也感謝老師的指點,愿未來道路上我們共同進(jìn)步。</p><p><b> 參考文獻(xiàn):</b>
64、</p><p> 杜洋 愛上單片機(jī).2版 北京·人民郵電出版社 2011年10月</p><p> 胡瑞強(qiáng) 李成偉 周慶東 于彤彥 單片機(jī)原理及應(yīng)用課程設(shè)計指導(dǎo)書 哈爾濱·測控技術(shù)與儀器實驗中心 2012年7月</p><p> 張毅剛 單片機(jī)原理及應(yīng)用 北京·高等教育出版社2012.01月</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計說明書——紅外線避障小車
- 避障小車課程設(shè)計
- 紅外避障小車課程設(shè)計報告
- 紅外避障小車課程設(shè)計報告
- 智能小車課程設(shè)計說明書
- 避障小車設(shè)計書 哈工大 單片機(jī)課程設(shè)計
- 綜合電子課程設(shè)計----智能循跡避障小車
- !!apr17 桂林電子 自動避障減震小車的設(shè)計說明書
- 小車避障設(shè)計說明書-天津理工大學(xué)機(jī)械專業(yè)設(shè)計
- 單片機(jī)課程設(shè)計——超聲波避障小車
- 單片機(jī)課程設(shè)計--超聲波避障小車
- 課程設(shè)計----基于單片機(jī)的自動避障小車
- 智能避障小車設(shè)計
- 智能避障小車設(shè)計
- 智能小車控制系統(tǒng)課程設(shè)計說明書
- plc小車運行方向控制課程設(shè)計說明書end
- 超聲波避障小車的設(shè)計書
- 課程設(shè)計說明書
- 課程設(shè)計說明書
- 基于at89s51超聲波避障智能小車課程設(shè)計
評論
0/150
提交評論