2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  攀枝花學(xué)院本科綜合實驗(論文)</p><p>  基于單片機(jī)技術(shù)的智能循跡小車設(shè)計</p><p>  學(xué)生姓名: 彭韜_ __ _ _</p><p>  學(xué)生學(xué)號: 201310501044 _</p><p>  院(系): 電氣信息工程學(xué)院_</p><p

2、>  年級專業(yè): 2013級電子信息工程</p><p>  指導(dǎo)教師: 孫艷忠 _ _ _</p><p>  同組成員: _魯亞霜 羅梅_ _ _</p><p><b>  二〇一六年五月</b></p><p><b>  目 錄</b></p>

3、<p>  第1章 緒論…………………………………………………………………………………………3</p><p>  1.1引言................................................................3</p><p>  1.2課題任務(wù)要求…………………………………………………………………………3</p>

4、<p>  1.3本論文研究的內(nèi)容……………………………………………………………………3</p><p>  第2章 系統(tǒng)總體設(shè)計……………………………………………………………………………4</p><p>  2.1智能小車的結(jié)構(gòu)組成及設(shè)計…………………………………………………………4</p><p>  2.2智能小車尋跡基本原理…………………

5、……………………………………………4</p><p>  2.3智能小車測速基本原理………………………………………………………………5</p><p>  2.3.1 光電編碼器測量小車速度的原理……………………………………………………5</p><p>  第3章 系統(tǒng)硬件設(shè)計……………………………………………………………………………7</p>&

6、lt;p>  3.1控制器的選擇…………………………………………………………………………7</p><p>  3.1.1概述………………………………………………………………………………7</p><p>  3.1.2AT89S52開發(fā)工具特性…………………………………………………………7</p><p>  3.2硬件電路設(shè)計……………………………

7、……………………………………………7</p><p>  3.2.1系統(tǒng)電源電路……………………………………………………………………7</p><p>  3.2.2伺服電機(jī)…………………………………………………………………………7</p><p>  3.2.3 QTI循跡傳感器…………………………………………………………………………………………….9&

8、lt;/p><p>  3.2.4 小車循跡策略……………………………………………………………………9</p><p>  第4章 系統(tǒng)軟件設(shè)計……………………………………………………………………………11</p><p>  4.1編譯環(huán)境………………………………………………………………………………11</p><p>  4.2智能

9、小車設(shè)計算法……………………………………………………………………11</p><p>  4.3 智能小車程序調(diào)試……………………………………………………………………12</p><p>  第5章 系統(tǒng)調(diào)試分析……………………………………………………………………………20</p><p>  5.1系統(tǒng)設(shè)計中的注意事項……………………………………………

10、…………………20</p><p>  5.1.1外部因素………………………………………………………………………20</p><p>  5.1.2內(nèi)部因素………………………………………………………………………20</p><p>  5.2 硬軟件總體調(diào)試……………………………………………………………………………20 </p><p

11、>  第6章 結(jié)束語……………………………………………………………………………………21</p><p>  致謝…………………………………………………………………………………………………21</p><p>  參考文獻(xiàn)……………………………………………………………………………………………21</p><p>  附錄圖…………………………………………………

12、………………………………………………21</p><p>  總結(jié)……………………………………………………………………………………………………23</p><p><b>  第一章 緒論</b></p><p><b>  1.1引言</b></p><p>  我們所處的這個時代是信息革命的時代

13、,各種新技術(shù)、新思想層出不窮,縱觀世界范圍內(nèi)智能汽車技術(shù)的發(fā)展,每一次新的進(jìn)步無不是受新技術(shù)新思想的推動。</p><p>  隨著汽車工業(yè)的迅速發(fā)展,傳統(tǒng)的汽車的發(fā)展逐漸趨于飽和。伴隨著電子技術(shù)和嵌入式技術(shù)的迅猛發(fā)展,這使得汽車日漸走向智能化。智能汽車由原先的駕駛更加簡單更加安全更加舒適,逐漸的向智能駕駛系統(tǒng)方向發(fā)展。智能駕駛系統(tǒng)相當(dāng)于智能機(jī)器人,能代替人駕駛汽車。它主要是通過安裝在前后保險杠及兩側(cè)的紅外線攝像

