九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

遙控小車設(shè)計(jì)

上傳人:dc****87 文檔編號:64823929 上傳時間:2022-03-22 格式:DOC 頁數(shù):95 大?。?88KB
收藏 版權(quán)申訴 舉報(bào) 下載
遙控小車設(shè)計(jì)_第1頁
第1頁 / 共95頁
遙控小車設(shè)計(jì)_第2頁
第2頁 / 共95頁
遙控小車設(shè)計(jì)_第3頁
第3頁 / 共95頁

本資源只提供3頁預(yù)覽,全部文檔請下載后查看!喜歡就下載吧,查找使用更方便

36 積分

下載資源

資源描述:

《遙控小車設(shè)計(jì)》由會員分享,可在線閱讀,更多相關(guān)《遙控小車設(shè)計(jì)(95頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、- 學(xué) 號01081237 密 級 工程大學(xué)本科生畢業(yè)論文 遙控小汽車的設(shè)計(jì)研究 院(系)名稱:信息與通信工程學(xué)院 專業(yè)名稱:電子信息工程 學(xué)生:洪生 指導(dǎo)教師:付永慶 教授 2005年6月 . z - 工程大學(xué)本科生畢業(yè)論文 遙控小汽車的設(shè)計(jì)研究 院 (系):信息與通信工程學(xué)院 專業(yè):電子信息工程 **:01081237 學(xué)生:洪生 指導(dǎo)教師:付永慶 教授 2005年6月 摘 要 根據(jù)題目要求,本設(shè)計(jì)采用2片

2、AT89C52單片機(jī)構(gòu)成主從式的控制系統(tǒng),雙機(jī)采用串行口進(jìn)展通信。紅外遙控局部采用遙控車模專用編、解碼芯片T*-2/R*-2,提高控制的可靠性;同時,在遙控發(fā)射端參加了用凌陽61板做的語音識別系統(tǒng),能夠完成語音遙控功能。采用紅外傳感器進(jìn)展里程檢測;超聲波傳感器進(jìn)展障礙識別;感光電阻輔以步進(jìn)電機(jī)控制的轉(zhuǎn)動機(jī)構(gòu)進(jìn)展光源方向的檢測,并能用軟件控制小車行駛到光源附近。采用步進(jìn)電機(jī)對小車的轉(zhuǎn)向進(jìn)展準(zhǔn)確的控制,同時用紅外傳感器對轉(zhuǎn)向的角度進(jìn)展校正。此外,采用四位LED數(shù)碼管和假設(shè)干LED發(fā)光二極管顯示時間、行進(jìn)的里程以及小車的各種狀態(tài);采用AT24C08串行EEPROM記錄小車的行駛軌跡,并能按照所記錄的

3、軌跡自動行駛。 本次設(shè)計(jì)基于完備的軟硬件系統(tǒng),很好的實(shí)現(xiàn)了小車語音遙控、任意曲線行駛、路線記錄與重放、自動查找光源、自動避障,里程統(tǒng)計(jì)并發(fā)出指示信息等功能。 關(guān)鍵詞:單片機(jī);超聲波傳感器;紅外遙控;語音識別;凌陽61板 ABSTRACT According to the topic, my designneeds to adopt two AT89C52 to form a control system of principal and subordinate. The munication between the two MCUis to adopt the serial port.

4、 Meanwhile, launch end join with insult male genital 61 sound recognition system that board make remotely, can finish the remote control function of the pronunciation, and it adopts the infrared sensor to measure the mileage; The ultrasonic sensor carries on the obstacle to discern; Sensitization re

5、sistance plement in order to walk into whom electrical machinery control rotate organization carry on measuring,direction of the light source, The small car can go to the adjacent place of the light source with the software .The designadopts serial EEPROM of AT24C08 to write down the orbit of the ca

6、r , and can repeat the route automatically which has been recorded. The Design is on the basis of the plete software and hardware system, and the small car has the function of sound remote control, following any curve, recording the route where it has gone, finding out the light source,etc… Keywo

7、rds:MCU; AT24C08; sensor; SPCE061A 目 錄 第1章 緒論……………………………………………………………1 1.1概述………………………………………………………………1 1.2設(shè)計(jì)要求及主要功能介紹………………………………………1 手動控制功能…………………………………………2 自動尋找光源功能……………………………………2 超聲避障功能…………………………………………2 記錄路線與重放路線功能……………………………2 聲控功能………………………………………………3 其他功能………………………………………………3 1.3MCS

8、-51系列單片機(jī)簡介………………………………………3 1.4凌陽SPCE061A精簡開發(fā)板簡介………………………………5 第2章 系統(tǒng)總體設(shè)計(jì)………………………………………………6 2.1系統(tǒng)功能模塊的劃分…………………………………………6 2.2單片機(jī)數(shù)目的選定……………………………………………6 2.3系統(tǒng)原理框圖…………………………………………………7 2.4系統(tǒng)軟件主要特色……………………………………………7 軟件分層構(gòu)造……………………………………………8 多任務(wù)構(gòu)造………………………………………………8 消息驅(qū)動構(gòu)造…………………………………………13 2.5本

9、章小結(jié)………………………………………………………15 第3章 各模塊的詳細(xì)設(shè)計(jì)…………………………………………16 3.1 紅外遙控模塊的設(shè)計(jì)…………………………………………16 遙控模塊的功能需求…………………………………16 編解碼芯片的選型……………………………………16 遙控模塊原理圖………………………………………16 遙控電路與語音識別模塊的連接……………………18 3.2 數(shù)碼管、發(fā)光二極管顯示模塊的設(shè)計(jì)………………………18 多位數(shù)碼管掃描顯示原理……………………………18 工作狀態(tài)指示燈及轉(zhuǎn)向燈的設(shè)計(jì)……………………19 顯示模塊電原理圖………

10、……………………………19 顯示任務(wù)的軟件設(shè)計(jì)…………………………………20 3.3 聲音提示功能的設(shè)計(jì)…………………………………………20 3.4 前輪轉(zhuǎn)向模塊的設(shè)計(jì)…………………………………………21 前輪轉(zhuǎn)向的機(jī)械構(gòu)造設(shè)計(jì)……………………………21 前輪轉(zhuǎn)向中點(diǎn)校準(zhǔn)功能的設(shè)計(jì)………………………22 步進(jìn)電機(jī)驅(qū)動芯片……………………………………22 前輪轉(zhuǎn)向任務(wù)的軟件設(shè)計(jì)……………………………22 3.5 后輪驅(qū)動模塊的設(shè)計(jì)…………………………………………24 直流電機(jī)驅(qū)動芯片L298N……………………………24 后輪驅(qū)動任務(wù)的軟件設(shè)計(jì)…………………………

11、…25 3.6 里程檢測模塊的設(shè)計(jì)…………………………………………25 探頭的選型與安裝……………………………………25 軟件消抖與硬件消抖的比擬…………………………26 里程檢測任務(wù)的軟件設(shè)計(jì)……………………………26 3.7 超聲測距模塊的設(shè)計(jì)…………………………………………27 超聲測距的理論依據(jù)…………………………………27 超聲發(fā)射電路…………………………………………27 超聲接收電路…………………………………………28 超聲測距任務(wù)的軟件設(shè)計(jì)……………………………29 3.8 光源方向探測模塊的設(shè)計(jì)……………………………………30 旋轉(zhuǎn)機(jī)構(gòu)設(shè)計(jì)

12、…………………………………………30 亮度檢測電路的選型與設(shè)計(jì)…………………………31 尋找光源方向任務(wù)的軟件設(shè)計(jì)………………………32 3.9 行駛路線的記錄與重放模塊的設(shè)計(jì)…………………………33 該模塊的功能概述……………………………………33 3.9.2 AT24C08串行EEPROM介紹……………………………33 存儲記錄的格式………………………………………33 手動模式下記錄行駛路線功能的軟件設(shè)計(jì)…………33 重放行駛路線功能的軟件設(shè)計(jì)………………………34 3.10 雙機(jī)串行通信模塊的軟件設(shè)計(jì)……………………………35 通信方式的選型………………

13、……………………35 雙機(jī)串行通信的軟件設(shè)計(jì)…………………………35 3.11 語音識別功能的設(shè)計(jì)………………………………………36 凌陽語音壓縮算法…………………………………37 語音識別模塊的軟件設(shè)計(jì)…………………………37 3.12 本章小結(jié)……………………………………………………37 第4章 系統(tǒng)軟件的設(shè)計(jì)……………………………………………39 4.1 單片機(jī)的C語言程序設(shè)計(jì)簡介………………………………39 4.2 系統(tǒng)的三種工作模式…………………………………………39 4.3 手動模式的設(shè)計(jì)………………………………………………40 4.4 自動尋找光源模式的

14、設(shè)計(jì)……………………………………40 功能分析………………………………………………40 尋找光源的策略………………………………………41 自動尋找光源的軟件設(shè)計(jì)……………………………41 該功能模塊存在的一些問題…………………………41 4.5 走數(shù)字及路線重放模式的設(shè)計(jì)………………………………44 4.6 本章小結(jié)………………………………………………………44 第5章 系統(tǒng)的組裝、調(diào)試和測試…………………………………45 5.1 系統(tǒng)的組裝、調(diào)試……………………………………………45 5.2 遙控距離的測試………………………………………………45 5.3 時間顯示

15、功能的測試…………………………………………45 5.4 里程顯示功能的測試…………………………………………46 5.5 超聲測障礙功能的測試………………………………………46 5.6 走數(shù)字功能的測試……………………………………………46 5.7 行駛路線記錄與重放功能的測試……………………………47 5.8 自動尋找光源功能的測試……………………………………47 5.9 語音識別功能的測試…………………………………………47 5.10 本章小結(jié)……………………………………………………48 結(jié)論………………………………………………………………………49 致…………………………

16、……………………………………………50 參考文獻(xiàn)………………………………………………………………51 附錄………………………………………………………………………52 . z - 第1章 緒論 1.1 概述 單片機(jī)以其強(qiáng)大的控制能力已經(jīng)被廣泛應(yīng)用于諸多領(lǐng)域,配以各種接口傳感器可以實(shí)現(xiàn)系統(tǒng)的智能化。無論是在工業(yè)控制領(lǐng)域、醫(yī)療衛(wèi)生領(lǐng)域、還是在國防軍事領(lǐng)域、航天航空領(lǐng)域,微控制器都起著舉足輕重的作用。從最初的8位控制器到現(xiàn)在的16位、32位控制器都還有很大的開展和應(yīng)用空間

17、。 目前市場上已有很多種用超聲波傳感器制作的產(chǎn)品,在汽車電子領(lǐng)域,用超聲波傳感器做的倒車?yán)走_(dá)可以提高汽車行駛的平安性。對汽車駕駛員來說車身前方是一個視線的“死區(qū)〞,倒車時得非常小心,倒車?yán)走_(dá)的出現(xiàn)就解決了這一問題,當(dāng)車身前方有障礙時能及時發(fā)出警告。 語音識別技術(shù)也日趨完善,在機(jī)器人領(lǐng)域,要想用語言和機(jī)器人“交談〞,首先就要解決語音的識別問題??梢杂谜Z音識別技術(shù)做成聲控?fù)芴?、聲控家電、兒童玩具等。語音識別技術(shù)還有待于進(jìn)一步的開展。本設(shè)計(jì)中采用凌陽61板做的聲控系統(tǒng)可以用語音控制小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停頓。 1.2 設(shè)計(jì)要求及主要功能介紹 根據(jù)題目要求,本設(shè)計(jì)需要完成的以下幾項(xiàng)功能

