遙控小車(chē)設(shè)計(jì)
《遙控小車(chē)設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《遙控小車(chē)設(shè)計(jì)(95頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、- 學(xué) 號(hào)01081237 密 級(jí) 工程大學(xué)本科生畢業(yè)論文 遙控小汽車(chē)的設(shè)計(jì)研究 院(系)名稱(chēng):信息與通信工程學(xué)院 專(zhuān)業(yè)名稱(chēng):電子信息工程 學(xué)生:洪生 指導(dǎo)教師:付永慶 教授 2005年6月 . z - 工程大學(xué)本科生畢業(yè)論文 遙控小汽車(chē)的設(shè)計(jì)研究 院 (系):信息與通信工程學(xué)院 專(zhuān)業(yè):電子信息工程 **:01081237 學(xué)生:洪生 指導(dǎo)教師:付永慶 教授 2005年6月 摘 要 根據(jù)題目要求,本設(shè)計(jì)采用2片
2、AT89C52單片機(jī)構(gòu)成主從式的控制系統(tǒng),雙機(jī)采用串行口進(jìn)展通信。紅外遙控局部采用遙控車(chē)模專(zhuān)用編、解碼芯片T*-2/R*-2,提高控制的可靠性;同時(shí),在遙控發(fā)射端參加了用凌陽(yáng)61板做的語(yǔ)音識(shí)別系統(tǒng),能夠完成語(yǔ)音遙控功能。采用紅外傳感器進(jìn)展里程檢測(cè);超聲波傳感器進(jìn)展障礙識(shí)別;感光電阻輔以步進(jìn)電機(jī)控制的轉(zhuǎn)動(dòng)機(jī)構(gòu)進(jìn)展光源方向的檢測(cè),并能用軟件控制小車(chē)行駛到光源附近。采用步進(jìn)電機(jī)對(duì)小車(chē)的轉(zhuǎn)向進(jìn)展準(zhǔn)確的控制,同時(shí)用紅外傳感器對(duì)轉(zhuǎn)向的角度進(jìn)展校正。此外,采用四位LED數(shù)碼管和假設(shè)干LED發(fā)光二極管顯示時(shí)間、行進(jìn)的里程以及小車(chē)的各種狀態(tài);采用AT24C08串行EEPROM記錄小車(chē)的行駛軌跡,并能按照所記錄的
3、軌跡自動(dòng)行駛。 本次設(shè)計(jì)基于完備的軟硬件系統(tǒng),很好的實(shí)現(xiàn)了小車(chē)語(yǔ)音遙控、任意曲線行駛、路線記錄與重放、自動(dòng)查找光源、自動(dòng)避障,里程統(tǒng)計(jì)并發(fā)出指示信息等功能。 關(guān)鍵詞:?jiǎn)纹瑱C(jī);超聲波傳感器;紅外遙控;語(yǔ)音識(shí)別;凌陽(yáng)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 手動(dòng)控制功能…………………………………………2 自動(dòng)尋找光源功能……………………………………2 超聲避障功能…………………………………………2 記錄路線與重放路線功能……………………………2 聲控功能………………………………………………3 其他功能………………………………………………3 1.3MCS
8、-51系列單片機(jī)簡(jiǎn)介………………………………………3 1.4凌陽(yáng)SPCE061A精簡(jiǎn)開(kāi)發(fā)板簡(jiǎn)介………………………………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ū)動(dòng)構(gòu)造…………………………………………13 2.5本
9、章小結(jié)………………………………………………………15 第3章 各模塊的詳細(xì)設(shè)計(jì)…………………………………………16 3.1 紅外遙控模塊的設(shè)計(jì)…………………………………………16 遙控模塊的功能需求…………………………………16 編解碼芯片的選型……………………………………16 遙控模塊原理圖………………………………………16 遙控電路與語(yǔ)音識(shí)別模塊的連接……………………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ū)動(dòng)芯片……………………………………22 前輪轉(zhuǎn)向任務(wù)的軟件設(shè)計(jì)……………………………22 3.5 后輪驅(qū)動(dòng)模塊的設(shè)計(jì)…………………………………………24 直流電機(jī)驅(qū)動(dòng)芯片L298N……………………………24 后輪驅(qū)動(dòng)任務(wù)的軟件設(shè)計(jì)…………………………
11、…25 3.6 里程檢測(cè)模塊的設(shè)計(jì)…………………………………………25 探頭的選型與安裝……………………………………25 軟件消抖與硬件消抖的比擬…………………………26 里程檢測(cè)任務(wù)的軟件設(shè)計(jì)……………………………26 3.7 超聲測(cè)距模塊的設(shè)計(jì)…………………………………………27 超聲測(cè)距的理論依據(jù)…………………………………27 超聲發(fā)射電路…………………………………………27 超聲接收電路…………………………………………28 超聲測(cè)距任務(wù)的軟件設(shè)計(jì)……………………………29 3.8 光源方向探測(cè)模塊的設(shè)計(jì)……………………………………30 旋轉(zhuǎn)機(jī)構(gòu)設(shè)計(jì)
12、…………………………………………30 亮度檢測(cè)電路的選型與設(shè)計(jì)…………………………31 尋找光源方向任務(wù)的軟件設(shè)計(jì)………………………32 3.9 行駛路線的記錄與重放模塊的設(shè)計(jì)…………………………33 該模塊的功能概述……………………………………33 3.9.2 AT24C08串行EEPROM介紹……………………………33 存儲(chǔ)記錄的格式………………………………………33 手動(dòng)模式下記錄行駛路線功能的軟件設(shè)計(jì)…………33 重放行駛路線功能的軟件設(shè)計(jì)………………………34 3.10 雙機(jī)串行通信模塊的軟件設(shè)計(jì)……………………………35 通信方式的選型………………
13、……………………35 雙機(jī)串行通信的軟件設(shè)計(jì)…………………………35 3.11 語(yǔ)音識(shí)別功能的設(shè)計(jì)………………………………………36 凌陽(yáng)語(yǔ)音壓縮算法…………………………………37 語(yǔ)音識(shí)別模塊的軟件設(shè)計(jì)…………………………37 3.12 本章小結(jié)……………………………………………………37 第4章 系統(tǒng)軟件的設(shè)計(jì)……………………………………………39 4.1 單片機(jī)的C語(yǔ)言程序設(shè)計(jì)簡(jiǎn)介………………………………39 4.2 系統(tǒng)的三種工作模式…………………………………………39 4.3 手動(dòng)模式的設(shè)計(jì)………………………………………………40 4.4 自動(dòng)尋找光源模式的
14、設(shè)計(jì)……………………………………40 功能分析………………………………………………40 尋找光源的策略………………………………………41 自動(dòng)尋找光源的軟件設(shè)計(jì)……………………………41 該功能模塊存在的一些問(wèn)題…………………………41 4.5 走數(shù)字及路線重放模式的設(shè)計(jì)………………………………44 4.6 本章小結(jié)………………………………………………………44 第5章 系統(tǒng)的組裝、調(diào)試和測(cè)試…………………………………45 5.1 系統(tǒng)的組裝、調(diào)試……………………………………………45 5.2 遙控距離的測(cè)試………………………………………………45 5.3 時(shí)間顯示
15、功能的測(cè)試…………………………………………45 5.4 里程顯示功能的測(cè)試…………………………………………46 5.5 超聲測(cè)障礙功能的測(cè)試………………………………………46 5.6 走數(shù)字功能的測(cè)試……………………………………………46 5.7 行駛路線記錄與重放功能的測(cè)試……………………………47 5.8 自動(dòng)尋找光源功能的測(cè)試……………………………………47 5.9 語(yǔ)音識(shí)別功能的測(cè)試…………………………………………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)的智能化。無(wú)論是在工業(yè)控制領(lǐng)域、醫(yī)療衛(wèi)生領(lǐng)域、還是在國(guó)防軍事領(lǐng)域、航天航空領(lǐng)域,微控制器都起著舉足輕重的作用。從最初的8位控制器到現(xiàn)在的16位、32位控制器都還有很大的開(kāi)展和應(yīng)用空間
17、。 目前市場(chǎng)上已有很多種用超聲波傳感器制作的產(chǎn)品,在汽車(chē)電子領(lǐng)域,用超聲波傳感器做的倒車(chē)?yán)走_(dá)可以提高汽車(chē)行駛的平安性。對(duì)汽車(chē)駕駛員來(lái)說(shuō)車(chē)身前方是一個(gè)視線的“死區(qū)〞,倒車(chē)時(shí)得非常小心,倒車(chē)?yán)走_(dá)的出現(xiàn)就解決了這一問(wèn)題,當(dāng)車(chē)身前方有障礙時(shí)能及時(shí)發(fā)出警告。 語(yǔ)音識(shí)別技術(shù)也日趨完善,在機(jī)器人領(lǐng)域,要想用語(yǔ)言和機(jī)器人“交談〞,首先就要解決語(yǔ)音的識(shí)別問(wèn)題??梢杂谜Z(yǔ)音識(shí)別技術(shù)做成聲控?fù)芴?hào)、聲控家電、兒童玩具等。語(yǔ)音識(shí)別技術(shù)還有待于進(jìn)一步的開(kāi)展。本設(shè)計(jì)中采用凌陽(yáng)61板做的聲控系統(tǒng)可以用語(yǔ)音控制小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停頓。 1.2 設(shè)計(jì)要求及主要功能介紹 根據(jù)題目要求,本設(shè)計(jì)需要完成的以下幾項(xiàng)功能
18、: 〔1〕紅外遙控功能,啟停、自動(dòng)或手動(dòng); 〔2〕前或后直線行進(jìn); 〔3〕任意曲線行進(jìn); 〔4〕測(cè)距避障功能; 〔5〕顯示行進(jìn)距離; 〔6〕準(zhǔn)確查找光源。 另外,在設(shè)計(jì)過(guò)程中又?jǐn)U展了一些功能,比方聲控功能、記錄與重放行駛路線功能等。 手動(dòng)控制功能 在手動(dòng)控制模式下,可以控制小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停頓、漏粉、顯示時(shí)間、顯示里程,假設(shè)在行駛過(guò)程中遇到障礙小車(chē)將自動(dòng)停頓,并發(fā)出聲光警告信號(hào)。同時(shí),在轉(zhuǎn)彎或后退時(shí)相應(yīng)的轉(zhuǎn)向燈和倒車(chē)燈會(huì)閃爍發(fā)光,小車(chē)接收到一個(gè)按鍵命令后除了執(zhí)行相應(yīng)的動(dòng)作外蜂鳴器還會(huì)響一聲,以告知操作者已收到了命令。 在手動(dòng)控制模式下,還設(shè)置了一個(gè)記錄行駛路
19、線的開(kāi)關(guān)。操作者按下這個(gè)開(kāi)關(guān)后,先選擇這一次記錄的路線的名稱(chēng),此后對(duì)小車(chē)的控制命令將被存入EEPROM中,直至操作者再按下一次這個(gè)開(kāi)關(guān)完畢這次路線的記錄。記錄的路線可在重放路線模式下重放。 自動(dòng)尋找光源功能 在自動(dòng)尋找光源模式下,小車(chē)可以自動(dòng)查找光源的方向,然后自動(dòng)行駛到光源的附近。在自動(dòng)行駛過(guò)程中假設(shè)遇到障礙,小車(chē)將自動(dòng)采取一些避障措施避開(kāi)障礙。此外在尋找過(guò)程中操作者假設(shè)按下“顯示模式切換鍵〞數(shù)碼管顯示的容將在時(shí)間和里程之間切換,假設(shè)按下“停頓〞鍵,小車(chē)將立即停頓尋找光源,然后等待切換到其他模式。 超聲避障功能 在手動(dòng)模式、自動(dòng)尋找光源模式、重放路線模式下超聲測(cè)障模塊始終工作。在
20、前進(jìn)時(shí)發(fā)現(xiàn)前方有障礙,或在后退時(shí)發(fā)現(xiàn)前方有障礙小車(chē)都將立即停車(chē),并發(fā)出聲光報(bào)警信號(hào)告知操作者。障礙檢測(cè)的距離調(diào)整在20厘米,即只有在20厘米之有障礙時(shí)小車(chē)才會(huì)做出避讓動(dòng)作,在這個(gè)圍之外的障礙小車(chē)不予處理。 記錄路線與重放路線功能 在手動(dòng)模式下翻開(kāi)記錄路線開(kāi)關(guān),開(kāi)場(chǎng)記錄路線;在重放路線模式下選擇重放的路線,開(kāi)場(chǎng)重放指定的路線。在重放過(guò)程中遇到障礙或操作者按下“停頓〞鍵將完畢本條路線的重放,等待選擇下一條需要重放的路線或選擇另外一種模式。 聲控功能 本設(shè)計(jì)采用凌陽(yáng)61板做了聲控系統(tǒng)。翻開(kāi)遙控器電源后開(kāi)場(chǎng)訓(xùn)練語(yǔ)音命令,由于受到單片機(jī)的SRAM容量的限制只能錄制5條語(yǔ)音命令,分別是前進(jìn)、后
21、退、左轉(zhuǎn)、右轉(zhuǎn)、停頓。當(dāng)識(shí)別出*條語(yǔ)音命令時(shí)和直接按下相應(yīng)的按鍵等價(jià),紅外發(fā)射電路都會(huì)給小車(chē)發(fā)出相應(yīng)的命令。操作者在使用聲控功能時(shí)有語(yǔ)音提示音,所以操作很簡(jiǎn)便、快捷。 其他功能 小車(chē)還具有走數(shù)字功能,即小車(chē)可按照事先由程序設(shè)置好的路線行走,并灑下粉末,顯示出一個(gè)數(shù)字。 除此之外,小車(chē)上還有左、右轉(zhuǎn)向燈,倒車(chē)燈,障礙指示燈,模式指示燈,蜂鳴器報(bào)警電路,小車(chē)狀態(tài)一目了然。 1.3 MCS-51系列單片機(jī)簡(jiǎn)介 MCS51單片機(jī)的根本構(gòu)造如圖1.1所示,其根本構(gòu)造包括: ● 8位CPU; ● 片震蕩器及時(shí)鐘電路; ● 32根I/O口線; ● 外部存儲(chǔ)器ROM和RAM尋址圍各為64K
22、B; ● 2個(gè)16位定時(shí)器/計(jì)數(shù)器; ● 5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí); 時(shí)鐘電路 ROM RAM 定時(shí)器/計(jì)數(shù)器 CPU 并行接口 串行接口 中斷系統(tǒng) T*D R*D INT0 INT1 P0~P3 T0 T1 圖1.1 8051單片機(jī)的根本構(gòu)造 ● 全雙工串行口; ● 布爾處理器。 8051單片機(jī)的存儲(chǔ)器構(gòu)造特點(diǎn)之一是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi),并有各自的尋址機(jī)構(gòu)和尋址方式。這種構(gòu)造的單片機(jī)稱(chēng)為哈佛構(gòu)造單片機(jī)。 8051單片機(jī)在物理上有四個(gè)存儲(chǔ)空間:片程序存儲(chǔ)器和片外程序存儲(chǔ)器;片數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器。 8051單片機(jī)有4個(gè)8位的并行接口,
23、記作P0,P1,P2和P3,共32根口線,實(shí)際上它們就是SFR中的4個(gè)。這4個(gè)接口特性上主要差異是P0,P2和P3都還有第二功能,而P1口只能用做I/O口。4個(gè)口的驅(qū)動(dòng)能力也是不一樣。P1,P2和P3都能驅(qū)動(dòng)3個(gè)LS TTL門(mén),并且不需外加上拉電阻就能驅(qū)動(dòng)MOS電路。P0能驅(qū)動(dòng)8個(gè)LS TTL門(mén),但驅(qū)動(dòng)MOS電路時(shí),假設(shè)作為地址/數(shù)據(jù)總線,則可以直接驅(qū)動(dòng);而作為I/O口時(shí),需外接上拉電阻才能驅(qū)動(dòng)MOS電路。 1.4凌陽(yáng)SPCE061A精簡(jiǎn)開(kāi)發(fā)板簡(jiǎn)介 凌陽(yáng)61板是采用凌陽(yáng)16位單片機(jī)為核心的開(kāi)發(fā)系統(tǒng),具有DSP處理功能和語(yǔ)音處理功能。利用該開(kāi)發(fā)板可方便的實(shí)現(xiàn)語(yǔ)音的錄、放、識(shí)別等功能。SPCE
24、061A凌陽(yáng)16位單片機(jī)的構(gòu)造框圖如圖1.2所示: 圖1.2 SPCE061A構(gòu)造框圖 SPECE061A的CPU工作速率為0.32MHZ-49.152MHZ;SRAM容量為2K字;程序存儲(chǔ)器容量為32K字FLASH,使用凌陽(yáng)音頻壓縮算法SACM_240方式〔2.4Kbps〕,能容納240秒語(yǔ)音數(shù)據(jù);有兩個(gè)16位的并行I/O接口;還具有ADC、DAC、麥克風(fēng)放大器和AGC電路等。 由于IDE自帶了很多有關(guān)語(yǔ)音錄放、語(yǔ)音識(shí)別的API函數(shù),所以采用61板來(lái)做聲控系統(tǒng)比擬方便。 第2章 系統(tǒng)總體設(shè)計(jì) 2.1系統(tǒng)功能模塊的劃分 按照設(shè)計(jì)要求,系統(tǒng)可以分為以下幾個(gè)根本功能模塊:遙控模塊、
25、顯示模塊、前輪轉(zhuǎn)向模塊、后輪驅(qū)動(dòng)模塊、超聲測(cè)距避障模塊、尋找光源模塊、記錄與重放路線模塊、里程檢測(cè)模塊等。 有些模塊的功能是由硬件完成,有些模塊的功能由軟、硬件配合完成,有些模塊則是由軟件、硬件、機(jī)械三局部共同完成。 將系統(tǒng)拆分成以上的這些根本功能模塊后,再根據(jù)各個(gè)模塊所要完成的功能分別去設(shè)計(jì),也就是按照“逐步求精〞的思想去設(shè)計(jì)本系統(tǒng),這將使設(shè)計(jì)工作細(xì)化,也有助于制定進(jìn)度安排。 2.2單片機(jī)數(shù)目的選定 由于系統(tǒng)需要完成的功能較多,CPU的負(fù)荷也較重,再加之單片機(jī)的定時(shí)器/計(jì)數(shù)器、中斷、I/O口等資源有限,如果選用一片單片機(jī)必將會(huì)給系統(tǒng)的設(shè)計(jì)帶來(lái)一些困難。所以可以考慮采用兩個(gè)單片機(jī)構(gòu)成主
26、從式的構(gòu)造,各分擔(dān)一局部控制與運(yùn)算功能,這樣兩個(gè)單片機(jī)可同時(shí)工作。所謂主從式構(gòu)造是指從單片機(jī)片機(jī)根據(jù)主單片機(jī)發(fā)出的命令來(lái)完成*項(xiàng)功能,并且把結(jié)果報(bào)告給主單片機(jī),這樣的構(gòu)造在*種程度上可以簡(jiǎn)化系統(tǒng)。 主單片機(jī)負(fù)責(zé)紅外遙控接收、顯示、小車(chē)的運(yùn)動(dòng)以及處理遙控命令等功能;從單片機(jī)則主要負(fù)責(zé)超聲測(cè)距、檢測(cè)光源方位這兩項(xiàng)比擬費(fèi)時(shí)的功能,在探測(cè)到障礙或探測(cè)到光源時(shí)將有關(guān)信息報(bào)告給主單片機(jī)進(jìn)展處理,并由主單片機(jī)來(lái)采取相應(yīng)的措施。 本設(shè)計(jì)中采用了兩片AT89C52單片機(jī),通過(guò)串行接口通信。因?yàn)閮蓚€(gè)單片機(jī)之間的距離很近,所以串行口可以工作在較高的波特率上,可以讓串行口工作在方式2,其特點(diǎn)是其波特率高,并且波特
27、率可以直接從晶振32分頻、或64分頻而得到,不需要占用定時(shí)器資源。 2.3系統(tǒng)原理框圖 系統(tǒng)原理框圖如圖2.1所示: 按鍵 主控單片機(jī) 從單片機(jī) 遙控接收 顯示模塊 里程檢測(cè) 路線記錄 漏粉控制 前輪轉(zhuǎn)向 超聲探測(cè)障礙 光源方向探測(cè) 后輪驅(qū)動(dòng) 串行通信 遙控發(fā)射 語(yǔ)音識(shí)別 圖2.1 系統(tǒng)原理框圖 2.4系統(tǒng)軟件主要特色 軟件在一個(gè)智能系統(tǒng)中扮演著舉足輕重的作用,軟件設(shè)計(jì)的好壞直接關(guān)系著整個(gè)系統(tǒng)的性能。目前已經(jīng)有很多種嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng),如:Linu*、RT*51及UC/OS等,可以更有效的利用系統(tǒng)的各種資源,簡(jiǎn)化編程,縮短開(kāi)發(fā)周期。
28、簽于本系統(tǒng)采用AT89C52單片機(jī)為控制器,本身的各種資源都很有限,引入一個(gè)操作系統(tǒng)代價(jià)太大,所以考慮直接來(lái)優(yōu)化系統(tǒng)的軟件構(gòu)造,同樣可以到達(dá)“多任務(wù)〞、“實(shí)時(shí)〞等要求。 軟件分層構(gòu)造 為了便于編程,將邏輯控制層和具體的硬件相別離開(kāi)是很有必要的。硬件驅(qū)動(dòng)層的軟件負(fù)責(zé)直接操作硬件,并且給上層的軟件提供一定的接口,這樣有助于上層的軟件實(shí)現(xiàn)更復(fù)雜的功能,并且系統(tǒng)的硬件有所改動(dòng)時(shí)也只需改動(dòng)相應(yīng)的驅(qū)動(dòng)模塊即可。 邏輯控制層 硬件驅(qū)動(dòng)層 硬件設(shè)備 置、取全局變量 圖2.2 軟件分層構(gòu)造示意圖 操作硬件 本系統(tǒng)中的LED顯示模塊、前輪轉(zhuǎn)向模塊、后輪驅(qū)動(dòng)模塊、AT24C08存取模塊、尋光源轉(zhuǎn)動(dòng)
29、機(jī)構(gòu)都做成了一些獨(dú)立的模塊,并且給外部提供了一些接口函數(shù),來(lái)實(shí)現(xiàn)對(duì)這些硬件或機(jī)械部件的高級(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)的模塊提供的效勞即可,這樣可把更多的精力放在高級(jí)功能的實(shí)現(xiàn)上。 多任務(wù)構(gòu)造 為了充分利用單片機(jī)的CPU,存等資源,本系統(tǒng)中引入了多任務(wù)的軟件構(gòu)造,即從宏觀上來(lái)看單片機(jī)同時(shí)在做多件事情。分析一般的多任務(wù)系統(tǒng)的軟件構(gòu)造,系統(tǒng)的核心是任務(wù)調(diào)度器,在適當(dāng)?shù)臅r(shí)候任務(wù)調(diào)
30、度器將保存當(dāng)前任務(wù)的現(xiàn)場(chǎng),并且恢復(fù)將要運(yùn)行的任務(wù)的現(xiàn)場(chǎng),并讓其投入運(yùn)行。簡(jiǎn)單的說(shuō),一般的多任務(wù)系統(tǒng)是任務(wù)調(diào)度器循環(huán)的調(diào)用各個(gè)需要執(zhí)行的任務(wù),進(jìn)而可以更有效的利用系統(tǒng)的各種資源。從這里得到啟發(fā),可以用定時(shí)器每隔一定的時(shí)間中斷一次,在中斷處理函數(shù)中依次調(diào)用一次各個(gè)任務(wù)所對(duì)應(yīng)的函數(shù),并且各個(gè)函數(shù)都能在一個(gè)較短的時(shí)間返回,這樣在*段時(shí)間,各個(gè)任務(wù)所對(duì)應(yīng)的函數(shù)都能夠被執(zhí)行到,就好似多個(gè)任務(wù)同時(shí)運(yùn)行了。還有一點(diǎn)需要說(shuō)明,就是各個(gè)任務(wù)是由一些函數(shù)和一些靜態(tài)變量組成。函數(shù)由定時(shí)器中斷處理函數(shù)定期的調(diào)用一次,并且有個(gè)前提就是這個(gè)函數(shù)能夠在較短的時(shí)間返回,否則其他任務(wù)將不能及時(shí)的被調(diào)用到,也就達(dá)不到“實(shí)時(shí)〞這一要
31、求。靜態(tài)變量保存該任務(wù)的各種狀態(tài),并且其他模塊和該系統(tǒng)復(fù)位 初始化 主任務(wù)設(shè)計(jì)成無(wú)限循環(huán)構(gòu)造 定時(shí)器0中斷處理函數(shù) 任務(wù)1 任務(wù)2 任務(wù)3 任務(wù)n 圖2.3 多任務(wù)構(gòu)造示意圖 任務(wù)進(jìn)展通信也是通過(guò)置取這些靜態(tài)變量來(lái)實(shí)現(xiàn)的。 本系統(tǒng)中軟件的多任務(wù)構(gòu)造如圖2.3所示: 可以說(shuō)定時(shí)器中斷處理函數(shù)就是本設(shè)計(jì)中多任務(wù)的核心,即任務(wù)調(diào)度器。以下是定時(shí)器0中斷處理函數(shù)的程序清單: ///////////////////////////////////////////////////// //定時(shí)器0中斷處理函數(shù) //每4毫秒中斷一次 //產(chǎn)生時(shí)鐘節(jié)拍 //負(fù)責(zé)維護(hù)一個(gè)系統(tǒng)時(shí)間
32、變量和任務(wù)調(diào)度 ///////////////////////////////////////////////////// *define TIME_OVERLOAD 3960 //定時(shí)器計(jì)數(shù)初值 //記錄時(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)時(shí)間的
33、全局變量 void timer0(void) interrupt 1 { //重裝定時(shí)器0的計(jì)數(shù)初值 TH0=(65536-TIME_OVERLOAD)/256; TL0=(65536-TIME_OVERLOAD)%256; //維護(hù)系統(tǒng)時(shí)間 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ā)聲時(shí)才調(diào)用 //n_beep全局變量表示需要發(fā)出幾聲 if((n_beep)&&(!(time.t_ms%52)))beep2(); //每4毫秒調(diào)用一次顯示任務(wù) led_disp(); //每16毫秒調(diào)用一次后輪直流電機(jī)驅(qū)動(dòng)程序 if(!(time.t_ms&0*0f))dianji(); //每32毫秒調(diào)用一次里程檢測(cè)任務(wù) if(!(time.t_ms&0*1f))licheng(); //每16ms調(diào)用一次前輪轉(zhuǎn)向電機(jī)驅(qū)動(dòng)函數(shù) if(!(time.t_ms&0*0
36、f))gw_dianji(); } 以上的這段程序代碼就是實(shí)現(xiàn)了任務(wù)的調(diào)度,和一般的多任務(wù)系統(tǒng)相比擬有幾點(diǎn)不同: (1) 任務(wù)之間的切換是通過(guò)函數(shù)的調(diào)用與返回實(shí)現(xiàn)的,當(dāng)以上的這幾個(gè)任務(wù)全調(diào)用一次之后將進(jìn)入主任務(wù)執(zhí)行,主任務(wù)即main()函數(shù)所對(duì)應(yīng)的任務(wù)。 (2) 相應(yīng)的任務(wù)上、下文的保存與恢復(fù)也不是由任務(wù)調(diào)度器實(shí)現(xiàn)的,而是由C語(yǔ)言編譯器在函數(shù)調(diào)用時(shí)自動(dòng)保存與恢復(fù)了主任務(wù)的上、下文;其他的任務(wù)不用保存上、下文,每次進(jìn)入執(zhí)行都是從相應(yīng)函數(shù)的第一行開(kāi)場(chǎng),存放器值也不用保存。 總之,采用以上這種軟件構(gòu)造,也可以實(shí)現(xiàn)多個(gè)任務(wù)并發(fā)運(yùn)行,在timer0()函數(shù)中可以加進(jìn)更多的任務(wù),只要各個(gè)任
37、務(wù)都能在一個(gè)較段的時(shí)間執(zhí)行一次并返回到timer0()函數(shù)中就可以。此外,關(guān)于RAM的分配是在編譯的時(shí)候完成的,各個(gè)任務(wù)一般要用一些全局的靜態(tài)變量來(lái)標(biāo)識(shí)自身狀態(tài)。 在主控單片機(jī)上有以下幾個(gè)任務(wù): (1) 主任務(wù):main()開(kāi)場(chǎng)的任務(wù),很多功能都要在該任務(wù)中完成; (2) 蜂鳴器發(fā)聲任務(wù):beep2(),全局變量n_beep表示需要發(fā)出幾個(gè)“嘀〞聲; (3) LED顯示任務(wù):led_disp(),LED數(shù)碼管和LED發(fā)光二極管顯示任務(wù); (4) 后輪電機(jī)驅(qū)動(dòng)任務(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) 里程檢測(cè)任務(wù):licheng(),檢測(cè)小車(chē)的行駛里程。 在從單片機(jī)上有四個(gè)任務(wù): (1) 尋找光源方向任務(wù):該任務(wù)作為從單片機(jī)的背景任務(wù),由main()函數(shù)調(diào)用,然后一直循環(huán)的執(zhí)行; (2) 前超聲測(cè)障任務(wù):chaosheng_qian(),由從單片機(jī)的定時(shí)器中斷處理函數(shù)timer0()每隔64毫秒調(diào)用一次; (3) 后超聲測(cè)障任務(wù):chaosheng_hou(),每64毫秒調(diào)用一次,和chaosheng_qian()的調(diào)用相差32毫秒; (4) 旋轉(zhuǎn)機(jī)構(gòu)轉(zhuǎn)動(dòng)任務(wù):driver_dianji(),將尋找光源方向的轉(zhuǎn)
39、動(dòng)機(jī)構(gòu)旋轉(zhuǎn)到指定的角度。 消息驅(qū)動(dòng)構(gòu)造 考慮到系統(tǒng)中無(wú)論是操作者按下一個(gè)按鍵,還是遇到障礙或是尋找到光源,這些事件都有一個(gè)共同點(diǎn),就是系統(tǒng)要對(duì)這些事件做出相應(yīng)的處理或采取相應(yīng)的措施。所以為了簡(jiǎn)化編程,讓這些事件在主任務(wù)中能得到統(tǒng)一的處理,可以給這些事件編上號(hào),然后由一個(gè)消息搜集模塊去等待各種消息。一旦*個(gè)事件發(fā)生,該模塊馬上給主任務(wù)返回該事件的編號(hào),即消息值,讓主任務(wù)按照消息值分類(lèi)去處理消息。 在消息搜集模塊的頭文件中定義了如下假設(shè)干個(gè)消息: //消息的構(gòu)造為:高三位,消息分類(lèi)碼,可以加快消息處理的速 //度;低五位,消息值。 *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 //沒(méi)有發(fā)現(xiàn)光源消息 *define MSG_FOUND 0*29 //發(fā)現(xiàn)光源消息 //主從機(jī)之間的控
42、制消息 *define MSG_BEGINFIND 0*31 //開(kāi)場(chǎng)尋找光源命令消息 *define MSG_ENDFIND 0*32 //停頓尋找光源消息 e*tern uchar getmsg(void); e*tern uchar imgetch(void); 消息搜集模塊對(duì)外提供了兩個(gè)接口函數(shù):getmsg()函數(shù)一直等待到有消息時(shí)返回消息值;imgetch()函數(shù)立即返回按鍵值,這是為了*些地方使用上的靈活而設(shè)置的。 有了這個(gè)消息搜集模塊后,主任務(wù)執(zhí)行的大局部時(shí)間就會(huì)停留在getmsg()函數(shù)等待消息,當(dāng)有按鍵命令或遇到障礙時(shí)返回消息值,主任務(wù)對(duì)其進(jìn)展相應(yīng)的處理。
43、 主任務(wù)處理消息可以設(shè)計(jì)成如下構(gòu)造: while(1) //消息循環(huán) { switch(getmsg()) //消息分類(lèi)處理 { case MSG_K_QIAN: //“前進(jìn)〞按鍵消息處理 … break; case MSG_K_HOU: //“后退〞按鍵消息處理 … break; case … } } 2.5本章小結(jié) 本章將系統(tǒng)拆分成了假設(shè)干個(gè)功能模塊,并且采用兩個(gè)AT89C52單片機(jī)來(lái)各分擔(dān)一局部功能。在軟件方面通過(guò)對(duì)構(gòu)造
44、的特殊設(shè)計(jì),根本上實(shí)現(xiàn)了多任務(wù)并發(fā)運(yùn)行,并且通過(guò)軟件的分層構(gòu)造將功能實(shí)現(xiàn)和具體的硬件別離開(kāi),再加上消息驅(qū)動(dòng)的構(gòu)造,這將給后續(xù)的各模塊軟件的設(shè)計(jì)帶來(lái)方便。 第3章 各模塊的詳細(xì)設(shè)計(jì) 3.1 紅外遙控模塊的設(shè)計(jì) 遙控模塊的功能需求 遙控模塊采用紅外遙控方式,因?yàn)椴捎眉t外遙控抗干擾能力強(qiáng),且不會(huì)對(duì)周?chē)臒o(wú)線電設(shè)備產(chǎn)生干擾電波,接口簡(jiǎn)單;但是紅外方式遙控的距離比擬有限,一般在幾米之。鑒于本設(shè)計(jì)不需要遠(yuǎn)距離遙控,所以綜合考慮之下采用紅外遙控較為適宜。 本設(shè)計(jì)中要求能用遙控器控制小車(chē)的前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停頓、記錄路線、尋找光源等很多種功能;遙控距離在幾米之即可;并且要在遙控發(fā)射模塊參加語(yǔ)
45、音識(shí)別模塊,能夠?qū)崿F(xiàn)聲控功能。 編解碼芯片的選型 由于在遙控端的按鍵數(shù)目有多個(gè),而紅外通道傳輸?shù)闹荒苁怯?、1組成的串行代碼,所以需要在發(fā)射端對(duì)按鍵進(jìn)展“并-串〞編碼,在接收端相應(yīng)的要進(jìn)展“串-并〞解碼。碼的波特率在收、發(fā)兩端應(yīng)該是一致的。 方案一,使用MC145026、MC145027編解碼芯片,其特殊的編碼方式保證了信息的可靠傳輸,但是外圍器件參數(shù)的選定較為煩瑣,并且不能利用到其所提供的地址功能,也就是說(shuō)傳輸?shù)男畔?dāng)中地址碼局部是多余的,這就降低了信道的利用率。 方案二,采用瑞昱公司生產(chǎn)的專(zhuān)用于遙控車(chē)模的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)有按鍵按下時(shí)LED1發(fā)光提示;7腳為帶載波的編碼信號(hào)輸出端,即編碼信號(hào)已經(jīng)調(diào)制到38KHZ的載波上,該腳的信號(hào)通過(guò)一個(gè)NPN型三極管放大后可直接驅(qū)動(dòng)紅外發(fā)射二極管發(fā)射信號(hào);8腳為不帶載波的編碼信號(hào)輸出端。 圖3.1 遙控發(fā)射原理圖 遙控發(fā)射端按鍵數(shù)目的擴(kuò)展 圖3.2 遙控接收電路圖 遙控接收電路如圖3.2所示。R*-2的4腳和5腳之間接的
47、電阻阻值要和T*-2的11腳、12腳間的電阻阻值接近,相差在20%之方可正確的解碼,本設(shè)計(jì)中這兩個(gè)電阻都選用150KΩ;2腳接地;13腳接3-5V電源;3腳接輸入信號(hào),由一體化紅外接收頭1838輸出的信號(hào)需要加一個(gè)反向器才是正確的編碼信號(hào);6腳、7腳、10腳、11腳、12腳為5路遙控命令的輸出端,分別和T*-2的5路輸入端的狀態(tài)相對(duì)應(yīng)。 另外,為了方便操作,將T*-2的5路功能擴(kuò)展成9功能,即在遙控發(fā)射端可以接9個(gè)按鍵。這是通過(guò)對(duì)原先的5路輸入進(jìn)展組合得到的。 遙控電路與語(yǔ)音識(shí)別模塊的連接 語(yǔ)音識(shí)別模塊采用凌陽(yáng)61板,可以將SPCE061A單片機(jī)的輸出引腳直接接到T*-2的輸入端,與按
48、鍵實(shí)現(xiàn)“線與〞功能,這樣遙控發(fā)射端的按鍵和凌陽(yáng)單片機(jī)都可以通過(guò)遙控電路給小車(chē)發(fā)送命令。 3.2 數(shù)碼管、發(fā)光二極管顯示模塊的設(shè)計(jì) 多位數(shù)碼管掃描顯示原理 圖3.3 LED數(shù)碼管構(gòu)造 LED數(shù)碼管是常用的顯示器件,數(shù)碼管的構(gòu)造如圖3.3所示。每一段相當(dāng)于一個(gè)發(fā)光二極管,各個(gè)發(fā)光二極管的陽(yáng)極或陰極接在一起,分別稱(chēng)作共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。本設(shè)計(jì)中采用的是共陰極數(shù)碼管。 對(duì)于多個(gè)數(shù)碼管的顯示,有靜態(tài)方式和動(dòng)態(tài)掃描方式。本設(shè)計(jì)中用了4個(gè)共陰極數(shù)碼管,并采用動(dòng)態(tài)掃描方式顯示。掃描顯示的原理是將各個(gè)數(shù)碼管的段碼端口分別并聯(lián)在一起,由位選端口輪流選通各個(gè)數(shù)碼管,并讓每個(gè)數(shù)碼管分別顯示幾毫秒,
49、由于人眼的視覺(jué)慣性,看到的將是多個(gè)數(shù)碼管同時(shí)在顯示。 工作狀態(tài)指示燈及轉(zhuǎn)向燈的設(shè)計(jì) 為了直觀的顯示出小車(chē)的各種狀態(tài),設(shè)計(jì)了假設(shè)干發(fā)光二極管指示燈,有模式指示燈、漏粉指示燈、記錄行駛路線指示燈、障礙指示燈、轉(zhuǎn)向指示燈、倒車(chē)指示燈。 顯示模塊電原理圖 顯示模塊原理如圖3.4所示: 圖3.4 顯示模塊原理圖 顯示任務(wù)由主單片機(jī)完成。P0.0和P0.1分別接到74LS164的串行數(shù)據(jù)輸入端和移位脈沖端,產(chǎn)生數(shù)碼管選通信號(hào)。P0.2接到74LS273的時(shí)鐘端,鎖存P2口給出的段碼數(shù)據(jù)。在完成鎖存后由P2口直接驅(qū)動(dòng)8個(gè)LED發(fā)光二極管,作為小車(chē)的狀態(tài)指示。為了在74LS273鎖存數(shù)據(jù)時(shí)
50、防止?fàn)顟B(tài)指示燈的閃爍,用P1.2控制狀態(tài)指示燈的選通。在74LS273鎖存數(shù)據(jù)期間P1.2置高電平,全部熄滅狀態(tài)指示燈;在鎖存完畢后,P2口給出正確的電平后再置P1.2低電平。同樣在4個(gè)數(shù)碼管掃描顯示的過(guò)程中也應(yīng)防止數(shù)碼管的閃爍。 顯示任務(wù)的軟件設(shè)計(jì) 數(shù)碼管的掃描顯示和狀態(tài)指示燈的顯示流程如圖3.5所示。由定時(shí)器0中斷處理函數(shù)timer0()每隔4毫秒調(diào)用一次。這樣每個(gè)數(shù)碼管輪流顯示4毫秒,掃描一遍共需16毫秒,也就是閃爍的頻率大概是60Hz,人眼看到的就是4個(gè)數(shù)碼管同時(shí)在顯示了。 返回 熄滅狀態(tài)指示燈 顯示模式是. 顯示緩沖區(qū)置成時(shí)間 顯示緩沖區(qū)置成里程 數(shù)碼管段碼置成0,
51、消除移位時(shí)的閃爍 選通下一個(gè)數(shù)碼管 閃爍處理 鎖存段碼 顯示個(gè)狀態(tài)指示燈 時(shí)間模式 里程模式 用戶(hù)模式 圖3.5 顯示流程圖 3.3 聲音提示功能的設(shè)計(jì) 和狀態(tài)指示燈的設(shè)計(jì)目的一樣,給小車(chē)參加聲音提示功能也是為了更直觀地顯示各種狀態(tài)。在操作者通過(guò)遙控器給小車(chē)發(fā)出命令后,蜂鳴器將響一聲,及時(shí)的提示操作者已經(jīng)收到命令。這是挺有必要的,因?yàn)榧t外遙控方式并不是很可靠,有時(shí)操作者發(fā)出的遙控命令小車(chē)可能是收不到的,因此操作者幾乎處于“盲操作〞狀態(tài)。參加了聲音提示功能后,小車(chē)有沒(méi)有接收到遙控命令很容易就能知道了。此外,當(dāng)小車(chē)遇到障礙時(shí)也會(huì)給出聲音報(bào)警信號(hào)。 本設(shè)計(jì)中所采用的蜂鳴器使
52、用很簡(jiǎn)便,只需給其正負(fù)端加上5V左右的電壓就能夠發(fā)出聲音,在其部已經(jīng)含有一個(gè)振蕩電路。工作電流大約10mA,因此可以用P0口的*一位直接驅(qū)動(dòng)。 聲音提示功能被設(shè)計(jì)成一個(gè)單獨(dú)的任務(wù),原因是為了能讓蜂鳴器響假設(shè)干聲,而同時(shí)單片機(jī)又能做其他的事情。其他模塊通過(guò)beep(n)函數(shù)設(shè)置靜態(tài)變量n_beep,告訴聲音提示模塊需要響n(yōu)聲,大約50毫秒響一聲后自動(dòng)會(huì)將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所示。通過(guò)步進(jìn)電機(jī)來(lái)控制前輪轉(zhuǎn)到一定的角度,并且采用了一個(gè)遮擋型的紅外對(duì)管來(lái)檢測(cè)轉(zhuǎn)向的中點(diǎn)
53、,以便在開(kāi)機(jī)時(shí)能自動(dòng)找到轉(zhuǎn)向的中點(diǎn)。而且在一定程度上可以校準(zhǔn)由步進(jìn)電機(jī)的失步帶來(lái)的角度誤差。 前輪轉(zhuǎn)向中點(diǎn)校準(zhǔn)功能的設(shè)計(jì) 圖3.7 紅外對(duì)管檢測(cè)電路 如圖3.7所示,在紅外發(fā)射管和接收管之間無(wú)遮擋時(shí),電壓比擬器輸出低電平;當(dāng)之間有遮擋時(shí),電壓比擬器輸出高電平。當(dāng)前輪轉(zhuǎn)到中點(diǎn)時(shí),細(xì)桿正好能遮擋住紅外對(duì)管,此時(shí)電壓比擬器輸出一個(gè)高電平;當(dāng)前輪偏離中點(diǎn)時(shí),輸出低電平。 步進(jìn)電機(jī)驅(qū)動(dòng)芯片 本設(shè)計(jì)中前輪的轉(zhuǎn)向電機(jī)是從廢棄的軟驅(qū)上拆卸下來(lái)的步進(jìn)電機(jī),體積小、性能好、使用方便,并且有專(zhuān)門(mén)的驅(qū)動(dòng)芯片。驅(qū)動(dòng)芯片引腳如圖3.8所示,輸入、輸出信號(hào)如圖3.9所示。當(dāng)控制信號(hào)的周期為40Hz左右時(shí),步進(jìn)
54、電機(jī)工作在最正確狀態(tài)。 前輪轉(zhuǎn)向任務(wù)的軟件設(shè)計(jì) 前輪轉(zhuǎn)向設(shè)計(jì)成一個(gè)單獨(dú)的任務(wù),由定時(shí)器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ū)動(dòng)芯片 A ā B B A-CH in B-CH in 圖3.9 步進(jìn)電機(jī)控制時(shí)序 3.5 后輪驅(qū)動(dòng)模塊的設(shè)計(jì) 直流電機(jī)驅(qū)動(dòng)芯片L298N 后輪采用直流電機(jī)來(lái)驅(qū)動(dòng),和步進(jìn)電機(jī)相比擬直流電機(jī)驅(qū)動(dòng)力大,電源利用率高。因?yàn)橹绷麟姍C(jī)
55、的轉(zhuǎn)速很高,所以必須參加齒輪箱進(jìn)展減速,減速后驅(qū)動(dòng)力變大,轉(zhuǎn)速降低。小車(chē)的行駛速度大概在20cm/s左右。 為了控制直流電機(jī)的正反轉(zhuǎn)來(lái)實(shí)現(xiàn)小車(chē)的前進(jìn)和后退,采用了直流電機(jī)驅(qū)動(dòng)芯片L298N,引腳連接如圖3.10所示。前進(jìn)時(shí)5腳輸入方波占空比為100%〔即持續(xù)高電平〕,7腳為低電平;后退時(shí)5腳為低電平,7腳輸入方波占空比為100%。另外,改變方波的占空比可以實(shí)現(xiàn)對(duì)直流電機(jī)的調(diào)速,由于本設(shè)計(jì)中小車(chē)速度已調(diào)整到較低水平,所以無(wú)需再調(diào)速。 100nF 100nF 圖3.10 直流電機(jī)驅(qū)動(dòng)芯片L298N 后輪驅(qū)動(dòng)任務(wù)的軟件設(shè)計(jì) 本設(shè)計(jì)中只需控制后輪的正、反轉(zhuǎn),無(wú)需調(diào)速,所以后輪驅(qū)動(dòng)模塊
56、的設(shè)計(jì)要比前輪轉(zhuǎn)向模塊簡(jiǎn)單很多,并且不建立后輪驅(qū)動(dòng)任務(wù)也能實(shí)現(xiàn),因?yàn)橹恍枰诟淖冃≤?chē)的行進(jìn)狀態(tài)的時(shí)候改變單片機(jī)和L298N相連的I/O口電平狀態(tài)即可。而本設(shè)計(jì)中將后輪驅(qū)動(dòng)模塊也設(shè)計(jì)成一個(gè)單獨(dú)的任務(wù)是考慮到以后功能擴(kuò)展的方便。以后可以通過(guò)PWM方式對(duì)后輪直流電機(jī)進(jìn)展調(diào)速,那就必須把后輪驅(qū)動(dòng)模塊設(shè)計(jì)成一個(gè)單獨(dú)任務(wù)了。 目前本模塊對(duì)其他模塊主要提供了以下幾個(gè)接口函數(shù)。 setspeed(n),n>0時(shí),小車(chē)前進(jìn);n<0時(shí),小車(chē)后退;n=0時(shí),小車(chē)停頓。 getspeed(),前進(jìn)時(shí)返回1;后退時(shí)返回-1;停頓時(shí)返回0。 imstop(),該函數(shù)實(shí)現(xiàn)反電動(dòng)勢(shì)剎車(chē)功能。 3.6 里程檢測(cè)模塊的
57、設(shè)計(jì) 探頭的選型與安裝 可以用這樣的思路來(lái)設(shè)計(jì)里程檢測(cè)模塊,在車(chē)軸上安裝一個(gè)圓盤(pán),圓盤(pán)上均勻的開(kāi)一些缺口,如圖3.11所示: 圖3.11 里程檢測(cè)遮光圓盤(pán)的設(shè)計(jì) 車(chē)輪每轉(zhuǎn)過(guò)一圈圓盤(pán)將把紅外對(duì)管遮擋4次,小車(chē)勻速行駛時(shí)檢測(cè)電路輸出占空比為50%的方波。檢測(cè)電路如圖3.7所示。 軟件消抖與硬件消抖的比擬 從檢測(cè)電路輸出的方波在其上升和下降沿處是不穩(wěn)定的,有抖動(dòng),統(tǒng)計(jì)里程的原理是檢測(cè)上升和下降沿的個(gè)數(shù),抖動(dòng)必將引起里程統(tǒng)計(jì)的誤差,因此要考慮消抖。 消抖的方法有多種,用硬件電路可以實(shí)現(xiàn)消抖功能,例如加一級(jí)施密特觸發(fā)器或加一級(jí)單穩(wěn)態(tài)觸發(fā)器都可以在一定程度上消除抖動(dòng)。硬件消抖后的信號(hào)
58、可以直接接到單片機(jī)的計(jì)數(shù)器引腳,利用單片機(jī)部的計(jì)數(shù)器來(lái)統(tǒng)計(jì)里程,但這樣的方法硬件代價(jià)比擬大,而且需要使用單片機(jī)的計(jì)數(shù)器或中斷才能實(shí)現(xiàn)。所以考慮用軟件的方法來(lái)消除抖動(dòng)。
圖3.12 軟件消抖示意圖
軟件消抖的思路是每隔T1對(duì)原信號(hào)采樣一次,假設(shè)抖動(dòng)的時(shí)間寬度為T(mén)2,高、低電平的寬度為T(mén),則只要滿(mǎn)足T2 59、每隔32毫秒調(diào)用一次,也就是說(shuō)采樣的時(shí)間間隔為32毫秒,這根本上能夠滿(mǎn)足T2 60、函數(shù)。
由于記錄里程值的變量是unsigned int型,所以表示的里程值圍為:0-65535(沿個(gè)數(shù)),大約是1366米,對(duì)于本設(shè)計(jì)而言,這個(gè)圍是足夠了。
3.7 超聲測(cè)距模塊的設(shè)計(jì)
超聲測(cè)距的理論依據(jù)
發(fā)射傳感器
接收傳感器
超聲波
回波
障礙
直接耦合
圖3.12 超聲測(cè)距原理圖
超聲測(cè)距的依據(jù)是超聲波在空氣中以一定的速度ν傳播,遇到障礙后聲波反射回來(lái),被超聲波接收傳感器檢測(cè)到,根據(jù)發(fā)射和接收到回波之間的時(shí)間差t就可以計(jì)算出障礙的距離,計(jì)算公式是:S=ν·t/2。
超聲發(fā)射電路
發(fā)射電路要求能給出40KHz的方波,可以由硬件電路振蕩產(chǎn)生,也可以用軟件產(chǎn)生 61、,本設(shè)計(jì)中采用軟件產(chǎn)生的方式。將*個(gè)I/O口置成1后執(zhí)行12個(gè)空指令,再將這個(gè)I/O口置成0后執(zhí)行9個(gè)空指令,加上循環(huán)構(gòu)造需要兩個(gè)時(shí)鐘周期正好是25個(gè)時(shí)鐘周期,采用12MHZ的晶振對(duì)應(yīng)25微秒。每次發(fā)10個(gè)周期的超聲波。
圖3.13 超聲發(fā)射電路
由于本設(shè)計(jì)中超聲探測(cè)的距離不需要太遠(yuǎn),所以可以用單片機(jī)的P0口*一位接220Ω的上拉電阻后直接來(lái)驅(qū)動(dòng)超聲發(fā)射傳感器。
超聲發(fā)射電路如圖3.13所示:
本設(shè)計(jì)中共有兩路超聲波傳感器,一路探測(cè)前方是否有障礙,一路探測(cè)前方是否有障礙。為了工作時(shí)互不干擾,采取分時(shí)工作的方式。
超聲接收電路
超聲接收電路如圖3.14所示:
前后兩個(gè)超聲波接收傳 62、感器共用一個(gè)接收電路,因?yàn)榍昂髢陕肥欠謺r(shí)工作的,所以并不會(huì)引起混淆。
在接收回波時(shí)要注意一點(diǎn),應(yīng)該消除超聲發(fā)射和接收傳感器之間的直接耦合,這可以在每次發(fā)射完一個(gè)超聲波束后設(shè)置一個(gè)時(shí)間門(mén)的方法來(lái)消除。
開(kāi)中斷
有回波.
關(guān)中斷
發(fā)射超聲波束
延時(shí)0.5毫秒
開(kāi)中斷
超時(shí).
發(fā)送“有障礙〞消息
發(fā)送“無(wú)障礙〞消息
返回
Y
N
Y
N
圖3.15 超聲探測(cè)流程圖
圖3.14 超聲接收電路
超聲測(cè)距任務(wù)的軟件設(shè)計(jì)
超聲測(cè)距任務(wù)放在從單片機(jī)上,由兩個(gè)任務(wù)組成:前超聲測(cè)距任務(wù)和后超聲測(cè)距任務(wù)。分別由從單片機(jī)的定時(shí)器0中斷處理函數(shù)每隔64毫秒調(diào)用一次,且前后超聲測(cè)距 63、任務(wù)的調(diào)用之間相差32毫秒。
以前超聲測(cè)距任務(wù)為例,其軟件流程圖如圖3.15所示:
當(dāng)探測(cè)到前〔后〕方有障礙時(shí)從單片機(jī)就通過(guò)串口通信報(bào)告主單片機(jī)前(后)方有障礙。主單片機(jī)再采取相應(yīng)措施。
本模塊將障礙檢測(cè)的距離限定在30厘米以,因?yàn)樘h(yuǎn)的地方有無(wú)障礙意義不大。
3.8 光源方向探測(cè)模塊的設(shè)計(jì)
該模塊由一個(gè)步進(jìn)電機(jī)帶動(dòng)的轉(zhuǎn)動(dòng)機(jī)構(gòu)、感光電阻和一個(gè)亮度檢測(cè)電路組成。
旋轉(zhuǎn)機(jī)構(gòu)設(shè)計(jì)
旋轉(zhuǎn)機(jī)構(gòu)由一個(gè)步進(jìn)電機(jī)帶動(dòng),該電機(jī)和前輪轉(zhuǎn)向電機(jī)一樣,驅(qū)動(dòng)程序也差不多,因此本節(jié)對(duì)其驅(qū)動(dòng)程序?qū)⒉蛔鲞^(guò)多介紹。
圖3.16 旋轉(zhuǎn)機(jī)構(gòu)構(gòu)造圖
旋轉(zhuǎn)機(jī)構(gòu)如圖3.16所示:
步進(jìn)電機(jī)通過(guò)螺桿和齒輪咬合,螺桿轉(zhuǎn) 64、過(guò)一圈,齒輪轉(zhuǎn)過(guò)一個(gè)齒距,齒輪一周共有26個(gè)齒,所以齒輪和螺桿的轉(zhuǎn)速比是1:26。步進(jìn)電機(jī)最小可轉(zhuǎn)過(guò)1/20圈,所以齒輪帶動(dòng)的轉(zhuǎn)動(dòng)機(jī)構(gòu)最小可轉(zhuǎn)1/520圈,即大約0.7度,這個(gè)精度在本設(shè)計(jì)中是能夠滿(mǎn)足要求的。
旋轉(zhuǎn)機(jī)構(gòu)的上方是一個(gè)正方體的殼體,只有一個(gè)端面可以照射進(jìn)光使處于另一個(gè)端面的感光電阻阻值發(fā)生變化,由檢測(cè)電路檢測(cè)阻值的大小就能得到這個(gè)方向光的亮度。旋轉(zhuǎn)一周,測(cè)出各個(gè)方向光的亮度就能得到光源所處的方向。
亮度檢測(cè)電路的選型與設(shè)計(jì)
亮度檢測(cè)電路是通過(guò)檢測(cè)感光電阻阻值的大小來(lái)間接的得到該方向光照的強(qiáng)度。而對(duì)于阻值的檢測(cè),一般要將阻值轉(zhuǎn)換成另外一種物理量,如電壓、電流、頻率等。
方案 65、一,可以將阻值轉(zhuǎn)換成電壓,然后用A/D變換器把電壓轉(zhuǎn)換成數(shù)字量,進(jìn)而得到亮度值。但這種方案需要A/D變換器,并且和單片機(jī)相連需要較多的口線。
方案二,用555芯片搭成一個(gè)振蕩電路,并且將感光電阻接入振蕩回路控制振蕩頻率,然后用軟件檢測(cè)一段時(shí)間脈沖的個(gè)數(shù)就可以得到頻率,進(jìn)而得到亮度值。這種方案和第一種方案相比,電路簡(jiǎn)單、本錢(qián)降低、占用單片機(jī)口線減少,具有明顯的優(yōu)點(diǎn)。但是精度較差,假設(shè)想提高檢測(cè)精度,就需要延長(zhǎng)檢測(cè)的時(shí)間或是提高555振蕩的頻率,振蕩頻率的提高,感光電阻連接線的分布參數(shù)影響將增大。
圖3.17 亮度檢測(cè)電路
方案三,針對(duì)方案二存在的問(wèn)題,將電路作一些改動(dòng)。將原來(lái)測(cè)單位時(shí)間脈沖 66、個(gè)數(shù)的方式變成只測(cè)一個(gè)脈沖寬度的方式。此時(shí)555振蕩器振蕩頻率可以大大降低,因此感光電阻可以直接接入振蕩回路。每個(gè)脈沖的寬度由感光電阻的阻值決定,調(diào)整在幾十微秒到幾百微秒之間。
方案三的原理如圖3.17所示,其中R表示感光電阻,在幾KΩ到幾百KΩ之間。為了增大亮度檢測(cè)的圍,在R上并聯(lián)一個(gè)30KΩ左右的電阻,相當(dāng)于對(duì)R的阻值進(jìn)展了壓縮。壓縮后輸出脈沖的寬度和感光電阻阻值的對(duì)數(shù)近似成正比。輸出為低電平期間,C通過(guò)R1放電,放電時(shí)間T1=R1C㏑2;輸出高電平期間,C充電,充電時(shí)間為T(mén)2=〔R//〔R2+R3〕+R1〕C㏑2。為了讓輸出低電平寬度為10微秒左右,高電平隨光照亮度而變,在幾十到幾百微秒,所以可以?。篟1=1KΩ,R=20KΩ固定電阻,R3=20KΩ可變電阻,C=10nF.
尋找光源方向任務(wù)的軟件設(shè)計(jì)
關(guān)中斷
定時(shí)器1初始化
等到低電平
啟動(dòng)定時(shí)器
等到高電平
等到低電平
停頓計(jì)時(shí)
計(jì)算亮度
開(kāi)中斷
返回亮度值
圖3.18 亮度檢測(cè)程序流程圖
尋找光源任務(wù)是從單片機(jī)上的主任務(wù)。主要功能是在接收到主單片機(jī)發(fā)出的“開(kāi)場(chǎng)尋找光源〞命令后找到光源目前的方向,
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六級(jí)上冊(cè)科學(xué)ppt課件-誰(shuí)選擇了它們-教科版
- 護(hù)理核心制度培訓(xùn)一_圖文課件
- 部編《池子與河流》課件
- SWOT分析法(非常全面)課件
- 主題班會(huì)我的成長(zhǎng)目標(biāo)課件
- 城市交通擁堵及治理總結(jié)課件
- 輸血相關(guān)性急性肺損傷課件
- 議論文的謀篇布局與論點(diǎn)的提出ppt課件
- 六級(jí)上冊(cè)科學(xué)ppt課件-地球的近鄰——月球-冀人版
- 疾病預(yù)防、冬季保暖-課件
- 中考英語(yǔ)語(yǔ)法復(fù)習(xí)之狀語(yǔ)從句ppt課件集4
- 《百分?jǐn)?shù)的意義和讀寫(xiě)》參考ppt課件
- 主題班會(huì)堅(jiān)持就是勝利課件
- 第二章--用人單位對(duì)大學(xué)生的要求概況ppt課件
- 教科版六年級(jí)科學(xué)上冊(cè)第三單元檢測(cè)卷(含答案)課件