14、機(jī),對汽車前后左右一定區(qū) 域進(jìn)行不停地掃描和監(jiān)視。計算機(jī)、電子地圖和光化學(xué)傳感器等對紅外線攝像 機(jī)傳來的信號進(jìn)行分析計算,并根據(jù)道路交通信息管理系統(tǒng)傳來的交通信息,代替人的大腦發(fā)出指令,指揮執(zhí)行系統(tǒng)操作汽車。</p><p><b>  1.2課題任務(wù)要求</b></p><p>  應(yīng)用AT89S52微控制器中的端口、外部中斷、定時器等基本模塊,實現(xiàn)核心控制,再結(jié)合

15、電源板、電機(jī)驅(qū)動板來控制電機(jī)的轉(zhuǎn)向,最后加上QTI傳感檢測模塊,實現(xiàn)小車的智能尋跡。 </p><p>  1.3本論文研究的內(nèi)容</p><p>  本論文是基于AT89S52單片機(jī)開發(fā),主要是研究3輪小車的

16、路徑識別及其控制算法。</p><p>  第二章 系統(tǒng)總體設(shè)計</p><p>  2.1智能小車的結(jié)構(gòu)組成及設(shè)計</p><p>  智能循跡小車的車體結(jié)構(gòu)圖如圖1所示,智能循跡小車的主要結(jié)構(gòu)有電源、控制電路板、傳感器、電機(jī)驅(qū)動、液晶顯示</p><p>  系統(tǒng)的總體框架圖如上圖所示。本次實驗主要實現(xiàn)智能循跡小車的循跡功能,總體設(shè)計方案

17、如下:</p><p>  智能循跡小車以AT89S52單片機(jī)作為整個控制電路板的核心,外接控制電機(jī)信號以及QTI傳感器;</p><p>  智能循環(huán)小車的電機(jī)是使用伺服舵機(jī)來驅(qū)動小車進(jìn)行基本的動作(前行、后退、左右轉(zhuǎn)、掉頭、停止);</p><p>  傳感器方面智能循跡小車選擇的是QTI紅外傳感器來探測地面上的黑白線,小車車體的下面分別從左到右安裝了四個QTI

18、紅外傳感器,傳感器的信號連接著單片機(jī)的四個引腳,單片機(jī)根據(jù)傳感器所檢測到的信號來控制小車沿著軌跡進(jìn)行行駛;</p><p>  小車的底盤部件分別包括了電池盒、底盤木體、尾輪和左右輪等一些部件。三輪結(jié)構(gòu)的小車前方的兩側(cè)分別為驅(qū)動輪,在小車的后方有一個尾輪,可以起到支撐的作用,這樣小車在隱性的過程中可以靈活地循跡。</p><p>  2.2智能小車巡跡小車基本原理</p>&

19、lt;p>  寶貝車使用QTI傳感器,QTI灰度傳感器是一個反射型光電傳感器。是使用光電接收管來檢測物體表面反射光強(qiáng)度的傳感器。因此這種光電傳感器便可應(yīng)用在檢測物體表面顏色的深度和測量一定距離的移動物體。反射型光電傳感器的結(jié)構(gòu)是由一個紅外發(fā)射管和一個紅外接收管組成,在一定距離內(nèi),當(dāng)發(fā)射出去的紅外光線被顏色深度較淺的物體所接受時,會將這些紅外光線反射回來,紅外接收管便可以接收到這個返回來的信號;若發(fā)射出去的紅外光線被顏色深度較深的物

20、所接受時,較深的顏色物體能吸收紅外光而反射回來的紅光線很弱或沒有反射回來紅外光線,這時接收管接收不到信號。這樣便可以用這兩種狀態(tài)來判斷被測物體的顏色深度。用這個結(jié)構(gòu)的光電傳感器再外加一些阻容件便可以將光能轉(zhuǎn)為電能了。</p><p>  一組QTI傳感器的元器件。一組QTI傳感器的元器件包括:</p><p>  1.QTI傳感器光電接收頭1 個;</p><p>

21、  2.公母銅柱1 組;</p><p>  3.3pin 插頭1 個;</p><p>  4. 塑料墊圈2 個;</p><p><b>  5.螺絲2 個;</b></p><p>  6.3 針杜邦線1 根; </p><p>  其系統(tǒng)結(jié)構(gòu)如所圖 2.2示:</p>&l