18、: 〔1〕紅外遙控功能,啟停、自動或手動; 〔2〕前或后直線行進(jìn); 〔3〕任意曲線行進(jìn); 〔4〕測距避障功能; 〔5〕顯示行進(jìn)距離; 〔6〕準(zhǔn)確查找光源。 另外,在設(shè)計(jì)過程中又?jǐn)U展了一些功能,比方聲控功能、記錄與重放行駛路線功能等。 手動控制功能 在手動控制模式下,可以控制小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停頓、漏粉、顯示時間、顯示里程,假設(shè)在行駛過程中遇到障礙小車將自動停頓,并發(fā)出聲光警告信號。同時,在轉(zhuǎn)彎或后退時相應(yīng)的轉(zhuǎn)向燈和倒車燈會閃爍發(fā)光,小車接收到一個按鍵命令后除了執(zhí)行相應(yīng)的動作外蜂鳴器還會響一聲,以告知操作者已收到了命令。 在手動控制模式下,還設(shè)置了一個記錄行駛路

19、線的開關(guān)。操作者按下這個開關(guān)后,先選擇這一次記錄的路線的名稱,此后對小車的控制命令將被存入EEPROM中,直至操作者再按下一次這個開關(guān)完畢這次路線的記錄。記錄的路線可在重放路線模式下重放。 自動尋找光源功能 在自動尋找光源模式下,小車可以自動查找光源的方向,然后自動行駛到光源的附近。在自動行駛過程中假設(shè)遇到障礙,小車將自動采取一些避障措施避開障礙。此外在尋找過程中操作者假設(shè)按下“顯示模式切換鍵〞數(shù)碼管顯示的容將在時間和里程之間切換,假設(shè)按下“停頓〞鍵,小車將立即停頓尋找光源,然后等待切換到其他模式。 超聲避障功能 在手動模式、自動尋找光源模式、重放路線模式下超聲測障模塊始終工作。在

20、前進(jìn)時發(fā)現(xiàn)前方有障礙,或在后退時發(fā)現(xiàn)前方有障礙小車都將立即停車,并發(fā)出聲光報(bào)警信號告知操作者。障礙檢測的距離調(diào)整在20厘米,即只有在20厘米之有障礙時小車才會做出避讓動作,在這個圍之外的障礙小車不予處理。 記錄路線與重放路線功能 在手動模式下翻開記錄路線開關(guān),開場記錄路線;在重放路線模式下選擇重放的路線,開場重放指定的路線。在重放過程中遇到障礙或操作者按下“停頓〞鍵將完畢本條路線的重放,等待選擇下一條需要重放的路線或選擇另外一種模式。 聲控功能 本設(shè)計(jì)采用凌陽61板做了聲控系統(tǒng)。翻開遙控器電源后開場訓(xùn)練語音命令,由于受到單片機(jī)的SRAM容量的限制只能錄制5條語音命令,分別是前進(jìn)、后