22、t;p>  2.3 智能小車測速基本原理</p><p>  2.3.1光電編碼器測速基本原理</p><p>  光電編碼器是由一個紅外發(fā)射接受裝置和一個碼盤構(gòu)成。當(dāng)紅外光由發(fā)射器射出,射于黑色條紋上時,將被間斷地反射于接收器上,在接收器的輸入端會受到通輪子轉(zhuǎn)速為正比關(guān)系的光脈沖信號,進(jìn)而在接收器的輸出端形成具有一定頻率的電信號。再利用微處理器對電脈沖進(jìn)行計算,就可以得到小車的移

23、動速度。 其中小車行駛距離L的表達(dá)式為:L=πD/n*nx公式中:n為碼盤上黑白條紋的個數(shù);D為驅(qū)動輪的外徑;nx為實際測量中電脈沖政府跳變的次數(shù)。小車的行駛速度V的計算表達(dá)式為 :V=L/t公式中: t表示時間。</p><p>  2.3.2光電編碼測速的實現(xiàn)</p><p>  光電編碼的發(fā)光裝置一般由發(fā)光二極管來實現(xiàn)。光敏元件則由光敏三極管接

24、上拉電阻來完成。光電式旋轉(zhuǎn)編碼器是轉(zhuǎn)速或轉(zhuǎn)角的檢測元件,旋轉(zhuǎn)的編碼器與電動機(jī)相連,當(dāng)電機(jī)轉(zhuǎn)動時,帶動碼盤旋轉(zhuǎn),便發(fā)出轉(zhuǎn)速或轉(zhuǎn)角信號。其信號示意圖如下:</p><p>  第3章 系統(tǒng)硬件設(shè)計</p><p>  3.1 控制器的選擇</p><p><b>  3.1.1選擇</b></p><p>  本次設(shè)計采用的

25、是AT89S52單片機(jī)。</p><p><b>  概述</b></p><p>  AT89S52是一個8位單片機(jī),片內(nèi)ROM全部采用FLASH ROM技術(shù),與MCS-51系列完全兼容,它能以3V的超低電壓工作,晶振時鐘最高可達(dá)24MHz。AT89S52是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,有4個八位的并行雙向I/O端口,分別記作P0、P1、P2、P3

26、。第31引腳需要接高電位使單片機(jī)選用內(nèi)部程序存儲器;第9引腳是復(fù)位引腳,要接一個上電手動復(fù)位電路;第40腳為電源端VCC,接+5V電源,第20引腳為接地端VSS,通常在VCC和VSS引腳之間接0.1μF高頻濾波電容。第18、19腳之間接上一個12MHz的晶振為單片機(jī)提供時鐘信號。8K字節(jié)的程序存儲器,256字節(jié)的RAM,32條I/O線,2個16位定時器/計數(shù)器, 一個5中斷源兩個優(yōu)先級的中斷結(jié)構(gòu),一個雙工的串行口, 

27、 片上震蕩器和時鐘電路。</p><p>  AT89S52也是一種低功耗、高性能CMOS 8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52在眾多嵌入式控制應(yīng)用系統(tǒng)中

28、得到廣泛應(yīng)用。</p><p>  Atmel 公司為全球性的業(yè)界領(lǐng)先企業(yè),致力于設(shè)計和制造各類微控制器、電容式觸摸解決方案、先進(jìn)邏輯、混合信號、非易失性存儲器和射頻 (RF) 元件。憑借業(yè)界最廣泛的知識產(chǎn)權(quán) (IP) 技術(shù)組合之一,Atmel 為電子行業(yè)提供針對工業(yè)、消費、安全、通信、計算和汽車市場的全面的系統(tǒng)解決方案。 </p><p>  AT89S52 開發(fā)工具特性</p&g

29、t;<p>  1,89S52內(nèi)核,5V工作電壓,操作頻率0~40MHZ;</p><p>  2,16KB片內(nèi)Flash存儲器,1KB片內(nèi)SRAM;</p><p>  3,SPI串行通信接口和增強(qiáng)型UART;</p><p>  4,PCA(可編程計數(shù)器列陣),具有PWM和捕獲、比較功能;</p><p>  5,4個8位I