21、退、左轉(zhuǎn)、右轉(zhuǎn)、停頓。當(dāng)識別出*條語音命令時和直接按下相應(yīng)的按鍵等價,紅外發(fā)射電路都會給小車發(fā)出相應(yīng)的命令。操作者在使用聲控功能時有語音提示音,所以操作很簡便、快捷。 其他功能 小車還具有走數(shù)字功能,即小車可按照事先由程序設(shè)置好的路線行走,并灑下粉末,顯示出一個數(shù)字。 除此之外,小車上還有左、右轉(zhuǎn)向燈,倒車燈,障礙指示燈,模式指示燈,蜂鳴器報(bào)警電路,小車狀態(tài)一目了然。 1.3 MCS-51系列單片機(jī)簡介 MCS51單片機(jī)的根本構(gòu)造如圖1.1所示,其根本構(gòu)造包括: ● 8位CPU; ● 片震蕩器及時鐘電路; ● 32根I/O口線; ● 外部存儲器ROM和RAM尋址圍各為64K

22、B; ● 2個16位定時器/計(jì)數(shù)器; ● 5個中斷源,2個中斷優(yōu)先級; 時鐘電路 ROM RAM 定時器/計(jì)數(shù)器 CPU 并行接口 串行接口 中斷系統(tǒng) T*D R*D INT0 INT1 P0~P3 T0 T1 圖1.1 8051單片機(jī)的根本構(gòu)造 ● 全雙工串行口; ● 布爾處理器。 8051單片機(jī)的存儲器構(gòu)造特點(diǎn)之一是程序存儲器和數(shù)據(jù)存儲器分開,并有各自的尋址機(jī)構(gòu)和尋址方式。這種構(gòu)造的單片機(jī)稱為哈佛構(gòu)造單片機(jī)。 8051單片機(jī)在物理上有四個存儲空間:片程序存儲器和片外程序存儲器;片數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。 8051單片機(jī)有4個8位的并行接口,

23、記作P0,P1,P2和P3,共32根口線,實(shí)際上它們就是SFR中的4個。這4個接口特性上主要差異是P0,P2和P3都還有第二功能,而P1口只能用做I/O口。4個口的驅(qū)動能力也是不一樣。P1,P2和P3都能驅(qū)動3個LS TTL門,并且不需外加上拉電阻就能驅(qū)動MOS電路。P0能驅(qū)動8個LS TTL門,但驅(qū)動MOS電路時,假設(shè)作為地址/數(shù)據(jù)總線,則可以直接驅(qū)動;而作為I/O口時,需外接上拉電阻才能驅(qū)動MOS電路。 1.4凌陽SPCE061A精簡開發(fā)板簡介 凌陽61板是采用凌陽16位單片機(jī)為核心的開發(fā)系統(tǒng),具有DSP處理功能和語音處理功能。利用該開發(fā)板可方便的實(shí)現(xiàn)語音的錄、放、識別等功能。SPCE

24、061A凌陽16位單片機(jī)的構(gòu)造框圖如圖1.2所示: 圖1.2 SPCE061A構(gòu)造框圖 SPECE061A的CPU工作速率為0.32MHZ-49.152MHZ;SRAM容量為2K字;程序存儲器容量為32K字FLASH,使用凌陽音頻壓縮算法SACM_240方式〔2.4Kbps〕,能容納240秒語音數(shù)據(jù);有兩個16位的并行I/O接口;還具有ADC、DAC、麥克風(fēng)放大器和AGC電路等。 由于IDE自帶了很多有關(guān)語音錄放、語音識別的API函數(shù),所以采用61板來做聲控系統(tǒng)比擬方便。 第2章 系統(tǒng)總體設(shè)計(jì) 2.1系統(tǒng)功能模塊的劃分 按照設(shè)計(jì)要求,系統(tǒng)可以分為以下幾個根本功能模塊:遙控模塊、

25、顯示模塊、前輪轉(zhuǎn)向模塊、后輪驅(qū)動模塊、超聲測距避障模塊、尋找光源模塊、記錄與重放路線模塊、里程檢測模塊等。 有些模塊的功能是由硬件完成,有些模塊的功能由軟、硬件配合完成,有些模塊則是由軟件、硬件、機(jī)械三局部共同完成。 將系統(tǒng)拆分成以上的這些根本功能模塊后,再根據(jù)各個模塊所要完成的功能分別去設(shè)計(jì),也就是按照“逐步求精〞的思想去設(shè)計(jì)本系統(tǒng),這將使設(shè)計(jì)工作細(xì)化,也有助于制定進(jìn)度安排。 2.2單片機(jī)數(shù)目的選定 由于系統(tǒng)需要完成的功能較多,CPU的負(fù)荷也較重,再加之單片機(jī)的定時器/計(jì)數(shù)器、中斷、I/O口等資源有限,如果選用一片單片機(jī)必將會給系統(tǒng)的設(shè)計(jì)帶來一些困難。所以可以考慮采用兩個單片機(jī)構(gòu)成主

26、從式的構(gòu)造,各分擔(dān)一局部控制與運(yùn)算功能,這樣兩個單片機(jī)可同時工作。所謂主從式構(gòu)造是指從單片機(jī)片機(jī)根據(jù)主單片機(jī)發(fā)出的命令來完成*項(xiàng)功能,并且把結(jié)果報(bào)告給主單片機(jī),這樣的構(gòu)造在*種程度上可以簡化系統(tǒng)。 主單片機(jī)負(fù)責(zé)紅外遙控接收、顯示、小車的運(yùn)動以及處理遙控命令等功能;從單片機(jī)則主要負(fù)責(zé)超聲測距、檢測光源方位這兩項(xiàng)比擬費(fèi)時的功能,在探測到障礙或探測到光源時將有關(guān)信息報(bào)告給主單片機(jī)進(jìn)展處理,并由主單片機(jī)來采取相應(yīng)的措施。 本設(shè)計(jì)中采用了兩片AT89C52單片機(jī),通過串行接口通信。因?yàn)閮蓚€單片機(jī)之間的距離很近,所以串行口可以工作在較高的波特率上,可以讓串行口工作在方式2,其特點(diǎn)是其波特率高,并且波特

27、率可以直接從晶振32分頻、或64分頻而得到,不需要占用定時器資源。 2.3系統(tǒng)原理框圖 系統(tǒng)原理框圖如圖2.1所示: 按鍵 主控單片機(jī) 從單片機(jī) 遙控接收 顯示模塊 里程檢測 路線記錄 漏粉控制 前輪轉(zhuǎn)向 超聲探測障礙 光源方向探測 后輪驅(qū)動 串行通信 遙控發(fā)射 語音識別 圖2.1 系統(tǒng)原理框圖 2.4系統(tǒng)軟件主要特色 軟件在一個智能系統(tǒng)中扮演著舉足輕重的作用,軟件設(shè)計(jì)的好壞直接關(guān)系著整個系統(tǒng)的性能。目前已經(jīng)有很多種嵌入式實(shí)時多任務(wù)操作系統(tǒng),如:Linu*、RT*51及UC/OS等,可以更有效的利用系統(tǒng)的各種資源,簡化編程,縮短開發(fā)周期。

28、簽于本系統(tǒng)采用AT89C52單片機(jī)為控制器,本身的各種資源都很有限,引入一個操作系統(tǒng)代價太大,所以考慮直接來優(yōu)化系統(tǒng)的軟件構(gòu)造,同樣可以到達(dá)“多任務(wù)〞、“實(shí)時〞等要求。 軟件分層構(gòu)造 為了便于編程,將邏輯控制層和具體的硬件相別離開是很有必要的。硬件驅(qū)動層的軟件負(fù)責(zé)直接操作硬件,并且給上層的軟件提供一定的接口,這樣有助于上層的軟件實(shí)現(xiàn)更復(fù)雜的功能,并且系統(tǒng)的硬件有所改動時也只需改動相應(yīng)的驅(qū)動模塊即可。 邏輯控制層 硬件驅(qū)動層 硬件設(shè)備 置、取全局變量 圖2.2 軟件分層構(gòu)造示意圖 操作硬件 本系統(tǒng)中的LED顯示模塊、前輪轉(zhuǎn)向模塊、后輪驅(qū)動模塊、AT24C08存取模塊、尋光源轉(zhuǎn)動

29、機(jī)構(gòu)都做成了一些獨(dú)立的模塊,并且給外部提供了一些接口函數(shù),來實(shí)現(xiàn)對這些硬件或機(jī)械部件的高級操作。 分層構(gòu)造如圖2.2所示: 軟件的分層構(gòu)造是很多系統(tǒng)中普遍采用的一種軟件構(gòu)造,比方TCP/IP協(xié)議就是一種典型的分層構(gòu)造。WINDOWS、LINU*等系統(tǒng)中也幾乎把所有的系統(tǒng)硬件進(jìn)展了抽象,這樣上層的軟件就不必關(guān)心硬件的細(xì)節(jié),可以調(diào)用相應(yīng)的模塊提供的效勞即可,這樣可把更多的精力放在高級功能的實(shí)現(xiàn)上。 多任務(wù)構(gòu)造 為了充分利用單片機(jī)的CPU,存等資源,本系統(tǒng)中引入了多任務(wù)的軟件構(gòu)造,即從宏觀上來看單片機(jī)同時在做多件事情。分析一般的多任務(wù)系統(tǒng)的軟件構(gòu)造,系統(tǒng)的核心是任務(wù)調(diào)度器,在適當(dāng)?shù)臅r候任務(wù)調(diào)

30、度器將保存當(dāng)前任務(wù)的現(xiàn)場,并且恢復(fù)將要運(yùn)行的任務(wù)的現(xiàn)場,并讓其投入運(yùn)行。簡單的說,一般的多任務(wù)系統(tǒng)是任務(wù)調(diào)度器循環(huán)的調(diào)用各個需要執(zhí)行的任務(wù),進(jìn)而可以更有效的利用系統(tǒng)的各種資源。從這里得到啟發(fā),可以用定時器每隔一定的時間中斷一次,在中斷處理函數(shù)中依次調(diào)用一次各個任務(wù)所對應(yīng)的函數(shù),并且各個函數(shù)都能在一個較短的時間返回,這樣在*段時間,各個任務(wù)所對應(yīng)的函數(shù)都能夠被執(zhí)行到,就好似多個任務(wù)同時運(yùn)行了。還有一點(diǎn)需要說明,就是各個任務(wù)是由一些函數(shù)和一些靜態(tài)變量組成。函數(shù)由定時器中斷處理函數(shù)定期的調(diào)用一次,并且有個前提就是這個函數(shù)能夠在較短的時間返回,否則其他任務(wù)將不能及時的被調(diào)用到,也就達(dá)不到“實(shí)時〞這一要

31、求。靜態(tài)變量保存該任務(wù)的各種狀態(tài),并且其他模塊和該系統(tǒng)復(fù)位 初始化 主任務(wù)設(shè)計(jì)成無限循環(huán)構(gòu)造 定時器0中斷處理函數(shù) 任務(wù)1 任務(wù)2 任務(wù)3 任務(wù)n 圖2.3 多任務(wù)構(gòu)造示意圖 任務(wù)進(jìn)展通信也是通過置取這些靜態(tài)變量來實(shí)現(xiàn)的。 本系統(tǒng)中軟件的多任務(wù)構(gòu)造如圖2.3所示: 可以說定時器中斷處理函數(shù)就是本設(shè)計(jì)中多任務(wù)的核心,即任務(wù)調(diào)度器。以下是定時器0中斷處理函數(shù)的程序清單: ///////////////////////////////////////////////////// //定時器0中斷處理函數(shù) //每4毫秒中斷一次 //產(chǎn)生時鐘節(jié)拍 //負(fù)責(zé)維護(hù)一個系統(tǒng)時間

32、變量和任務(wù)調(diào)度 ///////////////////////////////////////////////////// *define TIME_OVERLOAD 3960 //定時器計(jì)數(shù)初值 //記錄時間的構(gòu)造的定義 typedef struct { uchar t_ms; //毫秒數(shù)0-99 uchar t_100ms; //100毫秒數(shù)0-9 uchar t_sec; //秒數(shù)0-59 uchar t_min; //分鐘數(shù),0-255 }TIME; TIME time; //記錄系統(tǒng)時間的

33、全局變量 void timer0(void) interrupt 1 { //重裝定時器0的計(jì)數(shù)初值 TH0=(65536-TIME_OVERLOAD)/256; TL0=(65536-TIME_OVERLOAD)%256; //維護(hù)系統(tǒng)時間 time.t_ms+=4; if(time.t_ms>99) { time.t_ms=0; if(++time.t_100ms>9)

34、 { time.t_100ms=0; if(++time.t_sec>59) { time.t_sec=0; time.t_min++; } } } //大約每50毫秒調(diào)用一次蜂鳴器

35、任務(wù) //并且只有在需要發(fā)聲時才調(diào)用 //n_beep全局變量表示需要發(fā)出幾聲 if((n_beep)&&(!(time.t_ms%52)))beep2(); //每4毫秒調(diào)用一次顯示任務(wù) led_disp(); //每16毫秒調(diào)用一次后輪直流電機(jī)驅(qū)動程序 if(!(time.t_ms&0*0f))dianji(); //每32毫秒調(diào)用一次里程檢測任務(wù) if(!(time.t_ms&0*1f))licheng(); //每16ms調(diào)用一次前輪轉(zhuǎn)向電機(jī)驅(qū)動函數(shù) if(!(time.t_ms&0*0

36、f))gw_dianji(); } 以上的這段程序代碼就是實(shí)現(xiàn)了任務(wù)的調(diào)度,和一般的多任務(wù)系統(tǒng)相比擬有幾點(diǎn)不同: (1) 任務(wù)之間的切換是通過函數(shù)的調(diào)用與返回實(shí)現(xiàn)的,當(dāng)以上的這幾個任務(wù)全調(diào)用一次之后將進(jìn)入主任務(wù)執(zhí)行,主任務(wù)即main()函數(shù)所對應(yīng)的任務(wù)。 (2) 相應(yīng)的任務(wù)上、下文的保存與恢復(fù)也不是由任務(wù)調(diào)度器實(shí)現(xiàn)的,而是由C語言編譯器在函數(shù)調(diào)用時自動保存與恢復(fù)了主任務(wù)的上、下文;其他的任務(wù)不用保存上、下文,每次進(jìn)入執(zhí)行都是從相應(yīng)函數(shù)的第一行開場,存放器值也不用保存。 總之,采用以上這種軟件構(gòu)造,也可以實(shí)現(xiàn)多個任務(wù)并發(fā)運(yùn)行,在timer0()函數(shù)中可以加進(jìn)更多的任務(wù),只要各個任