30、/O口,含有三個高電流P1口(每個I/O口的電流為16mA);</p><p>  6,8個中斷源,4個中斷優(yōu)先級,3個16位定時器/計數(shù)器和可編程看門狗定時器(WDT);</p><p>  7,2個DPTR寄存器;</p><p>  3.2 硬件電路設(shè)計</p><p>  3.2.1系統(tǒng)電源電路</p><p&g

31、t;  交流電經(jīng)過全波電路在經(jīng)過電容濾波,在經(jīng)過穩(wěn)壓電源芯片做成穩(wěn)壓電路,輸出電壓5V、7.2V的直流電源。其電源電路原理圖如圖所示。</p><p>  小車的驅(qū)動電機(jī)的供電電壓為7.2V,經(jīng)過電容濾波后接7805進(jìn)行穩(wěn)壓,穩(wěn)壓輸出5V的電壓。提供單片機(jī)所需5V電壓。</p><p>  3.2.2伺服電機(jī):</p><p>  伺服舵機(jī)在選擇的時候要能夠按照指令

32、來控制小車的位置和速度。它的外觀如圖3所示,伺服舵機(jī)上有三條輸入線,分別是紅色、黑色、白色,紅色的是電源線,黑色是地線,白色的是信號控制線。伺服舵機(jī)的信號控制周期是20ms的脈寬調(diào)制(PWM)信號。在伺服舵機(jī)的內(nèi)部有一個基準(zhǔn)電路,能夠產(chǎn)生的基準(zhǔn)信號寬度為1.5m、周期為20ms;另外還有一個比較器,可以將基準(zhǔn)信號與外加信號進(jìn)行比較,以此來判斷方向以及大小,進(jìn)而產(chǎn)生出電機(jī)的轉(zhuǎn)動信號。</p><p>  圖上的脈沖

33、序列以高電平1.5ms、低電平20ms進(jìn)行不斷重復(fù)。這個脈沖經(jīng)過零點標(biāo)定后的不會旋轉(zhuǎn)的伺服電機(jī)。如果發(fā)現(xiàn)此時的伺服電機(jī)在進(jìn)行旋轉(zhuǎn),就表明該電機(jī)需要進(jìn)行標(biāo)定。通過圖可知,電機(jī)的轉(zhuǎn)速是由高電平持續(xù)時間控制的;在高電平持續(xù)的時間為1.3ms時,電機(jī)進(jìn)行順時針的高速旋轉(zhuǎn);在高電平持續(xù)的時間為1.7ms時,電機(jī)進(jìn)行逆時針的高速旋轉(zhuǎn)。</p><p>  選擇P1.0的電機(jī)來控制小車右輪,選擇P1.1的電機(jī)來控制小車左輪。伺

34、服電機(jī)和單片機(jī)之間的接口如圖所示。</p><p>  3.2.3 QTI循跡傳感器</p><p>  2.2.1 傳感器的選擇。傳感器的接線圖如下圖所示。在接線圖中的W表示的是VCC引腳,是白色的線;R表示的是SIG引腳接到單片機(jī)I/O引腳,是紅色的線;B表示的是GND引腳,是黑色的線。QTI是通過一個發(fā)光的二極管和一個光敏三極管的耦合得到一個類似光敏電阻的元件來對信號等的電平進(jìn)行控

35、制。傳感器對于黑色的表面,反射率很低,光敏三極管沒有導(dǎo)通,此時由三極管和電容組成的RC電路的時間常數(shù)就比較大,電壓大部分都降在三極管的兩端,其中R端輸出高電平1。反之,當(dāng)傳感器經(jīng)過亮表面時,反射率就比較高,此時的光敏三極管導(dǎo)通,RC電路的時間常數(shù)比較小,電壓大部分降在電容的兩端,R端輸出低電平0。</p><p>  3.2.4 小車循跡策略</p><p>  將四個QTI傳感器的信號線

36、連接到小車相應(yīng)的I/O口,我們選定的對象是P2中的P2.1、P2.2、P2.3、P2.4。在連接相應(yīng)的信號線時,使用不同顏色的線,這樣在進(jìn)行錯誤的檢查時就非常簡單清晰。傳感器的接口設(shè)計圖如下:</p><p>  在圖中,我們可以看到傳感器是集中在一條直線上的,P2.2和P2.3引腳信號是第一級方向上的傳感信號,P2.1和P2.4是第二級傳感信號。小車在前進(jìn)的過程中,黑線一直在第一級傳感器下面,當(dāng)小車偏離的時候,