37、務(wù)都能在一個較段的時間執(zhí)行一次并返回到timer0()函數(shù)中就可以。此外,關(guān)于RAM的分配是在編譯的時候完成的,各個任務(wù)一般要用一些全局的靜態(tài)變量來標(biāo)識自身狀態(tài)。 在主控單片機(jī)上有以下幾個任務(wù): (1) 主任務(wù):main()開場的任務(wù),很多功能都要在該任務(wù)中完成; (2) 蜂鳴器發(fā)聲任務(wù):beep2(),全局變量n_beep表示需要發(fā)出幾個“嘀〞聲; (3) LED顯示任務(wù):led_disp(),LED數(shù)碼管和LED發(fā)光二極管顯示任務(wù); (4) 后輪電機(jī)驅(qū)動任務(wù):dianji(),目前只實(shí)現(xiàn)了電機(jī)的正、反轉(zhuǎn)和停頓功能,以后可以在該任務(wù)中參加PWM調(diào)速功能; (5) 前輪轉(zhuǎn)向任務(wù):g

38、w_dianji(),控制步進(jìn)電機(jī)讓前輪轉(zhuǎn)到指定的角度; (6) 里程檢測任務(wù):licheng(),檢測小車的行駛里程。 在從單片機(jī)上有四個任務(wù): (1) 尋找光源方向任務(wù):該任務(wù)作為從單片機(jī)的背景任務(wù),由main()函數(shù)調(diào)用,然后一直循環(huán)的執(zhí)行; (2) 前超聲測障任務(wù):chaosheng_qian(),由從單片機(jī)的定時器中斷處理函數(shù)timer0()每隔64毫秒調(diào)用一次; (3) 后超聲測障任務(wù):chaosheng_hou(),每64毫秒調(diào)用一次,和chaosheng_qian()的調(diào)用相差32毫秒; (4) 旋轉(zhuǎn)機(jī)構(gòu)轉(zhuǎn)動任務(wù):driver_dianji(),將尋找光源方向的轉(zhuǎn)

39、動機(jī)構(gòu)旋轉(zhuǎn)到指定的角度。 消息驅(qū)動構(gòu)造 考慮到系統(tǒng)中無論是操作者按下一個按鍵,還是遇到障礙或是尋找到光源,這些事件都有一個共同點(diǎn),就是系統(tǒng)要對這些事件做出相應(yīng)的處理或采取相應(yīng)的措施。所以為了簡化編程,讓這些事件在主任務(wù)中能得到統(tǒng)一的處理,可以給這些事件編上號,然后由一個消息搜集模塊去等待各種消息。一旦*個事件發(fā)生,該模塊馬上給主任務(wù)返回該事件的編號,即消息值,讓主任務(wù)按照消息值分類去處理消息。 在消息搜集模塊的頭文件中定義了如下假設(shè)干個消息: //消息的構(gòu)造為:高三位,消息分類碼,可以加快消息處理的速 //度;低五位,消息值。 *define NULL 0 //按鍵消息的定義

40、*define MSG_K_QIAN 0*01 //“前進(jìn)〞按鍵消息 *define MSG_K_HOU 0*02 //“后退〞按鍵消息 *define MSG_K_ZUO 0*03 //“左轉(zhuǎn)〞按鍵消息 *define MSG_K_YOU 0*04 //“右轉(zhuǎn)〞按鍵消息 *define MSG_K_TING 0*05 //“停頓〞按鍵消息 *define MSG_K_MODE 0*06 //“模式選擇〞按鍵消息 *define MSG_K_FEN 0*07 //“漏粉〞按鍵消息 *define MSG_K_REC 0*08 //“記錄路線〞按鍵消息 *defi

41、ne MSG_K_DISPMODE 0*09 //“顯示切換〞按鍵消息 //超聲避障消息 *define MSG_QIANZHANG 0*14 //前方出現(xiàn)障礙消息 *define MSG_HOUZHANG 0*15 //前方出現(xiàn)障礙消息 *define MSG_NOQIANZHANG 0*16 //前方障礙消失消息 *define MSG_NOHOUZHANG 0*17 //前方障礙消失消息 //光源消息 *define MSG_NOTFOUND 0*28 //沒有發(fā)現(xiàn)光源消息 *define MSG_FOUND 0*29 //發(fā)現(xiàn)光源消息 //主從機(jī)之間的控

42、制消息 *define MSG_BEGINFIND 0*31 //開場尋找光源命令消息 *define MSG_ENDFIND 0*32 //停頓尋找光源消息 e*tern uchar getmsg(void); e*tern uchar imgetch(void); 消息搜集模塊對外提供了兩個接口函數(shù):getmsg()函數(shù)一直等待到有消息時返回消息值;imgetch()函數(shù)立即返回按鍵值,這是為了*些地方使用上的靈活而設(shè)置的。 有了這個消息搜集模塊后,主任務(wù)執(zhí)行的大局部時間就會停留在getmsg()函數(shù)等待消息,當(dāng)有按鍵命令或遇到障礙時返回消息值,主任務(wù)對其進(jìn)展相應(yīng)的處理。

43、 主任務(wù)處理消息可以設(shè)計(jì)成如下構(gòu)造: while(1) //消息循環(huán) { switch(getmsg()) //消息分類處理 { case MSG_K_QIAN: //“前進(jìn)〞按鍵消息處理 … break; case MSG_K_HOU: //“后退〞按鍵消息處理 … break; case … } } 2.5本章小結(jié) 本章將系統(tǒng)拆分成了假設(shè)干個功能模塊,并且采用兩個AT89C52單片機(jī)來各分擔(dān)一局部功能。在軟件方面通過對構(gòu)造

44、的特殊設(shè)計(jì),根本上實(shí)現(xiàn)了多任務(wù)并發(fā)運(yùn)行,并且通過軟件的分層構(gòu)造將功能實(shí)現(xiàn)和具體的硬件別離開,再加上消息驅(qū)動的構(gòu)造,這將給后續(xù)的各模塊軟件的設(shè)計(jì)帶來方便。 第3章 各模塊的詳細(xì)設(shè)計(jì) 3.1 紅外遙控模塊的設(shè)計(jì) 遙控模塊的功能需求 遙控模塊采用紅外遙控方式,因?yàn)椴捎眉t外遙控抗干擾能力強(qiáng),且不會對周圍的無線電設(shè)備產(chǎn)生干擾電波,接口簡單;但是紅外方式遙控的距離比擬有限,一般在幾米之。鑒于本設(shè)計(jì)不需要遠(yuǎn)距離遙控,所以綜合考慮之下采用紅外遙控較為適宜。 本設(shè)計(jì)中要求能用遙控器控制小車的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停頓、記錄路線、尋找光源等很多種功能;遙控距離在幾米之即可;并且要在遙控發(fā)射模塊參加語

45、音識別模塊,能夠?qū)崿F(xiàn)聲控功能。 編解碼芯片的選型 由于在遙控端的按鍵數(shù)目有多個,而紅外通道傳輸?shù)闹荒苁怯?、1組成的串行代碼,所以需要在發(fā)射端對按鍵進(jìn)展“并-串〞編碼,在接收端相應(yīng)的要進(jìn)展“串-并〞解碼。碼的波特率在收、發(fā)兩端應(yīng)該是一致的。 方案一,使用MC145026、MC145027編解碼芯片,其特殊的編碼方式保證了信息的可靠傳輸,但是外圍器件參數(shù)的選定較為煩瑣,并且不能利用到其所提供的地址功能,也就是說傳輸?shù)男畔?dāng)中地址碼局部是多余的,這就降低了信道的利用率。 方案二,采用瑞昱公司生產(chǎn)的專用于遙控車模的CMOS大規(guī)模集成電路T*-2/R*-2,該編解碼芯片具有5種控制功能,使用