37、傳感器就可以及時地檢測出來并予以糾正。第二級的傳感器實際上是第一級的后備裝置,當(dāng)小車偏離的角度過大時,第二級可以進(jìn)行糾正,提高了小車的循跡可靠性。</p><p>  第4章 系統(tǒng)軟件設(shè)計</p><p><b>  4.1 編譯環(huán)境</b></p><p>  USBASP是一種基于ATMEL公司的AVR系列RISC單片機(jī)的高性價比和一個由純

38、軟件的USB通信協(xié)議棧而構(gòu)成的一個可以向51系列,AVR系列單片機(jī)下載(燒寫)程序的下載器.</p><p>  4.2智能小車設(shè)計算法</p><p>  1.如果中間任何一個或者兩個傳感器檢測到黑線,左、右兩個傳感器都沒有檢測到黑線,則小車前進(jìn)一步; 2.如果最左邊的兩個傳感器檢測到黑線,最右邊右兩個傳感器都沒有檢測到黑線,則小車左轉(zhuǎn)一小步;</p><p&

39、gt;  3、如果最左邊的1個傳感器檢測到黑線,另外3個傳感器沒有檢測到黑線,則機(jī)器人左轉(zhuǎn)1小步。</p><p>  4、如果左邊的3個傳感器檢測到黑線,另外1個傳感器沒有檢測到黑線,則機(jī)器人左轉(zhuǎn)90°</p><p>  5、如果右邊的3個傳感器檢測到黑線,另外1個傳感器沒有檢測到黑線,則機(jī)器人右轉(zhuǎn)90°。</p><p>  6、如果最右邊

40、的2個傳感器檢測到黑線,另外2個傳感器沒有檢測到黑線,則機(jī)器人右轉(zhuǎn)1小步。</p><p>  7、如果最右邊的1個傳感器檢測到黑線,另外3個傳感器沒有檢測到黑線,則機(jī)器人右轉(zhuǎn)1小步。</p><p>  8、如果四個傳感器都檢測到黑線,則機(jī)器人右轉(zhuǎn)90°。</p><p>  9. 如果四個傳感器都檢測到白線,則機(jī)器人右轉(zhuǎn)掉頭。</p>&

41、lt;p>  10、如果傳感器檢測值出現(xiàn)其他的情況,則機(jī)器人停止運(yùn)動。</p><p>  4.3智能小車程序調(diào)試</p><p>  1.QTI傳感器測試程序</p><p>  #include<BoeBot.h></p><p>  #include<uart.h></p><p>

42、  int P1_4_state(void)</p><p><b>  {</b></p><p>  return(P1&0x10)?1:0;</p><p><b>  }</b></p><p>  int P1_5_state(void)</p><p>&

43、lt;b>  {</b></p><p>  return(P1&0x20)?1:0;</p><p><b>  }</b></p><p>  int P1_6_state(void)</p><p><b>  {</b></p><p>  

44、return(P1&0x40)?1:0;</p><p><b>  }</b></p><p>  int P1_7_state(void)</p><p><b>  {</b></p><p>  return(P1&0x80)?1:0;</p><p>

45、;<b>  }</b></p><p>  int main(void)</p><p><b>  {</b></p><p>  uart_Init();</p><p>  printf("Program Running!\n");</p><p>

46、;<b>  while(1)</b></p><p><b>  {</b></p><p>  printf("OTIL=%d",P1_7_state());</p><p>  printf("OTIM1=%d",P1_6_state());</p><p&

47、gt;  printf("OTIM2=%d",P1_5_state());</p><p>  printf("OTIR=%d\n",P1_4_state());</p><p>  delay_nms(500);</p><p><b>  }</b></p><p&g

48、t;<b>  2.原地左轉(zhuǎn):</b></p><p>  #include<BoeBot.h></p><p>  #include<uart.h></p><p>  void main()</p><p><b>  {</b></p><p>

49、<b>  P1_1=1;</b></p><p>  delay_nus(1300);</p><p><b>  P1_1=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(1300);</p><

50、p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p><b>  }</b></p><p><b>  3.原地右轉(zhuǎn)</b></p><p>  #include<BoeBot.h></p>

51、<p>  #include<uart.h></p><p>  void main()</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p>  delay_nus(1700);</p><p>&

52、lt;b>  P1_1=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(1700);</p><p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p&g

53、t;<b>  }</b></p><p><b>  4.向前走</b></p><p>  #include<BoeBot.h></p><p>  #include<uart.h></p><p>  void main()</p><p>&l

54、t;b>  {</b></p><p><b>  P1_1=1;</b></p><p>  delay_nus(1700);</p><p><b>  P1_1=0;</b></p><p><b>  P1_0=1;</b></p>&

55、lt;p>  delay_nus(1300);</p><p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p><b>  }</b></p><p><b>  5.向后走</b></p><p&

56、gt;  #include<BoeBot.h></p><p>  #include<uart.h></p><p>  void main()</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p>

57、;  delay_nus(1300);</p><p><b>  P1_1=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(1700);</p><p><b>  P1_0=0;</b></p>&l

58、t;p>  delay_nms(20);}</p><p><b>  6.從前面向右旋轉(zhuǎn)</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p&g

59、t;  delay_nus(1700); //修改脈沖實現(xiàn)</p><p><b>  P1_1=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(1500);</p><p><b>  P1_0=0;</b>&l

60、t;/p><p>  delay_nms(20);</p><p><b>  }</b></p><p>  7.從后面向右旋轉(zhuǎn)</p><p>  #include<BoeBot.h></p><p>  #include<uart.h></p><p

61、>  void main()</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p>  delay_nus(1300); //修改脈沖實現(xiàn)</p><p><b>  P1_1=0;</b></p>

62、<p><b>  P1_0=1;</b></p><p>  delay_nus(1500);</p><p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p><b>  }</b></p>&l

63、t;p><b>  8.從前面向左旋轉(zhuǎn)</b></p><p>  #include<BoeBot.h></p><p>  #include<uart.h></p><p>  void main()</p><p><b>  {</b></p>&l

64、t;p><b>  P1_1=1;</b></p><p>  delay_nus(1500); //修改脈沖實現(xiàn)</p><p><b>  P1_1=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(130

65、0);</p><p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p><b>  }</b></p><p><b>  9.從后面向左旋轉(zhuǎn)</b></p><p>  #include<Bo

66、eBot.h></p><p>  #include<uart.h></p><p>  void main()</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p>  delay_nus(1700);

67、 //修改脈沖實現(xiàn)</p><p><b>  P1_1=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(1700);</p><p><b>  P1_0=0;</b></p><p> 

68、 delay_nms(20);</p><p><b>  } </b></p><p>  10.ControlServoRunTimes</p><p>  #include<BoeBot.h></p><p>  #include<uart.h></p><p>  

69、int main(void)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  uart_Init();</p><p><b>  while(1)</b></p><p><b>

70、  {</b></p><p>  for(i=1;i<100;i++)</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p>  delay_nus(1700);</p><p><b>  

71、P1_1=0;</b></p><p>  delay_nms(20);</p><p><b>  }</b></p><p>  for(i=1;i<200;i++)</p><p><b>  {</b></p><p><b>  P1_0

72、=1;</b></p><p>  delay_nus(1700);</p><p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p><b>  }</b></p><p><b>  }</b

73、></p><p><b>  }</b></p><p>  11.StartAndStopWithRamping</p><p>  #include<BoeBot.h></p><p>  #include<uart.h></p><p>  int main(

74、)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  uart_Init();</p><p><b>  while(1)</b></p><p><b>  {</b>

75、</p><p>  for(i=1;i<=200;i=i+1)</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p>  delay_nus(1500+i);</p><p><b>  P1_1=0;&

76、lt;/b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(1500+i);</p><p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p><b>  } &

77、lt;/b></p><p>  for(i=1;i<=75;i++)</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p>  delay_nus(1700);</p><p><b>  P1_1

78、=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(1300);</p><p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p><b>  }