46、方便,所以本設(shè)計(jì)中采用了該方案。 遙控模塊原理圖 遙控模塊發(fā)送局部原理如圖3.1所示。T*-2的11腳和12腳之間接的電阻決定振蕩頻率;3腳接地;10腳接3-5V電源;14腳、1腳、4腳、5腳、6腳分別為5路發(fā)射控制端;9腳為發(fā)射指示端,當(dāng)有按鍵按下時LED1發(fā)光提示;7腳為帶載波的編碼信號輸出端,即編碼信號已經(jīng)調(diào)制到38KHZ的載波上,該腳的信號通過一個NPN型三極管放大后可直接驅(qū)動紅外發(fā)射二極管發(fā)射信號;8腳為不帶載波的編碼信號輸出端。 圖3.1 遙控發(fā)射原理圖 遙控發(fā)射端按鍵數(shù)目的擴(kuò)展 圖3.2 遙控接收電路圖 遙控接收電路如圖3.2所示。R*-2的4腳和5腳之間接的

47、電阻阻值要和T*-2的11腳、12腳間的電阻阻值接近,相差在20%之方可正確的解碼,本設(shè)計(jì)中這兩個電阻都選用150KΩ;2腳接地;13腳接3-5V電源;3腳接輸入信號,由一體化紅外接收頭1838輸出的信號需要加一個反向器才是正確的編碼信號;6腳、7腳、10腳、11腳、12腳為5路遙控命令的輸出端,分別和T*-2的5路輸入端的狀態(tài)相對應(yīng)。 另外,為了方便操作,將T*-2的5路功能擴(kuò)展成9功能,即在遙控發(fā)射端可以接9個按鍵。這是通過對原先的5路輸入進(jìn)展組合得到的。 遙控電路與語音識別模塊的連接 語音識別模塊采用凌陽61板,可以將SPCE061A單片機(jī)的輸出引腳直接接到T*-2的輸入端,與按

48、鍵實(shí)現(xiàn)“線與〞功能,這樣遙控發(fā)射端的按鍵和凌陽單片機(jī)都可以通過遙控電路給小車發(fā)送命令。 3.2 數(shù)碼管、發(fā)光二極管顯示模塊的設(shè)計(jì) 多位數(shù)碼管掃描顯示原理 圖3.3 LED數(shù)碼管構(gòu)造 LED數(shù)碼管是常用的顯示器件,數(shù)碼管的構(gòu)造如圖3.3所示。每一段相當(dāng)于一個發(fā)光二極管,各個發(fā)光二極管的陽極或陰極接在一起,分別稱作共陽極數(shù)碼管和共陰極數(shù)碼管。本設(shè)計(jì)中采用的是共陰極數(shù)碼管。 對于多個數(shù)碼管的顯示,有靜態(tài)方式和動態(tài)掃描方式。本設(shè)計(jì)中用了4個共陰極數(shù)碼管,并采用動態(tài)掃描方式顯示。掃描顯示的原理是將各個數(shù)碼管的段碼端口分別并聯(lián)在一起,由位選端口輪流選通各個數(shù)碼管,并讓每個數(shù)碼管分別顯示幾毫秒,

49、由于人眼的視覺慣性,看到的將是多個數(shù)碼管同時在顯示。 工作狀態(tài)指示燈及轉(zhuǎn)向燈的設(shè)計(jì) 為了直觀的顯示出小車的各種狀態(tài),設(shè)計(jì)了假設(shè)干發(fā)光二極管指示燈,有模式指示燈、漏粉指示燈、記錄行駛路線指示燈、障礙指示燈、轉(zhuǎn)向指示燈、倒車指示燈。 顯示模塊電原理圖 顯示模塊原理如圖3.4所示: 圖3.4 顯示模塊原理圖 顯示任務(wù)由主單片機(jī)完成。P0.0和P0.1分別接到74LS164的串行數(shù)據(jù)輸入端和移位脈沖端,產(chǎn)生數(shù)碼管選通信號。P0.2接到74LS273的時鐘端,鎖存P2口給出的段碼數(shù)據(jù)。在完成鎖存后由P2口直接驅(qū)動8個LED發(fā)光二極管,作為小車的狀態(tài)指示。為了在74LS273鎖存數(shù)據(jù)時

50、防止?fàn)顟B(tài)指示燈的閃爍,用P1.2控制狀態(tài)指示燈的選通。在74LS273鎖存數(shù)據(jù)期間P1.2置高電平,全部熄滅狀態(tài)指示燈;在鎖存完畢后,P2口給出正確的電平后再置P1.2低電平。同樣在4個數(shù)碼管掃描顯示的過程中也應(yīng)防止數(shù)碼管的閃爍。 顯示任務(wù)的軟件設(shè)計(jì) 數(shù)碼管的掃描顯示和狀態(tài)指示燈的顯示流程如圖3.5所示。由定時器0中斷處理函數(shù)timer0()每隔4毫秒調(diào)用一次。這樣每個數(shù)碼管輪流顯示4毫秒,掃描一遍共需16毫秒,也就是閃爍的頻率大概是60Hz,人眼看到的就是4個數(shù)碼管同時在顯示了。 返回 熄滅狀態(tài)指示燈 顯示模式是. 顯示緩沖區(qū)置成時間 顯示緩沖區(qū)置成里程 數(shù)碼管段碼置成0,

51、消除移位時的閃爍 選通下一個數(shù)碼管 閃爍處理 鎖存段碼 顯示個狀態(tài)指示燈 時間模式 里程模式 用戶模式 圖3.5 顯示流程圖 3.3 聲音提示功能的設(shè)計(jì) 和狀態(tài)指示燈的設(shè)計(jì)目的一樣,給小車參加聲音提示功能也是為了更直觀地顯示各種狀態(tài)。在操作者通過遙控器給小車發(fā)出命令后,蜂鳴器將響一聲,及時的提示操作者已經(jīng)收到命令。這是挺有必要的,因?yàn)榧t外遙控方式并不是很可靠,有時操作者發(fā)出的遙控命令小車可能是收不到的,因此操作者幾乎處于“盲操作〞狀態(tài)。參加了聲音提示功能后,小車有沒有接收到遙控命令很容易就能知道了。此外,當(dāng)小車遇到障礙時也會給出聲音報(bào)警信號。 本設(shè)計(jì)中所采用的蜂鳴器使

52、用很簡便,只需給其正負(fù)端加上5V左右的電壓就能夠發(fā)出聲音,在其部已經(jīng)含有一個振蕩電路。工作電流大約10mA,因此可以用P0口的*一位直接驅(qū)動。 聲音提示功能被設(shè)計(jì)成一個單獨(dú)的任務(wù),原因是為了能讓蜂鳴器響假設(shè)干聲,而同時單片機(jī)又能做其他的事情。其他模塊通過beep(n)函數(shù)設(shè)置靜態(tài)變量n_beep,告訴聲音提示模塊需要響n聲,大約50毫秒響一聲后自動會將n_beep減去1,一直減到0后不再發(fā)聲。 圖3.6 遮擋校準(zhǔn)方案 3.4 前輪轉(zhuǎn)向模塊的設(shè)計(jì) 前輪轉(zhuǎn)向的機(jī)械構(gòu)造設(shè)計(jì) 前輪的機(jī)械構(gòu)造如圖3.6所示。通過步進(jìn)電機(jī)來控制前輪轉(zhuǎn)到一定的角度,并且采用了一個遮擋型的紅外對管來檢測轉(zhuǎn)向的中點(diǎn)

53、,以便在開機(jī)時能自動找到轉(zhuǎn)向的中點(diǎn)。而且在一定程度上可以校準(zhǔn)由步進(jìn)電機(jī)的失步帶來的角度誤差。 前輪轉(zhuǎn)向中點(diǎn)校準(zhǔn)功能的設(shè)計(jì) 圖3.7 紅外對管檢測電路 如圖3.7所示,在紅外發(fā)射管和接收管之間無遮擋時,電壓比擬器輸出低電平;當(dāng)之間有遮擋時,電壓比擬器輸出高電平。當(dāng)前輪轉(zhuǎn)到中點(diǎn)時,細(xì)桿正好能遮擋住紅外對管,此時電壓比擬器輸出一個高電平;當(dāng)前輪偏離中點(diǎn)時,輸出低電平。 步進(jìn)電機(jī)驅(qū)動芯片 本設(shè)計(jì)中前輪的轉(zhuǎn)向電機(jī)是從廢棄的軟驅(qū)上拆卸下來的步進(jìn)電機(jī),體積小、性能好、使用方便,并且有專門的驅(qū)動芯片。驅(qū)動芯片引腳如圖3.8所示,輸入、輸出信號如圖3.9所示。當(dāng)控制信號的周期為40Hz左右時,步進(jìn)

54、電機(jī)工作在最正確狀態(tài)。 前輪轉(zhuǎn)向任務(wù)的軟件設(shè)計(jì) 前輪轉(zhuǎn)向設(shè)計(jì)成一個單獨(dú)的任務(wù),由定時器0中斷處理函數(shù)每16毫秒調(diào)用一次。其他模塊可以調(diào)用函數(shù)setdegree()設(shè)置需要轉(zhuǎn)到的角度,然后由轉(zhuǎn)向任務(wù)負(fù)責(zé)轉(zhuǎn)到所指定的角度,在轉(zhuǎn)向期間,單片機(jī)可以做其他的事情;其他模塊還可以調(diào)用getnowdegree()取得當(dāng)前轉(zhuǎn)到的角度。 圖3.8 步進(jìn)電機(jī)驅(qū)動芯片 A ā B B A-CH in B-CH in 圖3.9 步進(jìn)電機(jī)控制時序 3.5 后輪驅(qū)動模塊的設(shè)計(jì) 直流電機(jī)驅(qū)動芯片L298N 后輪采用直流電機(jī)來驅(qū)動,和步進(jìn)電機(jī)相比擬直流電機(jī)驅(qū)動力大,電源利用率高。因?yàn)橹绷麟姍C(jī)

55、的轉(zhuǎn)速很高,所以必須參加齒輪箱進(jìn)展減速,減速后驅(qū)動力變大,轉(zhuǎn)速降低。小車的行駛速度大概在20cm/s左右。 為了控制直流電機(jī)的正反轉(zhuǎn)來實(shí)現(xiàn)小車的前進(jìn)和后退,采用了直流電機(jī)驅(qū)動芯片L298N,引腳連接如圖3.10所示。前進(jìn)時5腳輸入方波占空比為100%〔即持續(xù)高電平〕,7腳為低電平;后退時5腳為低電平,7腳輸入方波占空比為100%。另外,改變方波的占空比可以實(shí)現(xiàn)對直流電機(jī)的調(diào)速,由于本設(shè)計(jì)中小車速度已調(diào)整到較低水平,所以無需再調(diào)速。 100nF 100nF 圖3.10 直流電機(jī)驅(qū)動芯片L298N 后輪驅(qū)動任務(wù)的軟件設(shè)計(jì) 本設(shè)計(jì)中只需控制后輪的正、反轉(zhuǎn),無需調(diào)速,所以后輪驅(qū)動模塊

56、的設(shè)計(jì)要比前輪轉(zhuǎn)向模塊簡單很多,并且不建立后輪驅(qū)動任務(wù)也能實(shí)現(xiàn),因?yàn)橹恍枰诟淖冃≤嚨男羞M(jìn)狀態(tài)的時候改變單片機(jī)和L298N相連的I/O口電平狀態(tài)即可。而本設(shè)計(jì)中將后輪驅(qū)動模塊也設(shè)計(jì)成一個單獨(dú)的任務(wù)是考慮到以后功能擴(kuò)展的方便。以后可以通過PWM方式對后輪直流電機(jī)進(jìn)展調(diào)速,那就必須把后輪驅(qū)動模塊設(shè)計(jì)成一個單獨(dú)任務(wù)了。 目前本模塊對其他模塊主要提供了以下幾個接口函數(shù)。 setspeed(n),n>0時,小車前進(jìn);n<0時,小車后退;n=0時,小車停頓。 getspeed(),前進(jìn)時返回1;后退時返回-1;停頓時返回0。 imstop(),該函數(shù)實(shí)現(xiàn)反電動勢剎車功能。 3.6 里程檢測模塊的

57、設(shè)計(jì) 探頭的選型與安裝 可以用這樣的思路來設(shè)計(jì)里程檢測模塊,在車軸上安裝一個圓盤,圓盤上均勻的開一些缺口,如圖3.11所示: 圖3.11 里程檢測遮光圓盤的設(shè)計(jì) 車輪每轉(zhuǎn)過一圈圓盤將把紅外對管遮擋4次,小車勻速行駛時檢測電路輸出占空比為50%的方波。檢測電路如圖3.7所示。 軟件消抖與硬件消抖的比擬 從檢測電路輸出的方波在其上升和下降沿處是不穩(wěn)定的,有抖動,統(tǒng)計(jì)里程的原理是檢測上升和下降沿的個數(shù),抖動必將引起里程統(tǒng)計(jì)的誤差,因此要考慮消抖。 消抖的方法有多種,用硬件電路可以實(shí)現(xiàn)消抖功能,例如加一級施密特觸發(fā)器或加一級單穩(wěn)態(tài)觸發(fā)器都可以在一定程度上消除抖動。硬件消抖后的信號

58、可以直接接到單片機(jī)的計(jì)數(shù)器引腳,利用單片機(jī)部的計(jì)數(shù)器來統(tǒng)計(jì)里程,但這樣的方法硬件代價比擬大,而且需要使用單片機(jī)的計(jì)數(shù)器或中斷才能實(shí)現(xiàn)。所以考慮用軟件的方法來消除抖動。 圖3.12 軟件消抖示意圖 軟件消抖的思路是每隔T1對原信號采樣一次,假設(shè)抖動的時間寬度為T2,高、低電平的寬度為T,則只要滿足T2

59、每隔32毫秒調(diào)用一次,也就是說采樣的時間間隔為32毫秒,這根本上能夠滿足T2

60、函數(shù)。 由于記錄里程值的變量是unsigned int型,所以表示的里程值圍為:0-65535(沿個數(shù)),大約是1366米,對于本設(shè)計(jì)而言,這個圍是足夠了。 3.7 超聲測距模塊的設(shè)計(jì) 超聲測距的理論依據(jù) 發(fā)射傳感器 接收傳感器 超聲波 回波 障礙 直接耦合 圖3.12 超聲測距原理圖 超聲測距的依據(jù)是超聲波在空氣中以一定的速度ν傳播,遇到障礙后聲波反射回來,被超聲波接收傳感器檢測到,根據(jù)發(fā)射和接收到回波之間的時間差t就可以計(jì)算出障礙的距離,計(jì)算公式是:S=ν·t/2。 超聲發(fā)射電路 發(fā)射電路要求能給出40KHz的方波,可以由硬件電路振蕩產(chǎn)生,也可以用軟件產(chǎn)生