79、 </b></p><p>  for(i=200;i>=0;i=i-1)</p><p><b>  {</b></p><p><b>  P1_1=1;</b></p><p>  delay_nus(1500+i);</p><p><b&g

80、t;  P1_1=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(1500+i);</p><p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p>&l

81、t;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  12.RobotTourChina</p><p>  #include<BoeBot.h></p><p>  #inc

82、lude<uart.h></p><p>  int right90steps=48;</p><p>  int left90steps=48;</p><p>  int uturnsteps=48;</p><p>  int get_4QTI_state(void)</p><p><b>

83、;  {</b></p><p>  return P1&0xf0;</p><p><b>  }</b></p><p>  void MoveAStep(int leftp,int rightp)</p><p><b>  {</b></p><p&g

84、t;<b>  P1_1=1;</b></p><p>  delay_nus(leftp);</p><p><b>  P1_1=0;</b></p><p><b>  P1_0=1;</b></p><p>  delay_nus(rightp);</p>

85、<p><b>  P1_0=0;</b></p><p>  delay_nms(20);</p><p><b>  }</b></p><p>  void rightturn(int steps)</p><p><b>  {</b></p>

86、<p><b>  int i;</b></p><p>  for(i=0;i<steps;i++)</p><p><b>  {</b></p><p>  MoveAStep(1550,1500);</p><p><b>  }</b></p&

87、gt;<p><b>  }</b></p><p>  void leftturn(int steps)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<steps;i++)

88、</p><p><b>  {</b></p><p>  MoveAStep(1500,1250);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void rotate(int steps)&l

89、t;/p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<steps;i++)</p><p><b>  {</b></p><p>  MoveAStep(1550,1550

90、);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void backward(int steps)</p><p><b>  {</b></p><p><b>  int i;<

91、/b></p><p>  for(i=0;i<steps;i++)</p><p><b>  {</b></p><p>  MoveAStep(1250,1550);</p><p><b>  }</b></p><p><b>  }</

92、b></p><p>  void follow_line(void)</p><p><b>  {</b></p><p>  int QTIState;</p><p>  int leftpulse,rightpulse;</p><p>  QTIState=get_4QTI_st

93、ate();</p><p>  printf("4QTI=%4d",QTIState);</p><p>  switch(QTIState)</p><p><b>  {</b></p><p>  case 0x10: leftpulse=1550;</p><p> 

94、 rightpulse=1550;</p><p><b>  break;</b></p><p>  case 0x30: leftpulse=1550;</p><p>  rightpulse=1550;</p><p><b>  break;</b></p><p&g

95、t;  case 0x20: leftpulse=1550;</p><p>  rightpulse=1250;</p><p><b>  break;</b></p><p>  case 0x40: leftpulse=1550;</p><p>  rightpulse=1250;</p><

96、;p><b>  break;</b></p><p>  case 0x60: leftpulse=1550;</p><p>  rightpulse=1250;</p><p><b>  break;</b></p><p>  case 0x80: leftpulse=1250;&l

97、t;/p><p>  rightpulse=1550;</p><p><b>  break;</b></p><p>  case 0xc0: leftpulse=1500;</p><p>  rightpulse=1250;</p><p><b>  break;</b>

98、;</p><p>  case 0xe0: leftturn(left90steps); </p><p>  leftpulse=1250;</p><p>  rightpulse=1250;</p><p><b>  break;</b></p><p>  case 0x70:righ

99、tturn(right90steps);</p><p>  leftpulse=1650;</p><p>  rightpulse=1650;</p><p><b>  break;</b></p><p>  case 0xf0: rightturn(right90steps);</p><p

100、>  leftpulse=1650;</p><p>  rightpulse=1650;</p><p><b>  break;</b></p><p>  case 0x00: rotate(uturnsteps);</p><p>  leftpulse=1500;</p><p>

101、  rightpulse=1500;</p><p><b>  break;</b></p><p>  default: leftpulse=1500;</p><p>  rightpulse=1500;</p><p><b>  break;</b></p><p&

102、gt;<b>  }</b></p><p>  MoveAStep(leftpulse,rightpulse);</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>

103、;  uart_Init();</p><p>  printf("Program Running!\n");</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  follow_line();</p>&

104、lt;p><b>  }</b></p><p><b>  }</b></p><p>  第5章 系統(tǒng)調(diào)試分析</p><p>  5.1 系統(tǒng)設(shè)計中的注意事項</p><p>  5.1.1 外部因素</p><p>  外部因素主要有環(huán)境光線、地圖材質(zhì)等因素。以

105、采用光電尋跡方案的智能車為例,如果接收的信號中有很多噪聲成分,或者黑白區(qū)分不清晰,就很難識別路線,從而對后續(xù)的控制過程造成很大影響。因此,合理的傳感器離地間隙和反射角度、較好的濾波電路設(shè)計都是需要考慮的。</p><p>  5.1.2 內(nèi)部因素</p><p><b>  重量因素 </b></p><p>  整車質(zhì)量的增加,對系統(tǒng)動力性有

106、較大影響。因此,除了智能車工作必須的電路之外,應(yīng)盡可能減少車重。即使是必備部件,可應(yīng)該采用輕量化的設(shè)計。比如為了測量模型車的速度,需要在驅(qū)動輪上加裝轉(zhuǎn)速傳感器,一般購買的電機(jī)編碼器重量都較大,有的隊伍就利用鼠標(biāo)上的光電電路設(shè)計制作了一個輕量化的轉(zhuǎn)速傳感器,從而大大減小了重量。 </p><p><b>  過度轉(zhuǎn)向的避免 </b></p><p>  由于是后輪驅(qū)動,

107、在彎曲的路線上加速可能會出現(xiàn)過度轉(zhuǎn)向現(xiàn)象,因此在車輛彎道行駛時需要小心控制車輛的轉(zhuǎn)向速度。</p><p><b>  傳感器的影響</b></p><p>  剛開始的時候,我的傳感器裝的比較高,這樣就不能很好的感應(yīng)到路線,以至于出現(xiàn)亂跑的現(xiàn)象。如果在以后的設(shè)計中需要的話,可以采用激光傳感器進(jìn)行探測,這樣就會更精準(zhǔn)的尋跡。</p><p> 

108、 5.2 硬軟件總體調(diào)試</p><p>  硬件、軟件獨立調(diào)試都有效果之后,下一步就是硬軟件總體調(diào)試了,在硬軟件總體調(diào)試之前,應(yīng)現(xiàn)把各個跳線接后,然后在用貼有黑膠帶的白紙來回在紅外線發(fā)射接收管左右移動,看小車的電機(jī)轉(zhuǎn)速是否會發(fā)生變化,如果用貼有黑膠帶的白紙來回在各個紅外線發(fā)射接收管左右移動時,電機(jī)的轉(zhuǎn)速都會發(fā)生改變,則說明總體調(diào)試初步有效,最后讓小車在賽道上進(jìn)行行走,在初次調(diào)試的時候,小車的速度不能太大。<

109、;/p><p><b>  第6章 結(jié)束語</b></p><p><b>  致謝</b></p><p>  感謝孫艷忠老師。孫老師在上課期間耐心地為我們講了很多,無論是在學(xué)習(xí)上還是精神上,都支持著我們。</p><p>  感謝實驗室的伙伴們,每次去找他們時,他們都不惜自己的時間給我們講解難點以及

110、告訴我們他們的經(jīng)驗。感謝這次綜合實訓(xùn)里面的各位同學(xué),因為我們的分工合作,才很好的完成了這次綜合實訓(xùn)。</p><p>  感謝攀枝花學(xué)院給我這個學(xué)習(xí)的環(huán)境,這是讓我夢想起航的地方。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 秦志強(qiáng)等 《C語言原來可以這樣學(xué)》.電子工業(yè)出版社</p><p&

111、gt;  [2] 秦志強(qiáng)等. 《 基于機(jī)器人制作項目的學(xué)習(xí)和實踐》. 電子工業(yè)出版社</p><p><b>  附錄圖</b></p><p><b>  總結(jié)</b></p><p>  經(jīng)過幾個禮拜的忙碌,在大家共同的努力下,終于給智能循跡 小車畫上了句號。誰說不上是完美,但總算成功了。剛開始接觸 這個項目,我們幾

112、個男生對其一點也不了解,無從下手。后來從 硬件電路開始,慢慢了解其原理,也算知道個大概。在這期間, 我們也遇到過很多問題。很多問題都是不知道怎么解決的,孫老師給了我們很多指導(dǎo),我們也在網(wǎng)上查閱了很多資料,最開始的便是尋跡電路板。其 次是程序,程序是不可能一次性成功的。在不斷的修改調(diào)試之后, 小車最終還是實現(xiàn)了預(yù)想的功能。通過這次的循跡小車的制作,我們學(xué)到了團(tuán)隊合作的重要性以及如何去學(xué)習(xí)一個以前完全不知道的新東西。</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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論