61、,本設(shè)計(jì)中采用軟件產(chǎn)生的方式。將*個I/O口置成1后執(zhí)行12個空指令,再將這個I/O口置成0后執(zhí)行9個空指令,加上循環(huán)構(gòu)造需要兩個時鐘周期正好是25個時鐘周期,采用12MHZ的晶振對應(yīng)25微秒。每次發(fā)10個周期的超聲波。 圖3.13 超聲發(fā)射電路 由于本設(shè)計(jì)中超聲探測的距離不需要太遠(yuǎn),所以可以用單片機(jī)的P0口*一位接220Ω的上拉電阻后直接來驅(qū)動超聲發(fā)射傳感器。 超聲發(fā)射電路如圖3.13所示: 本設(shè)計(jì)中共有兩路超聲波傳感器,一路探測前方是否有障礙,一路探測前方是否有障礙。為了工作時互不干擾,采取分時工作的方式。 超聲接收電路 超聲接收電路如圖3.14所示: 前后兩個超聲波接收傳

62、感器共用一個接收電路,因?yàn)榍昂髢陕肥欠謺r工作的,所以并不會引起混淆。 在接收回波時要注意一點(diǎn),應(yīng)該消除超聲發(fā)射和接收傳感器之間的直接耦合,這可以在每次發(fā)射完一個超聲波束后設(shè)置一個時間門的方法來消除。 開中斷 有回波. 關(guān)中斷 發(fā)射超聲波束 延時0.5毫秒 開中斷 超時. 發(fā)送“有障礙〞消息 發(fā)送“無障礙〞消息 返回 Y N Y N 圖3.15 超聲探測流程圖 圖3.14 超聲接收電路 超聲測距任務(wù)的軟件設(shè)計(jì) 超聲測距任務(wù)放在從單片機(jī)上,由兩個任務(wù)組成:前超聲測距任務(wù)和后超聲測距任務(wù)。分別由從單片機(jī)的定時器0中斷處理函數(shù)每隔64毫秒調(diào)用一次,且前后超聲測距

63、任務(wù)的調(diào)用之間相差32毫秒。 以前超聲測距任務(wù)為例,其軟件流程圖如圖3.15所示: 當(dāng)探測到前〔后〕方有障礙時從單片機(jī)就通過串口通信報(bào)告主單片機(jī)前(后)方有障礙。主單片機(jī)再采取相應(yīng)措施。 本模塊將障礙檢測的距離限定在30厘米以,因?yàn)樘h(yuǎn)的地方有無障礙意義不大。 3.8 光源方向探測模塊的設(shè)計(jì) 該模塊由一個步進(jìn)電機(jī)帶動的轉(zhuǎn)動機(jī)構(gòu)、感光電阻和一個亮度檢測電路組成。 旋轉(zhuǎn)機(jī)構(gòu)設(shè)計(jì) 旋轉(zhuǎn)機(jī)構(gòu)由一個步進(jìn)電機(jī)帶動,該電機(jī)和前輪轉(zhuǎn)向電機(jī)一樣,驅(qū)動程序也差不多,因此本節(jié)對其驅(qū)動程序?qū)⒉蛔鲞^多介紹。 圖3.16 旋轉(zhuǎn)機(jī)構(gòu)構(gòu)造圖 旋轉(zhuǎn)機(jī)構(gòu)如圖3.16所示: 步進(jìn)電機(jī)通過螺桿和齒輪咬合,螺桿轉(zhuǎn)

64、過一圈,齒輪轉(zhuǎn)過一個齒距,齒輪一周共有26個齒,所以齒輪和螺桿的轉(zhuǎn)速比是1:26。步進(jìn)電機(jī)最小可轉(zhuǎn)過1/20圈,所以齒輪帶動的轉(zhuǎn)動機(jī)構(gòu)最小可轉(zhuǎn)1/520圈,即大約0.7度,這個精度在本設(shè)計(jì)中是能夠滿足要求的。 旋轉(zhuǎn)機(jī)構(gòu)的上方是一個正方體的殼體,只有一個端面可以照射進(jìn)光使處于另一個端面的感光電阻阻值發(fā)生變化,由檢測電路檢測阻值的大小就能得到這個方向光的亮度。旋轉(zhuǎn)一周,測出各個方向光的亮度就能得到光源所處的方向。 亮度檢測電路的選型與設(shè)計(jì) 亮度檢測電路是通過檢測感光電阻阻值的大小來間接的得到該方向光照的強(qiáng)度。而對于阻值的檢測,一般要將阻值轉(zhuǎn)換成另外一種物理量,如電壓、電流、頻率等。 方案

65、一,可以將阻值轉(zhuǎn)換成電壓,然后用A/D變換器把電壓轉(zhuǎn)換成數(shù)字量,進(jìn)而得到亮度值。但這種方案需要A/D變換器,并且和單片機(jī)相連需要較多的口線。 方案二,用555芯片搭成一個振蕩電路,并且將感光電阻接入振蕩回路控制振蕩頻率,然后用軟件檢測一段時間脈沖的個數(shù)就可以得到頻率,進(jìn)而得到亮度值。這種方案和第一種方案相比,電路簡單、本錢降低、占用單片機(jī)口線減少,具有明顯的優(yōu)點(diǎn)。但是精度較差,假設(shè)想提高檢測精度,就需要延長檢測的時間或是提高555振蕩的頻率,振蕩頻率的提高,感光電阻連接線的分布參數(shù)影響將增大。 圖3.17 亮度檢測電路 方案三,針對方案二存在的問題,將電路作一些改動。將原來測單位時間脈沖

66、個數(shù)的方式變成只測一個脈沖寬度的方式。此時555振蕩器振蕩頻率可以大大降低,因此感光電阻可以直接接入振蕩回路。每個脈沖的寬度由感光電阻的阻值決定,調(diào)整在幾十微秒到幾百微秒之間。 方案三的原理如圖3.17所示,其中R表示感光電阻,在幾KΩ到幾百KΩ之間。為了增大亮度檢測的圍,在R上并聯(lián)一個30KΩ左右的電阻,相當(dāng)于對R的阻值進(jìn)展了壓縮。壓縮后輸出脈沖的寬度和感光電阻阻值的對數(shù)近似成正比。輸出為低電平期間,C通過R1放電,放電時間T1=R1C㏑2;輸出高電平期間,C充電,充電時間為T2=〔R//〔R2+R3〕+R1〕C㏑2。為了讓輸出低電平寬度為10微秒左右,高電平隨光照亮度而變,在幾十到幾百微秒,所以可以?。篟1=1KΩ,R=20KΩ固定電阻,R3=20KΩ可變電阻,C=10nF. 尋找光源方向任務(wù)的軟件設(shè)計(jì) 關(guān)中斷 定時器1初始化 等到低電平 啟動定時器 等到高電平 等到低電平 停頓計(jì)時 計(jì)算亮度 開中斷 返回亮度值 圖3.18 亮度檢測程序流程圖 尋找光源任務(wù)是從單片機(jī)上的主任務(wù)。主要功能是在接收到主單片機(jī)發(fā)出的“開場尋找光源〞命令后找到光源目前的方向,

展開閱讀全文
溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!