久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27756|回復(fù): 4
收起左側(cè)

基于單片機(jī)的多功能智能小車設(shè)計(jì)論文

[復(fù)制鏈接]
ID:298227 發(fā)表于 2018-3-28 11:53 | 顯示全部樓層 |閱讀模式
做的課程設(shè)計(jì),主要包括以下內(nèi)容:
1.總體方案設(shè)計(jì)與論證
2.各模塊硬件電路設(shè)計(jì)
3.系統(tǒng)軟件設(shè)計(jì)
3.總結(jié)與展望


摘要

隨著計(jì)算機(jī)、微電子、材料、機(jī)械、通信等技術(shù)的快速發(fā)展,智能化的小車和機(jī)器人的發(fā)展速度也越來越快,作為21世紀(jì)自動(dòng)化領(lǐng)域內(nèi)非常偉大的成就它已經(jīng)和人們的生產(chǎn)生活緊密的聯(lián)系在了一起。根據(jù)題目的要求,本設(shè)計(jì)的智能遙控小車主要由兩大部分構(gòu)成:一個(gè)紅外遙控部分,一個(gè)智能小車部分。其中紅外遙控部分采用專用編碼芯片HT6221作為發(fā)射端,一體化紅外接收頭作為接收端;智能小車部分采用微控制器AT89C52單片機(jī)作為其控制核心,用紅外反射式光電傳感器進(jìn)行障礙物和路線的檢測,用步進(jìn)電機(jī)控制小車的啟停、速度快慢以及轉(zhuǎn)向,用直射式光電檢測器、施密特觸發(fā)器等元件組成的電路來檢測小車車輪轉(zhuǎn)速,用LCD1602液晶顯示屏來實(shí)時(shí)顯示小車運(yùn)行的速度、時(shí)間和路程。

經(jīng)過硬件和軟件的綜合設(shè)計(jì),本設(shè)計(jì)的智能遙控小車基本上實(shí)現(xiàn)了遙控控制、自動(dòng)躲避障礙、自動(dòng)沿著特定的路線行駛、實(shí)時(shí)顯示速度、路程等功能。


目錄

第一章 緒論              1

1.1 課題背景和意義              1

1.2 課題研究現(xiàn)狀和發(fā)展趨勢              1

1.2.1 研究現(xiàn)狀              1

1.2.2 發(fā)展趨勢              2

1.3 課題內(nèi)容和要求              2

第二章 總體方案設(shè)計(jì)與論證              4

2.1 遙控控制模塊設(shè)計(jì)與論證              4

2.2 電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)與論證              5

2.3 避障循跡模塊設(shè)計(jì)與論證              6

2.4 數(shù)據(jù)顯示模塊設(shè)計(jì)與論證              6

2.5 轉(zhuǎn)速測量模塊設(shè)計(jì)與論證              7

2.6 電源模塊設(shè)計(jì)與論證              7

第三章 各模塊硬件電路設(shè)計(jì)              9

3.1 紅外遙控發(fā)射器模塊              9

3.1.1 紅外遙控模塊的工作原理              9

3.1.2 HT6221編碼芯片簡介              10

3.1.3 紅外遙控發(fā)射器

3.2 單片機(jī)控制模塊

3.2.1 單片機(jī)模塊電路

3.2.2 復(fù)位電路

3.2.3 振蕩電路

3.3 紅外接收器及解碼

3.4 電機(jī)驅(qū)動(dòng)模塊              16

3.4.1 步進(jìn)電機(jī)的工作原理              16

3.4.2 ULN2003芯片簡介              17

3.4.3 步進(jìn)電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)              18

3.5 避障循跡模塊

3.6 轉(zhuǎn)速檢測模塊

3.7 數(shù)據(jù)顯示模塊

3.8 電源模塊

第四章 系統(tǒng)軟件設(shè)計(jì)

4.1 系統(tǒng)總體程序流程圖              24

4.2 避障循跡模塊程序設(shè)計(jì)              25

4.2.1 避障程序流程圖              25

4.2.2 循跡程序流程圖              26

4.3 數(shù)據(jù)顯示模塊程序設(shè)計(jì)              27

第五章 總結(jié)與展望              28

5.1 總結(jié)              28

5.2 改進(jìn)與展望              28

參考文獻(xiàn)              29

致謝

附錄A 各模塊電路圖

附錄B 程序              39



第一章 緒論

1.1 課題背景和意義

隨著計(jì)算機(jī)、微電子、信息技術(shù)的快速發(fā)展,智能化技術(shù)的發(fā)展速度越來越快,智能化與人們生活的聯(lián)系也越來越緊密,智能化是未來社會(huì)發(fā)展的必然趨勢。智能小車實(shí)際上就是一個(gè)可以自由移動(dòng)的智能機(jī)器人,比較適合在人們無法工作的地方工作,也可取代人們完成一些復(fù)雜、危險(xiǎn)性質(zhì)的工作。作為現(xiàn)代自動(dòng)控制領(lǐng)域內(nèi)十分偉大的一項(xiàng)發(fā)明智能小車、機(jī)器人已經(jīng)和人們的生產(chǎn)生活緊密的聯(lián)系在了一起。

智能小車,是一個(gè)包含周圍環(huán)境探測、識別反應(yīng)、自動(dòng)控制等功能于一體的綜合系統(tǒng),它綜合地運(yùn)用了微控制器、傳感、遙控、機(jī)械結(jié)構(gòu)、電子基礎(chǔ)、自動(dòng)控制等多學(xué)科的知識。智能小車是一個(gè)復(fù)雜而又龐大的系統(tǒng),其內(nèi)部有許多塊控制芯片作為其控制核心,多種傳感器來采集外部環(huán)境信息并將接收到的信息傳給主控制器,然后由控制器來控制其各個(gè)模塊執(zhí)行相應(yīng)的動(dòng)作。智能小車由于成本較低,甚至還能夠勝任一些人們都無法勝任的工作,它已逐步深入到工業(yè)、農(nóng)業(yè)以及社會(huì)生活的各個(gè)方面。本課題設(shè)計(jì)的智能小車中用到的遙控技術(shù)、顯示技術(shù)、單片機(jī)控制系統(tǒng)、傳感技術(shù)、自動(dòng)避障技術(shù)已廣泛應(yīng)用于工農(nóng)業(yè)生產(chǎn)、國防軍事、醫(yī)療衛(wèi)生、宇宙探測等諸多領(lǐng)域,特別是其在軍事偵察、反恐、防暴、防核化及污染等危險(xiǎn)和惡劣環(huán)境中有著廣闊的應(yīng)用前景,由此可見其有著及其重要的研究意義。

1.2 課題研究現(xiàn)狀和發(fā)展趨勢

  1.2.1 研究現(xiàn)狀

智能小車、機(jī)器人的發(fā)展研究從上世紀(jì)60年代至今已有幾十年的歷史,自從上世紀(jì)60年代末期,第一臺(tái)能夠自主移動(dòng)機(jī)器人問世以后,經(jīng)過幾十年的發(fā)展智能機(jī)器人已經(jīng)從最初的示教模仿機(jī)器人發(fā)展到現(xiàn)在的具有感知功能的智能機(jī)器人,在技術(shù)上取得了很大的進(jìn)步許多國家都對智能機(jī)器人進(jìn)行了大量的研究。由于各國的科研實(shí)力不同,其水平也有高低,其中美國和日本在該項(xiàng)技術(shù)的研究處于領(lǐng)先地位。

法國提出了讓智能機(jī)器人具有自動(dòng)認(rèn)知功能的一項(xiàng)科技計(jì)劃,使其能夠在復(fù)雜的環(huán)境中通過自主感知判斷來自動(dòng)執(zhí)行各種動(dòng)作。美國發(fā)明的智能機(jī)器人,可以幫助人們送信件、食品等生活用品,還可以牽引吸塵器來打掃衛(wèi)生。日本目前已經(jīng)研制成功的人形機(jī)器人,其可以模仿人們的各種面部表情而且非常逼真。近年來發(fā)明的的手術(shù)機(jī)器人已經(jīng)廣泛的應(yīng)用在實(shí)際醫(yī)療手術(shù)中而且穩(wěn)定性好,安全性高。我國的智能小車、機(jī)器人的研究已經(jīng)有三十多年的歷史,特別是在軍事領(lǐng)域的應(yīng)用方面已經(jīng)取得了較大的成果,已經(jīng)相繼研制出了復(fù)雜的智能機(jī)器人,危險(xiǎn)作業(yè)機(jī)器人、仿人機(jī)器人、復(fù)合結(jié)構(gòu)移動(dòng)機(jī)器人等。國內(nèi)的許多高校也都在不停的進(jìn)行著這方面的研究而且也有了層出不窮的成果,例如中科院研制的能夠和人對話的機(jī)器人、上海交大研制的具有較強(qiáng)越障能力的仿人關(guān)節(jié)結(jié)構(gòu)的機(jī)器人等。與此同時(shí),我國也開展了智能移動(dòng)機(jī)器人基礎(chǔ)理論研究,在某些方面取得了世界領(lǐng)先的成果,正在逐漸縮小與發(fā)達(dá)國家的差距。

  1.2.2 發(fā)展趨勢

隨著各方面技術(shù)的不斷進(jìn)步與完善,各個(gè)國家對于智能小車、機(jī)器人的科研能力都再逐步的加強(qiáng),未來的智能機(jī)器人可能會(huì)朝著以下幾個(gè)方面發(fā)展:使用高強(qiáng)度的輕質(zhì)材料讓機(jī)器人的結(jié)構(gòu)越來越靈巧動(dòng)作執(zhí)行也更加靈活;應(yīng)用網(wǎng)絡(luò)化技術(shù)來遠(yuǎn)距離操作控制機(jī)器人群體為人們工作;通過復(fù)雜生物機(jī)電系統(tǒng)和人機(jī)耦合系統(tǒng)來研究出具有仿生感知、生物神經(jīng)的仿人機(jī)器人。相信未來會(huì)有具有更高智能化的、更加生動(dòng)有趣的智能機(jī)器人出現(xiàn)在我們的周圍,而且會(huì)極大的改變和方便人們的生產(chǎn)生活。

1.3 課題內(nèi)容和要求

本設(shè)計(jì)的智能小車用微處理器(即單片機(jī))作為整個(gè)系統(tǒng)的控制核心部分,主要包括單片機(jī)控制模塊、遙控模塊、避障模塊、循跡模塊、數(shù)據(jù)顯示模塊等模塊。要求能夠?qū)崿F(xiàn)以下幾種功能:

(1)遙控功能,即通過遙控器來控制小車的啟動(dòng)、停止、左轉(zhuǎn)、右轉(zhuǎn)、后退等動(dòng)作。

(2)自動(dòng)避障功能,即小車在前方遇到障礙時(shí)可以立即做出反應(yīng),自動(dòng)左轉(zhuǎn)或右轉(zhuǎn)躲避障礙。

(3)自動(dòng)循跡功能,即小車可以自動(dòng)沿著規(guī)定的路線行駛。

(4)能夠?qū)崟r(shí)顯示小車行駛的速度、路程等數(shù)據(jù)。

要求通過此次的實(shí)際動(dòng)手設(shè)計(jì)掌握以下基本技能:

(1)學(xué)會(huì)電子產(chǎn)品的設(shè)計(jì)開發(fā)過程;

(2)掌握單片機(jī)原理、遙控原理、顯示原理等;

(3)能夠熟練進(jìn)行系統(tǒng)的硬件電路設(shè)計(jì)以及軟件設(shè)計(jì);

(4)熟練使用相關(guān)的電子設(shè)計(jì)和仿真軟件;

(5)查閱國內(nèi)外相關(guān)文獻(xiàn),掌握智能小車的最新研究動(dòng)態(tài)和未來發(fā)展趨勢。

第二章 總體方案設(shè)計(jì)與論證

本設(shè)計(jì)方案采用微處理器(AT89C52單片機(jī))作為整個(gè)系統(tǒng)控制的中心,主要由兩個(gè)部分構(gòu)成,紅外遙控發(fā)射部分和智能小車部分。其中智能小車部分主要由以下子模塊構(gòu)成:單片機(jī)控制模塊、電源模塊、電機(jī)驅(qū)動(dòng)模塊、循跡避障模塊、轉(zhuǎn)速檢測模塊、紅外接收器和數(shù)據(jù)顯示模塊組成;紅外遙控發(fā)射部分主要由遙控按鍵、編碼芯片、紅外發(fā)射三個(gè)部分構(gòu)成。其總體設(shè)計(jì)框圖包括兩個(gè)部分,如圖2.1所示:

   a 遙控部分框圖                         b 小車部分框圖

                 圖2.1 系統(tǒng)總體設(shè)計(jì)框圖

2.1 遙控控制模塊設(shè)計(jì)與論證

目前比較常用的遙控控制方式有兩種,紅外遙控控制系統(tǒng)和無線遙控控制系統(tǒng)。

方案一:選擇紅外遙控裝置作為小車的遙控控制器。紅外遙控是通過遙控發(fā)射器內(nèi)的編碼芯片將按鍵信息調(diào)制成一串0和1的二進(jìn)制代碼,然后通過紅外線發(fā)出,最后被紅外接收裝置接收進(jìn)行解碼,再運(yùn)用單片機(jī)對解碼后的碼信息進(jìn)行識別,然后再根據(jù)不同的碼信息進(jìn)行不同的控制操作[9]。

方案二:選擇無線電遙控裝置作為小車的遙控控制器。無線電遙控是利用不同頻率的無線電波對遠(yuǎn)方的各種機(jī)構(gòu)進(jìn)行控制的遙控設(shè)備。這些信號被遠(yuǎn)方的接收設(shè)備接收后,可以驅(qū)動(dòng)其他各種相應(yīng)的機(jī)械或者電子設(shè)備去完成各種操作[6]。

紅外遙控和無線遙控是對不同的載波來說的,紅外遙控器是用紅外線來傳送控制信號的,它的特點(diǎn)是有方向性中間不能被阻擋,在室內(nèi)使用時(shí)大概在7m的范圍內(nèi)有效;無線遙控器是用無線電波來傳送控制的信號的,它的特點(diǎn)是無方向性,可以不面對面控制,距離遠(yuǎn),有效距離可達(dá)數(shù)十米甚至數(shù)公里。

以上兩種方案均可作為本設(shè)計(jì)的遙控控制器,雖然無線遙控控制的距離更遠(yuǎn)也更加靈敏,但對于本設(shè)計(jì)來說使用紅外遙控已經(jīng)足夠了,而且紅外遙控的原理更加簡單易懂,所以本設(shè)計(jì)采用方案一即紅外遙控作為小車的遙控控制系統(tǒng)。

2.2 電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì)與論證

目前比較常用的小車驅(qū)動(dòng)電機(jī)主要有兩種選擇:

方案一:選擇直流電機(jī)作為小車的動(dòng)力驅(qū)動(dòng)。直流電機(jī)是將直流電能轉(zhuǎn)換為機(jī)械能的一種裝置,因其轉(zhuǎn)動(dòng)力矩大、體積較小、重量很輕、使用方便,所以其在一些小型的電動(dòng)裝置中的應(yīng)用較多。直流電機(jī)的運(yùn)行方式是這樣的:在它里面有圓形的磁體會(huì)產(chǎn)生磁場,當(dāng)給它轉(zhuǎn)子上的繞組通電時(shí),通電線圈在磁場中便會(huì)產(chǎn)生洛倫茲力帶著線圈即轉(zhuǎn)子轉(zhuǎn)動(dòng),當(dāng)轉(zhuǎn)子轉(zhuǎn)動(dòng)時(shí)通電線圈內(nèi)的磁場方向?qū)?huì)改變,所以繞組上的電流也要變換流向,在方向一直不變的洛倫茲力控制下電機(jī)將向順時(shí)針或逆時(shí)針持續(xù)轉(zhuǎn)動(dòng)。由H型橋式電路直接驅(qū)動(dòng)直流電機(jī)控制電機(jī)的正反轉(zhuǎn),通過軟件編程使單片機(jī)輸出不同占空比的PWM(脈寬調(diào)制信號)來控制直流電機(jī)的轉(zhuǎn)速進(jìn)而控制小車的行駛速度[6]。

方案二:選擇步進(jìn)電機(jī)作為小車的動(dòng)力驅(qū)動(dòng)。步進(jìn)電機(jī)是將輸入端輸入的電脈沖信號轉(zhuǎn)變?yōu)檗D(zhuǎn)子的角位移的可以實(shí)現(xiàn)精確定位的電機(jī)。電機(jī)轉(zhuǎn)動(dòng)的快慢取決于脈沖信號的頻率、轉(zhuǎn)動(dòng)的圈數(shù)取決于脈沖的個(gè)數(shù),在不超載的情況下其轉(zhuǎn)動(dòng)速度不受負(fù)載的影響,即給步進(jìn)電機(jī)輸入一個(gè)脈沖信號,電機(jī)的轉(zhuǎn)子則轉(zhuǎn)過一個(gè)角度,給其加上連接不斷的脈沖波形則步進(jìn)電機(jī)就能持續(xù)轉(zhuǎn)動(dòng)下去[5]。

相比直流電機(jī),步進(jìn)電機(jī)轉(zhuǎn)過的角度是由脈沖信號控制的其可以實(shí)現(xiàn)小車的精確定位停車,步進(jìn)電機(jī)調(diào)速也更加容易,只要輸入不同頻率的脈沖信號就能控制小車的行駛速度,而且它還有很好的止動(dòng)能力。所以在本設(shè)計(jì)中我們選用了步進(jìn)電機(jī)作為小車的驅(qū)動(dòng)電機(jī)。

2.3 避障循跡模塊設(shè)計(jì)與論證

目前主要有兩種方案來實(shí)現(xiàn)小車的自動(dòng)避障功能:

方案一:采用紅外反射式光電傳感器、電壓比較器及一些電阻構(gòu)成的障礙物檢測電路來檢測小車前方的障礙。障礙物檢測電路安裝在小車前部的中間及左右兩邊,來檢測小車前方的障礙物。其障礙檢測過程如下:紅外發(fā)光二極管發(fā)出紅外光,如果遇到小車前面的障礙物,紅外線就會(huì)被物體反射回來,被光敏三極管吸收此時(shí)光敏三極管導(dǎo)通,并在輸出端輸出低電平信號至單片機(jī),然后單片機(jī)調(diào)用尋跡避障子程序控制小車做出相應(yīng)的避障反應(yīng),當(dāng)左邊遇到障礙物時(shí)單片機(jī)會(huì)自動(dòng)調(diào)用右轉(zhuǎn)子程序控制其右轉(zhuǎn),當(dāng)右邊遇到障礙物時(shí)單片機(jī)會(huì)自動(dòng)調(diào)用左轉(zhuǎn)子程序控制其左轉(zhuǎn)。當(dāng)無障礙物時(shí),發(fā)出的紅外線不被反射,光敏三極管截止,輸出高電平信號,小車?yán)^續(xù)向前行駛[8]。

方案二:采用超聲波原理來檢測小車前方的障礙。其檢測障礙的原理如下:先由超聲波發(fā)射器向小車前方發(fā)射超聲波,超聲波在向前傳播過程中,若遇到障礙物則會(huì)被反射回去,反射波被超聲波回收裝置接收后會(huì)產(chǎn)生一個(gè)電信號然后被轉(zhuǎn)化為高低電平信號反饋給單片機(jī),若為高電平則說明前方遇到障礙,然后由單片機(jī)調(diào)用避障子程來控制小車做出相應(yīng)的躲避障礙的動(dòng)作[7]。

在本設(shè)計(jì)我們采用了第一種方案實(shí)現(xiàn)小車的自動(dòng)避障功能。

2.4 數(shù)據(jù)顯示模塊設(shè)計(jì)與論證

根據(jù)題目的要求小車可以實(shí)時(shí)顯示其運(yùn)動(dòng)的速度、距離等數(shù)據(jù)。主要有兩種方案來實(shí)現(xiàn):

方案一:用共陽極數(shù)碼管和可編程的鍵盤接口芯片組成數(shù)據(jù)顯示電路,接口芯片直接與單片機(jī)的I/O口相連,由單片機(jī)精確控制實(shí)現(xiàn)LED動(dòng)態(tài)顯示。

方案二:用LCD液晶顯示屏直接與單片機(jī)相連組成數(shù)據(jù)顯示電路。LCD液晶顯示屏是一種專門用來顯示字符和數(shù)字的點(diǎn)陣型液晶模塊,它是由若干個(gè)5X7或5X11點(diǎn)陣字符位組成的,一個(gè)字符占據(jù)一個(gè)點(diǎn)陣字符位,每位之間有一個(gè)點(diǎn)距的間隔將字符隔開,行與行之間也有間隔[8]。

由于本設(shè)計(jì)需要顯示的數(shù)據(jù)較多,若用LED數(shù)碼管來顯示需多個(gè)數(shù)碼管才能滿足要求,這樣電路設(shè)計(jì)過于復(fù)雜,相反只用一個(gè)LCD液晶顯示屏即可顯示要求數(shù)據(jù),所以本設(shè)計(jì)我們采用方案二即LCD顯示屏來顯示實(shí)時(shí)數(shù)據(jù)。

2.5 轉(zhuǎn)速測量模塊設(shè)計(jì)與論證

方案一:選擇霍爾開關(guān)型傳感器測量小車車輪轉(zhuǎn)速。具體做法是:在非磁性材料制作的轉(zhuǎn)子上,固定好一片鋼性磁體,將霍爾開關(guān)型傳感器的感知接收面和磁體的磁極相對, 并在安裝架上安裝好(注意磁場方向不要弄錯(cuò)),輪子轉(zhuǎn)動(dòng)時(shí)磁體會(huì)跟著轉(zhuǎn)動(dòng),在磁體轉(zhuǎn)到和傳感器的接收面相對時(shí), 霍爾傳感器便輸出一個(gè)脈沖信號, 由兩個(gè)脈沖間的時(shí)間間隔,便可算出轉(zhuǎn)速,然后再根據(jù)車輪半徑編程便可算出小汽車運(yùn)行的速度[10]。

方案二:選擇直射式光電檢測器測量小車車輪轉(zhuǎn)速。具體做法是: 在小車的驅(qū)動(dòng)輪的主軸上安裝一個(gè)開有十個(gè)透光槽的圓形葉片,保持葉片和驅(qū)動(dòng)輪能夠同步轉(zhuǎn)動(dòng),然后在驅(qū)動(dòng)輪旁安裝好直射式光電檢測器,葉片隨著車輪的轉(zhuǎn)動(dòng)不斷切割紅外發(fā)射管與紅外接受管之間的紅外線通路,當(dāng)葉片轉(zhuǎn)動(dòng)至透光槽與紅外線通路重合時(shí),檢測器導(dǎo)通,紅外接受管通過電流,當(dāng)葉片轉(zhuǎn)動(dòng)至使透光槽遮住時(shí),光通路斷開。隨著車輪不斷的轉(zhuǎn)動(dòng),便會(huì)輸出連續(xù)的脈沖序列,測出脈沖的個(gè)數(shù)便可知葉片轉(zhuǎn)過的孔數(shù),從而可計(jì)算出車輪轉(zhuǎn)動(dòng)的轉(zhuǎn)角和轉(zhuǎn)速,然后再根據(jù)車輪半徑由軟件編程便可算出小車運(yùn)行的速度[11]。

以上兩種方案都能夠測出小車車輪的轉(zhuǎn)速。但是在本設(shè)計(jì)中,對于方案一來說,要想在很小的小車車輪上密集安裝磁片比較困難,而且彼此之間也容易產(chǎn)生干擾。因此本設(shè)計(jì)擬采用方案二測量小車的轉(zhuǎn)速。

2.6 電源模塊設(shè)計(jì)與論證

電源是整個(gè)小車系統(tǒng)運(yùn)行的基本條件,它的性能的好壞直接決定整個(gè)系統(tǒng)運(yùn)行的穩(wěn)定性和性能。小車的供電電源包含兩部分,單片機(jī)控制模塊電源和電機(jī)驅(qū)動(dòng)模塊電源,我們將單片機(jī)及其外圍電路和步進(jìn)電機(jī)分開供電,兩者互相不影響,實(shí)現(xiàn)穩(wěn)定供電。由于步進(jìn)電機(jī)需較高的供電電壓而單片機(jī)和其邏輯單元最大供電電壓不能超過5V,因此需設(shè)計(jì)穩(wěn)壓電路。

方案一:采用8節(jié)1.5V干電池串聯(lián)共12V直接給步進(jìn)電機(jī)供電,然后經(jīng)過由LM7805穩(wěn)壓芯片構(gòu)成的穩(wěn)壓電路將電壓降至5V后給電片機(jī)及其外圍邏輯電路供電。但是本方案由于電池電量有限,而且數(shù)量較多的干電池重量較大會(huì)給驅(qū)動(dòng)電機(jī)帶來太大負(fù)擔(dān),也占用了太大的空間在體積較小的小車上使用太不方便,所以放棄了該方案。

方案二:采用12V蓄電池直接給步進(jìn)電機(jī)供電,將電壓降至5V后給單片機(jī)及其外圍電路供電。蓄電池具有較長的續(xù)航能力以及電壓輸出的值基本不怎么變化,但是因?yàn)樾铍姵氐捏w積和質(zhì)量過大,并不適合本設(shè)計(jì)的使用,所以我們并沒有使用蓄電池來供電。

方案三:采用3節(jié)4.2V鋰電池串聯(lián)的方式共直接給步進(jìn)電機(jī)供電,然后經(jīng)過由穩(wěn)壓芯片構(gòu)成的穩(wěn)壓電路將電壓降至5V后給單片機(jī)及其外圍邏輯電路供電。本方案鋰電池的電量較足并且可以充電重復(fù)利用,3節(jié)鋰電池重量和占用的空間都較小,因此該方案比較可行,最終我們選擇了該方案作為小車的驅(qū)動(dòng)電源[14]。


第三章 各模塊硬件電路設(shè)計(jì)

本設(shè)計(jì)的遙控智能小車的硬件部分共分為兩大模塊:紅外遙控發(fā)射器硬件模塊和智能小車部分硬件模塊。其中紅外遙控發(fā)射硬件模塊包含遙控按鍵、編碼芯片、紅外發(fā)射三個(gè)子模塊;智能小車部分硬件模塊包含單片機(jī)控制模塊、電機(jī)驅(qū)動(dòng)模塊、避障循跡模塊、顯示模塊、紅外接收器模塊、電源模塊6個(gè)子模塊。

首先介紹紅外遙控發(fā)射器部分即遙控按鍵、編碼芯片、紅外發(fā)射三個(gè)子模塊的硬件設(shè)計(jì)。

3.1 紅外遙控發(fā)射器模塊

  3.1.1 紅外遙控模塊的工作原理

紅外線遙控是比較常見的一種遙控設(shè)備,它是利用波長為0.76~1.5μm之間的紅外線來傳送控制信號的遙控設(shè)備。其占據(jù)空間小、價(jià)格便宜、使用方便,在我們常用的家用電器比如電視、DVD,錄音機(jī)、空凋等和一些小型電動(dòng)玩具裝置上均已應(yīng)用了紅外線遙控設(shè)備。但是紅外遙控也有缺點(diǎn)比如容易受到空間和距離的限制,一般在7m的范圍內(nèi)有效且發(fā)射和接收之間不能被物體隔擋,但對于本設(shè)計(jì)的智能小車來說已經(jīng)能夠滿足要求。

紅外遙控系統(tǒng)一般由兩大部分組成:一個(gè)紅外發(fā)射部分,一個(gè)紅外接收部分。其中發(fā)射部分主要由按鍵鍵盤、編碼調(diào)制、LED紅外發(fā)送器構(gòu)成,它最重要的部分就是應(yīng)用編碼芯片對按鍵信息進(jìn)行編碼和發(fā)送;接收部分由光電轉(zhuǎn)換放大器、解調(diào)、解碼電路構(gòu)成,其最重要的部分是對接收到的編碼進(jìn)行解調(diào)。其原理如圖3.1所示:

                      圖3.1 紅外遙控系統(tǒng)原理框圖

按下遙控器的一個(gè)按鍵,遙控器的編碼芯片會(huì)對按鍵信息進(jìn)行編碼,然后通過LED紅外發(fā)射器發(fā)出脈沖編碼,被紅外接收頭接收后將編碼解出并輸入到單片機(jī)的外部中斷,對接收到的脈沖編碼進(jìn)行位“0”和位“1”的識別,再根據(jù)不同的碼信息調(diào)用相應(yīng)的子程序來對小車進(jìn)行不同的控制操作。

  3.1.2 HT6221編碼芯片簡介

HT6221是合泰公司生產(chǎn)的多功能遙控編碼芯片,工作電壓在1. 8V-3.5V,其采用PPM(Pulse Position Modulation)進(jìn)行編碼,周期能編碼16位地址碼和8位數(shù)據(jù)碼,最多能同時(shí)支持32個(gè)活動(dòng)鍵。其引腳結(jié)構(gòu)如圖3.2所示:

               

                  圖3.2 HT6221引腳圖

其各引腳說明如下表3-1所示:

3-1HT6221芯片引腳說明

引腳號

引腳名稱

          描述

0

AIN

低8位地址碼輸入

1-8

C1-C8

鍵盤列控制

9

  LED

按鍵指示燈

10-13

  R1-R4

鍵盤行控制, 高電平有效

14

  DOUT

串行數(shù)據(jù)輸出引腳, 38KHz發(fā)射頻率

15

  VDD

1.8V- 3.5V

16

  DT

最重要數(shù)據(jù)位(DT)代碼設(shè)置

17、18

  X2、X1

455KHz振蕩器輸出,455KHz振蕩器輸入

19

  VSS

接地

    遙控編碼有兩種:位0和位1,其低電平脈寬相同但高電平脈寬不一樣。采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的脈沖表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的脈沖表示二進(jìn)制的“1”。其波形如圖3.3所示:

   

       圖3.3 遙控碼的“0”和“1”(注:接收端的波形與發(fā)射斷相反)

  3.1.3 紅外遙控發(fā)射器

遙控發(fā)射器專用芯片很多,在本設(shè)計(jì)中我們運(yùn)用了HT6221芯片來實(shí)現(xiàn)紅外編碼的發(fā)射。其電路如圖3.4所示:   

圖3.4 遙控發(fā)射器電路原理圖

圖3.4中當(dāng)有任意一個(gè)按鍵按下后,按鍵指示燈(D1)發(fā)光,HT6221編碼芯片能夠產(chǎn)生脈沖編碼,該脈沖編碼會(huì)被調(diào)制成38KHz的脈沖信號然后通過圖中的紅外發(fā)射二極管(D2)發(fā)射出去[8]。

所按的按鍵不同其發(fā)出的編碼脈沖也不同,按鍵所代表的功能也就不同,其各按鍵的功能分配如下表3-2所示:


3-2 按鍵功能分配表

             按鍵

              功能

              K1

        控制小車的啟動(dòng)

              K2

        控制小車的停止

              K3

        控制小車的加速

              K4

        控制小車的左轉(zhuǎn)

              K5

        控制小車的右轉(zhuǎn)

              K6

        控制小車的倒退

下面是智能小車部分即單片機(jī)控制模塊、紅外接收器模塊、電機(jī)驅(qū)動(dòng)模塊、避障循跡模塊、顯示模塊、電源模塊6個(gè)子模塊的硬件設(shè)計(jì)介紹。

3.2 單片機(jī)控制模塊

  3.2.1 單片機(jī)模塊電路

本設(shè)計(jì)我們采用AT89C52單片機(jī)作為智能小車部分的控制核心,AT89C52單片機(jī)是AT89系列的標(biāo)準(zhǔn)型8位單片機(jī),其與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)和8052產(chǎn)品引腳兼容,功耗低、性能強(qiáng)大、價(jià)格便宜適用于許多較為復(fù)雜控制的場合。AT89C52單片機(jī)的內(nèi)部結(jié)構(gòu)如下:一個(gè)以ALU為中心的8位中央處理器,256字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM),8K字節(jié)用來存儲(chǔ)程序的Flash內(nèi)部程序存儲(chǔ)器即片內(nèi)ROM(可反復(fù)擦寫1000次),4個(gè)8位可編程I/O口(P0、P1、P2、P3),3個(gè)16位定時(shí)/計(jì)數(shù)器,8個(gè)中斷源,兩個(gè)中斷優(yōu)先級的中斷控制系統(tǒng),一個(gè)全雙工串行通信口,一個(gè)片內(nèi)振蕩器和時(shí)鐘電路[1]。AT89C52單片機(jī)最小應(yīng)用系統(tǒng)主要由單片機(jī)、復(fù)位電路、振蕩電路等部分組成。本設(shè)計(jì)的單片機(jī)控制模塊原理圖如圖3.5所示:

                             圖3.5 單片機(jī)控制模塊

本設(shè)計(jì)中我們使用了AT89C52單片機(jī)的大部分引腳,其具體的引腳功能分配如下表3-3所示:

3-3 單片機(jī)引功能分配表

       引腳

                  功能分配

   P0.0-P0.7

接LCD1602的D0-D7引腳,作為數(shù)據(jù)信息的輸出引腳

   P1.0-P1.2

接LCD1602的RS、RW、E引腳,作為數(shù)據(jù)信息的控制端

P1.3-P1.5、P1.7

連接避障循跡電路的輸出端

     P1.6

連接轉(zhuǎn)速測量電路的脈沖輸出端

    P2.4-P2.7

連接電機(jī)驅(qū)動(dòng)芯片的脈沖信號輸入端

      P3.2

外部中斷,連接紅外接收器的輸出端

   VCC

接+5V電源

   GND

接地

  3.2.2 復(fù)位電路

單片機(jī)的復(fù)位,是為了初始化單片機(jī)的工作狀態(tài),有時(shí)當(dāng)程序運(yùn)行出錯(cuò)或因操作錯(cuò)誤而使系統(tǒng)處于鎖死狀態(tài),為了擺脫困境,也可按復(fù)位鍵重新初始化單片機(jī)。RST引腳是復(fù)位信號的輸入端,要實(shí)現(xiàn)復(fù)位操作必須使RST引腳上至少保持兩個(gè)機(jī)器周期的高電平,再從高電平變?yōu)榈碗娖酵瓿蓮?fù)位。復(fù)位電路由按鍵復(fù)位和上電復(fù)位兩種方式,本設(shè)計(jì)采用按鍵復(fù)位實(shí)現(xiàn)復(fù)位操作。單片機(jī)按鍵復(fù)位電路如圖3.6所示:

      

                       圖3.6 復(fù)位電路

按鍵復(fù)位是通過按鍵使復(fù)位引腳經(jīng)電阻R0與VCC電源接通來實(shí)現(xiàn)的,按下復(fù)位鍵時(shí),RST引腳為高電平;松開復(fù)位按鍵后,RST引腳逐漸將為低電平,復(fù)位結(jié)束。

  3.2.3 振蕩電路

AT89C52單片機(jī)內(nèi)有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為芯片引腳XTAL2。只要在片外通過XTAL1和XTAL2引腳跨接振蕩元件(如晶體振蕩器),則可構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,單片機(jī)通電后即可工作。其外部振蕩電路如圖3.7所示:

      

                         圖3.7 振蕩電路

AT89C52單片機(jī)內(nèi)部RAM容量很小,當(dāng)單片機(jī)需要存放大量數(shù)據(jù)時(shí)就必須擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器。此外AT89C52單片機(jī)的I/O口數(shù)量和功能很有限,也常常要擴(kuò)展外部接口芯片。由于本設(shè)計(jì)不需要太多的I/O口,內(nèi)部程序存儲(chǔ)器也夠用,所以不用擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器和外部接口芯片。

3.3 紅外接收器及解碼

紅外接收器也叫做一體化紅外接收頭,其內(nèi)部是由紅外監(jiān)測二極管,放大器,限副器,帶通濾波器,積分電路,比較器等構(gòu)成的。紅外監(jiān)測二極管接收到紅外信號后,會(huì)把信號送到放大器和限幅器,限幅器把脈沖幅度控制在一定的水平。交流信號進(jìn)入帶通濾波器,帶通濾波器只允許30khz到60khz的負(fù)載波通過,然后脈沖信號再通過解調(diào)電路和積分電路進(jìn)入比較器,由比較器輸出高低電平信號,還原出發(fā)射端的信號波形。但為了提高接收的靈敏度輸出的高低電平和發(fā)射端是反相的。紅外接收頭有很多的種類,一般都有電源引腳、信號輸出引腳和接地引腳。根據(jù)發(fā)射端調(diào)制載波的不同應(yīng)選用相應(yīng)解調(diào)頻率的接收頭,本設(shè)計(jì)我們采用一體化紅外接收頭1838來解調(diào)HT6221編碼芯片的編碼。其實(shí)物圖如圖3.8所示:

                          

                          圖3.8 1838紅外接收頭

由于紅外接收頭內(nèi)部放大器也很大的增益,這樣很會(huì)容易引起干擾,因此在接收頭的電源引腳上須加上大小在22uf以上的濾波電容。本設(shè)計(jì)的紅外接收電路如圖3.9所示:

         

                              圖3.9 紅外接收電路圖

其中U6為1838紅外接收頭,電容C4為濾波電容,DOUT 是解調(diào)信號的輸出端,直接與單片機(jī)的P3.2引腳即INT0中斷相連[8]。

解碼的重點(diǎn)是怎樣識別位0和位1,由于位0和位1的低電平脈寬相同但高電平脈寬不一樣。所以需要根據(jù)高電平的寬度區(qū)別位0和位1,如果從0.56ms低電平信號過后延時(shí)了0.56ms以后如果能讀到低電平信號說明該位為0反之則為1,為了可靠起見延時(shí)必須介于0.56ms和1.12ms之間,否則如果該位為0讀到的已是下一位的高電平,因此我們?nèi)∑渲虚g值即(1.12ms+0.56ms)/2=0.84ms。

當(dāng)按下遙控器的按鍵后,便有紅外脈沖編碼信號發(fā)出,經(jīng)紅外接收頭接收解碼后在其輸出端輸出檢波整形后的方波信號,然后直接輸入至單片機(jī)外部中斷進(jìn)行碼信息的識別,單片機(jī)再調(diào)用相應(yīng)子程序執(zhí)行對應(yīng)的操作。具體解碼操作流程圖如圖3.10所示:

               

                     圖3.10 紅外接收解碼流程圖

3.4 電機(jī)驅(qū)動(dòng)模塊

  3.4.1 步進(jìn)電機(jī)的工作原理

步進(jìn)電機(jī)是一種將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓位移的電機(jī)。電機(jī)轉(zhuǎn)動(dòng)的快慢取決于脈沖信號的頻率、轉(zhuǎn)動(dòng)的圈數(shù)取決于脈沖的個(gè)數(shù),在不超載的情況下其轉(zhuǎn)動(dòng)速度不受負(fù)載的影響,即給步進(jìn)電機(jī)輸入一個(gè)脈沖信號,電機(jī)的轉(zhuǎn)子就轉(zhuǎn)過一個(gè)固定角度(步距角),給其輸入連續(xù)的脈沖信號步進(jìn)電機(jī)就能連續(xù)轉(zhuǎn)動(dòng)[5]。

在本設(shè)計(jì)中我們采用步距角為1.8度的四相步進(jìn)電機(jī)作為小車的驅(qū)動(dòng)電機(jī),其內(nèi)部結(jié)構(gòu)及元件圖如圖3.11所示:

                  圖3.11 步進(jìn)電機(jī)結(jié)構(gòu)和元件圖

四相步進(jìn)電機(jī)有著比較小的體積和轉(zhuǎn)矩,該電機(jī)共有5根引出線,分別是內(nèi)部四組繞組線圈A、B、C、D的四根引出線,一根電源引出線,其采用單極性直流電源供電,使A、B、C、D四相繞組輪流供電,轉(zhuǎn)子就會(huì)沿著A、B、C、D方向轉(zhuǎn)動(dòng)。其旋轉(zhuǎn)角度與脈沖數(shù)成正比,旋轉(zhuǎn)頻率與脈沖頻率成正比。

本設(shè)計(jì)的步進(jìn)電機(jī)采用四相八拍的工作方式,即A-AB-B-BC-C-CD-D-DA-A

的通電順序工作。當(dāng)通電順序?yàn)锳-AB-B-BC-C-CD-D-DA時(shí)電機(jī)正轉(zhuǎn),當(dāng)通電順序?yàn)镈A-D-CD-C-BC-B-AB-A時(shí)電機(jī)反轉(zhuǎn)。步進(jìn)電機(jī)工作時(shí)的時(shí)序波形圖如圖3.12所示:

                   圖3.12 步進(jìn)電機(jī)工作時(shí)序波形圖

  3.4.2 ULN2003芯片簡介

ULN2003驅(qū)動(dòng)芯片可以直接用來驅(qū)動(dòng)電流小于0.5A的步進(jìn)電機(jī)。ULN2003芯片是美國TI公司和Sprague公司開發(fā)的高壓大電流達(dá)林頓晶體管陣列電路具有較高的電流增益和工作電壓、較寬的溫度范圍、較強(qiáng)的驅(qū)動(dòng)負(fù)載能力等特點(diǎn),適和應(yīng)用于各種高速大功率的驅(qū)動(dòng)系統(tǒng)中。其內(nèi)部結(jié)構(gòu)及引腳如圖3.13所示:

               

                        圖3.13 ULN2003芯片引腳圖

其引腳說明如表3-4所示:

3-4ULN2003芯片引腳說明

             引腳

           功能說明

           IN1-IN7

     脈沖信號輸入端(接單片機(jī))

              GND

            接地

          OUT1-OUT7

     驅(qū)動(dòng)信號輸出端(接步進(jìn)電機(jī))

             COM

          接+5V電源

ULN2003驅(qū)動(dòng)芯片的輸出結(jié)構(gòu)是集電極開路的,所以要在輸出端接一個(gè)上拉電阻,通常單片機(jī)驅(qū)動(dòng)ULN2003時(shí),上拉2K的電阻較為合適。

  3.4.3 步進(jìn)電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)

由于單片機(jī)的輸出電流太小,而步進(jìn)電機(jī)需要較大的驅(qū)動(dòng)電流,所以需要驅(qū)動(dòng)電路來連接單片機(jī)和步進(jìn)電機(jī)。本設(shè)計(jì)中我們采用四相步進(jìn)電機(jī)作為小車的驅(qū)動(dòng)電機(jī),用單極性直流電源供電。采用ULN2003芯片直接驅(qū)動(dòng)步進(jìn)電機(jī),步進(jìn)電機(jī)驅(qū)動(dòng)電路如圖3.14所示:

圖3.14 步進(jìn)電機(jī)驅(qū)動(dòng)電路

ULN2003的輸入端直接與單片機(jī)的P2.4-P2.7引腳相連,單片機(jī)輸出不同的脈沖信號,這些脈沖信號經(jīng)ULN2003驅(qū)動(dòng)芯片放大后分別控制步進(jìn)電機(jī)的啟動(dòng)、停止、正轉(zhuǎn)、反轉(zhuǎn)、加速和減速。本設(shè)計(jì)中只要對步進(jìn)電機(jī)的各相繞組按合適的時(shí)序通電,就能使步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。正、反轉(zhuǎn)可由輸入不同順序的脈沖信號來控制以實(shí)現(xiàn)小車的前進(jìn)和后退;我們使用兩個(gè)步進(jìn)電機(jī)分別控制小車的左輪和右輪,通過單片機(jī)輸出不同頻率的脈沖使左右兩個(gè)車輪具備不同的轉(zhuǎn)速,由轉(zhuǎn)速差實(shí)現(xiàn)小車的轉(zhuǎn)向,當(dāng)左側(cè)車輪轉(zhuǎn)速大于右側(cè)車輪時(shí)小車右轉(zhuǎn),當(dāng)右側(cè)車輪轉(zhuǎn)速大于左側(cè)時(shí)小車左轉(zhuǎn)。

3.5 避障循跡模塊

本設(shè)計(jì)我們采用了紅外反射式光電傳感器、電壓比較器及一些電阻來構(gòu)成障礙物檢測電路,并直接與單片機(jī)的P1.4引腳相連,其可將檢測到的模擬信號轉(zhuǎn)化為高低電平信號然后輸入到單片機(jī),單片機(jī)根據(jù)輸入的高低電平信號來判斷是否有障礙物,若有則調(diào)用自動(dòng)避障子程序控制小車做出相應(yīng)的避障動(dòng)作。障礙物檢測電路如圖3.15所示:

圖3.15 障礙物檢測電路

圖中U3紅外反射式光電傳感器是由紅外發(fā)光二級管和光敏三極管組成的,紅外發(fā)光二級管用來發(fā)射紅外線,光敏三極管用來接收被反射回來的紅外線。紅外接收/檢測器有一個(gè)內(nèi)置的只允許紅外光線通過的光濾波器和一個(gè)只允許38.5 kHz左右電信號通過的電子濾波器,這樣就防止了外來光源對紅外接收器的干涉。

U4是電壓比較器,它能夠?qū)⑤斎氲哪M電壓信號轉(zhuǎn)化為高低電平信號,當(dāng)3腳電平大于4腳時(shí),輸出端1腳輸出為高電平,反之輸出為低電平。障礙物檢測電路安裝在小車前部的中間及左右兩邊,來檢測小車前方的障礙物。其障礙檢測過程如下:紅外二極管發(fā)出紅外光,如果遇到小車前面的障礙物,紅外線就會(huì)被物體反射回來并被光敏三極管吸收,此時(shí)光敏三極管導(dǎo)通并在輸出端輸出低電平信號至單片機(jī),然后單片機(jī)調(diào)用尋跡避障子程序控制步進(jìn)電機(jī)做出相應(yīng)的避障反應(yīng),當(dāng)左邊遇到障礙物時(shí)小車右轉(zhuǎn),當(dāng)右邊遇到障礙物時(shí)小車左轉(zhuǎn)。當(dāng)無障礙物時(shí),發(fā)出的紅外線不被反射,光敏三極管截止,輸出高電平信號,小車?yán)^續(xù)向前行駛[9]。

循跡的原理和避障的原理是相同的,循跡電路安裝在小車底部,循跡是通過辨別黑白色來行走。工作過程如下:紅外發(fā)光二極管發(fā)出紅外光,當(dāng)遇到黑色,不反射紅外光,比較器輸出為高電平;當(dāng)遇到白線,紅外光被反射回來,比較器輸出為低電平。單片機(jī)根據(jù)輸入電平的變化判斷小車的行駛路線是否偏離,然后調(diào)用自動(dòng)避障子程序?qū)崿F(xiàn)小車的自動(dòng)循跡,當(dāng)左邊檢測到白色時(shí)小車右轉(zhuǎn),當(dāng)右邊檢測到白色時(shí)小車左轉(zhuǎn);當(dāng)兩邊檢測到的都是黑色時(shí)小車前進(jìn),當(dāng)兩邊檢測到的都是白色時(shí)小車停止。

3.6 轉(zhuǎn)速檢測模塊

施密特觸發(fā)器是具有特殊功能的非門,當(dāng)它的輸入端的電壓上升到某個(gè)值時(shí),輸出端會(huì)立即從高電平跳變?yōu)榈碗娖?而當(dāng)輸入端的電壓下降到某一個(gè)值時(shí),輸出端會(huì)立即從低電平跳變?yōu)楦唠娖健1驹O(shè)計(jì)采用直射式光電檢測器、施密特觸發(fā)器、三極管和若干電阻構(gòu)成的電路與單片機(jī)的P1.6引腳相連來測量小車車輪的轉(zhuǎn)速,其實(shí)物圖和電路圖如圖3.16所示:

                          

                      圖3.16 透射式光電測速實(shí)物和電路圖

具體的轉(zhuǎn)速檢測方法是:在小車的驅(qū)動(dòng)輪的主軸上安裝一個(gè)開有十個(gè)透光槽的圓形葉片,保持葉片和驅(qū)動(dòng)輪能夠同步轉(zhuǎn)動(dòng),然后在驅(qū)動(dòng)輪旁安裝好直射式光電檢測器,葉片隨著車輪的轉(zhuǎn)動(dòng)不斷切割紅外發(fā)射管與紅外接受管之間的光通路,當(dāng)葉片轉(zhuǎn)動(dòng)至透光槽與光通路重合時(shí),光通路導(dǎo)通,光敏三極管通過電流,輸出端會(huì)輸出一個(gè)低電平信號,當(dāng)葉片轉(zhuǎn)動(dòng)至使透光槽遮住時(shí),光通路斷開,輸出端會(huì)輸出一個(gè)高電平信號。隨著車輪不斷的轉(zhuǎn)動(dòng),光通路不斷的導(dǎo)通和斷開,輸出端便會(huì)輸出連續(xù)的脈沖序列,測出脈沖的個(gè)數(shù)便可知葉片轉(zhuǎn)過的孔數(shù),由葉片轉(zhuǎn)過的孔數(shù)可以知道車輪轉(zhuǎn)過的圈數(shù),從而可計(jì)算出車輪轉(zhuǎn)動(dòng)的轉(zhuǎn)速,然后再根據(jù)車輪半徑便可算出小車運(yùn)行的速度和路程[11]。

3.7 數(shù)據(jù)顯示模塊

本設(shè)計(jì)中小車的數(shù)據(jù)顯示電路采用液晶顯示屏LCD1602,LCD1602具有8位并行2線或者3線串行兩種接口方式。LCD1602液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點(diǎn)。具體的液晶顯示電路如圖3.17所示:

   

                       圖3.17 LCD液晶顯示電路

電路中LCD1602與AT89C52單片機(jī)使用并行數(shù)據(jù)通信。引腳1接電源電壓正極,引腳0、14、15分別接電源電壓負(fù)極,為LCD1602提供電源與背光電源;2腳接一個(gè)10K電位器用于調(diào)節(jié)背光燈光度;3、4、5腳分別接P1.0、P1.1、P1.2腳作為單片機(jī)控制信號輸入與輸出端;6—13腳接單片機(jī)的P0.0—P0.7腳作為單片機(jī)數(shù)據(jù)信息輸入端。數(shù)據(jù)顯示的原理為:首先通過數(shù)據(jù)顯示子程序?qū)⑿≤嚨乃俣取⒙烦痰葦?shù)據(jù)信息計(jì)算出來,然后再將這些數(shù)據(jù)信息通過單片機(jī)的P0.0-P0.7引腳直接輸出至LCD1602的DO-D7引腳[8]。

3.8 電源模塊

電源是整個(gè)小車系統(tǒng)運(yùn)行的基本條件,它的性能的好壞直接決定整個(gè)系統(tǒng)運(yùn)行的穩(wěn)定性和性能。小車的供電電源包含兩部分,單片機(jī)控制模塊電源和電機(jī)驅(qū)動(dòng)模塊電源,我們將單片機(jī)及其外圍電路和步進(jìn)電機(jī)分開供電,兩者互相不影響,實(shí)現(xiàn)穩(wěn)定供電。

本設(shè)計(jì)中我們采用3節(jié)4.2V鋰電池串聯(lián)共12.6V直接給步進(jìn)電機(jī)供電,用于驅(qū)動(dòng)小車電機(jī),也可降至5V后給單片機(jī)及其他邏輯單元供電。這三節(jié)電池的體積和重量都比較小,便于安裝在小車底座,不會(huì)造成電機(jī)負(fù)載過大,而且價(jià)格低、電流驅(qū)動(dòng)能力強(qiáng)。為了給單片機(jī)及其他邏輯單元供電,必須將鋰電池組的電壓降至5V,這里我們采用LM7805穩(wěn)壓芯片進(jìn)行降壓,穩(wěn)壓電路如圖3.18所示:

圖3.18 5V穩(wěn)壓電路

第四章 系統(tǒng)軟件設(shè)計(jì)

在進(jìn)行微機(jī)控制系統(tǒng)設(shè)計(jì)時(shí),除了系統(tǒng)硬件設(shè)計(jì)外,大量的工作就是如何根據(jù)每個(gè)對象的實(shí)際需要設(shè)計(jì)應(yīng)用程序,小車能否實(shí)現(xiàn)要求功能取決于軟件的編程是否合理。本設(shè)計(jì)采用模塊化程序設(shè)計(jì)法進(jìn)行系統(tǒng)軟件的設(shè)計(jì),主要包含主程序、避障循跡子程序、數(shù)據(jù)顯示子程序等程序模塊。由于本人水平和能力有限只完成了部分模塊的程序設(shè)計(jì)。

4.1 系統(tǒng)總體程序流程圖

系統(tǒng)的總體程序流程圖如圖4.1所示:

      

                      圖4.1 系統(tǒng)程序流程圖

在圖4.1系統(tǒng)程序流程圖中,開始時(shí)先是系統(tǒng)的初始化,包括定時(shí)器初始化,外部中斷的初始化,液晶顯示器的初始化。其中避障循跡子程序用于控制小車自動(dòng)躲避障礙和自動(dòng)沿著特定的黑線行駛;數(shù)據(jù)顯示子程序主要是將測得的車輪轉(zhuǎn)速換算成小車的行駛的速度、路程等數(shù)據(jù)進(jìn)而在LCD1602液晶顯示屏顯示。

4.2 避障循跡模塊程序設(shè)計(jì)

  4.2.1 避障程序流程圖

      

                           圖4.2 避障程序流程圖

圖4.2所示為小車避障程序流程圖,小車在行駛過程中由位于小車前部的四個(gè)障礙物檢測電路不斷檢測小車周圍環(huán)境,若遇到障礙物則將低電平信號輸入至單片機(jī),然后由單片機(jī)調(diào)用避障子程序控制小車作出相應(yīng)的避障動(dòng)作。如果左邊遇到障礙則調(diào)用右轉(zhuǎn)子程序,右邊遇到障礙則調(diào)用左轉(zhuǎn)子程序,前方遇到障礙則調(diào)用左轉(zhuǎn)或右轉(zhuǎn)子程序,沒有遇到障礙則調(diào)用直行子程序。具體的程序請見附錄B避障子程序。

4.2.2 循跡程序流程圖

      

                          圖4.3 循跡程序流程圖

圖4.3所示為循跡程序流程圖,小車在循跡行駛過程中安裝在小車底部的四個(gè)紅外反射式光電開關(guān)不斷檢測小車的行駛路線,若小車偏離黑線則將檢測到的低電平信號輸入至單片機(jī),單片機(jī)再調(diào)用循跡子程序控制小車使其沿著黑線行駛,如果小車偏向黑線左邊則調(diào)用右轉(zhuǎn)子程序,偏向黑線右邊則調(diào)用左轉(zhuǎn)子程序,在黑線上則調(diào)用直走子程序,完全偏離黑線則調(diào)用后退子程序。具體的程序請見附錄B循跡子程序。

4.3數(shù)據(jù)顯示模塊程序設(shè)計(jì)

                  

                      圖4.4 數(shù)據(jù)顯示程序流程圖

在圖4.4數(shù)據(jù)顯示程序流程圖中,首先初始化LCD1602,然后在液晶的第一行顯示“路程: cm”,液晶第二行顯示“速度: cm/s”然后由主程序不斷調(diào)用數(shù)據(jù)顯示程序不斷刷新cm或者cm/s前面的數(shù)字實(shí)現(xiàn)實(shí)時(shí)顯示的目的。具體的程序請見附錄B數(shù)據(jù)顯示子程序。

第五章 總結(jié)與展望

5.1 總結(jié)

本設(shè)計(jì)的智能小車基本上實(shí)現(xiàn)了題目要求的各項(xiàng)功能,可以用遙控來控制小車的啟停、左轉(zhuǎn)、右轉(zhuǎn)、前進(jìn)、倒退,小車能自動(dòng)沿著黑線行駛,遇到障礙時(shí)能夠自動(dòng)躲避障礙,而且可以實(shí)時(shí)顯示運(yùn)行的速度、路程等數(shù)據(jù)。通過本次設(shè)計(jì)讓我學(xué)會(huì)了電子產(chǎn)品的設(shè)計(jì)開發(fā)過程,掌握了紅外遙控原理、步進(jìn)電機(jī)的驅(qū)動(dòng)原理、采用紅外反射式光電開關(guān)檢測障礙的原理、顯示原理等自己以前并不了解的新知識,對單片機(jī)的結(jié)構(gòu)和其控制系統(tǒng)也有了更深的理解和認(rèn)識,對于Altium Designer、Proteus等電路設(shè)計(jì)和仿真軟件的操作也更加熟練,特別是在、自己最不擅長的軟件編程方面也有了一定的提高。

但是由于本人水平和能力有限,本設(shè)計(jì)中還存在一些不足之處。例如由于安裝在小車上面的紅外傳感器檢測范圍有限,存在一些檢測盲區(qū),光電檢測也容易收到外界環(huán)境和太陽光的干擾,有時(shí)可能會(huì)導(dǎo)致小車的循跡避障功能失效;小車是利用轉(zhuǎn)速差來轉(zhuǎn)彎的但是這種方法轉(zhuǎn)彎不夠順暢也不能持續(xù)轉(zhuǎn)彎并且對電機(jī)的損耗也較大,這些都有待進(jìn)一步的改進(jìn)和完善。

5.2 改進(jìn)與展望

在本設(shè)計(jì)中我們可以采用超聲波避障來代替紅外避障以減少外界干擾;多安裝幾個(gè)尋跡電路,在小車的車頭底部左右兩邊各一個(gè),中間底部左右兩邊各一個(gè),車尾底部左右兩邊各一個(gè),這樣可提高小車尋跡功能的可靠性和靈敏性;通過多組速度(不同脈沖所對應(yīng)的速度)的實(shí)際測試,尋找更合適的轉(zhuǎn)向速度,以提高轉(zhuǎn)向的精確度。

我們還可以為小車添加語音控制模塊,用語音來控制小車的一些狀態(tài),這樣將大大增加其人機(jī)交互控制的趣味性。


致謝

    不知不覺三個(gè)月的時(shí)間過去了,從開始的搜集查找相關(guān)文獻(xiàn)資料確定一個(gè)大體的設(shè)計(jì)思路到后來一步步的進(jìn)行各個(gè)模塊的具體設(shè)計(jì)再到現(xiàn)在最終設(shè)計(jì)的完成,特別感謝我的指導(dǎo)老師楊安平老師在設(shè)計(jì)過程中給予我的極大幫助,雖然老師平時(shí)很忙,但每周仍會(huì)抽出兩次時(shí)間來對我不懂的地方進(jìn)行耐心的指導(dǎo),并對我的設(shè)計(jì)方案提出一些改進(jìn)的意見,教會(huì)了我解決相關(guān)問題的具體思路和方法,并且在我不擅長的硬件設(shè)計(jì)和軟件設(shè)計(jì)方面給予了我細(xì)心的講解。本設(shè)計(jì)能夠順利完成設(shè)計(jì)任務(wù),除了楊老師外還有很多同學(xué)也對我的設(shè)計(jì)進(jìn)行了一些指導(dǎo)和幫助,在此對你們表示最誠摯的感謝!

    最后還要感謝各位評閱老師在百忙之中抽出時(shí)間對本論文進(jìn)行評閱,謝謝!



單片機(jī)源程序如下:
  1. #include<uart.h>
  2. #define LeftIR P1_2      //左邊紅外接收連接到P1_2
  3. #define RightIR P3_5    //右邊紅外接收連接到P3_5
  4. #define LeftLaunch P1_3 //左邊紅外發(fā)射連接到P1_3
  5. #define RightLaunch P3_6 //右邊紅外發(fā)射連接到P3_6
  6. void delay_nus(unsigned int i)
  7. {
  8.   i=i*10/12;
  9.   while(--i);
  10. }
  11. void Hardware_delay_1ms(void)
  12. {
  13.    TMOD &=0xF0;
  14.    TMOD |=0x01;  //T0——16位定時(shí)器器模
  15.   TH0 = 0xFC;
  16.    TL0 =0x18;    //64536
  17.    TF0=0;        //清除定時(shí)器溢出標(biāo)志
  18.    TR0=1;         //啟動(dòng)定時(shí)器   
  19.   while(TF0==0);  //等待計(jì)數(shù)完成
  20.   TR0=0;         //停止定時(shí)器
  21. }
  22. void delay_nms(int n) //延時(shí)ms
  23. {
  24.     int j;
  25.     for(j=n;j>0;j--)
  26.      Hardware_delay_1ms();   
  27. }
  28. void IRLaunch(unsigned char IR)
  29. {
  30. int counter;
  31. if(IR==‘L’)              //左邊發(fā)射
  32. for(counter=0;counter<38;counter++)
  33. {
  34. LeftLaunch=1;
  35. delay_nus(13);
  36. LeftLaunch=0;
  37. delay_nus(13);
  38. }
  39. if(IR=='R')              //右邊發(fā)射
  40. for(counter=0;counter<38;counter++)
  41. {
  42. RightLaunch=1;
  43. delay_nus(13);
  44. RightLaunch=0;
  45. delay_nus(13);
  46. }
  47. }
  48. void Forward(void)          //直行子程序
  49. {
  50. P1_1=1;
  51. delay_nus(1700);
  52. P1_1=0;
  53. P1_0=1;
  54. delay_nus(1300);
  55. P1_0=0;
  56. delay_nms(20);
  57. }
  58. void Left_Turn(void)      //左轉(zhuǎn)子程序
  59. {
  60. int i;
  61. for( i=1;i<=23;i++)
  62. {
  63. P1_1=1;
  64. delay_nus(1300);
  65. P1_1=0;
  66. P1_0=1;
  67. delay_nus(1300);
  68. P1_0=0;
  69. delay_nms(20);
  70. }
  71. }
  72. void Right_Turn(void)      //右轉(zhuǎn)子程序
  73. {
  74. int i;
  75. for( i=1;i<=23;i++)
  76. {
  77. P1_1=1;
  78. delay_nus(1700);
  79. P1_1=0;
  80. P1_0=1;
  81. delay_nus(1700);
  82. P1_0=0;
  83. delay_nms(20);
  84. }
  85. }
  86. void Backward(void)        //后退子程序
  87. {
  88. int i;
  89. for( i=1;i<=65;i++)
  90. {
  91. P1_1=1;
  92. delay_nus(1300);
  93. P1_1=0;
  94. P1_0=1;
  95. delay_nus(1700);
  96. P1_0=0;
  97. delay_nms(20);
  98. }
  99. }
  100. int main(void)
  101. {
  102. int irDetectLeft,irDetectRight;
  103. uart_Init();
  104. printf("Program Running!\n");
  105. while(1)
  106. {
  107. IRLaunch('R');                  //右邊發(fā)射
  108. irDetectRight = RightIR;        //右邊接收
  109. IRLaunch('L');                  //左邊發(fā)射
  110. irDetectLeft = LeftIR;          //左邊接收
  111. if((irDetectLeft==0)&&(irDetectRight==0))//同時(shí)接到紅外線
  112. {
  113. Backward();
  114. Left_Turn();
  115. Left_Turn();
  116. }
  117. else if(irDetectLeft==0)        //只有左邊接收到紅外線
  118. {
  119. Backward();
  120. Right_Turn();
  121. }
  122. else if(irDetectRight==0)       //只有右邊接收到紅外線
  123. {
  124. Backward();
  125. Left_Turn();
  126. }
  127. else
  128. Forward();
  129. }
  130. }


  131. 循跡子程序
  132. #include <uart.h>
  133. #define LD1    P1_2;   //左左檢測燈
  134. #define LD2    P1_3;   //中左檢測燈
  135. #define RD1    P3_5;   //中右檢測燈
  136. #define RD2    P3_6;   //右右檢測燈
  137. void delay_nus(unsigned int i)
  138. {
  139.   i=i*10/12;
  140.   while(--i);
  141. }  
  142. void Hardware_delay_1ms(void)
  143. {
  144.    TMOD &=0xF0;
  145.    TMOD |=0x01; //T0——16位定時(shí)器器模
  146.   TH0 = 0xFC;
  147.    TL0 =0x18;    //64536
  148.   TF0=0;        //清除定時(shí)器溢出標(biāo)志
  149.    TR0=1;         //啟動(dòng)定時(shí)器   
  150.   while(TF0==0);//等待計(jì)數(shù)完成
  151.    TR0=0;         //停止定時(shí)器
  152. }
  153. void delay_nms(int n)
  154. {
  155.     int j;
  156.     for(j=n;j>0;j--)
  157.      Hardware_delay_1ms();   
  158. }
  159. void Forward(void)           //直行子程序
  160. {
  161. P1_1=1;
  162.                             delay_nus(1440);
  163.                             P1_1=0;
  164.                             P1_0=1;
  165.                 delay_nus(1400);
  166.                             P1_0=0;
  167.                             delay_nms(20);
  168.               }
  169. void Left_Turn(void)      //左轉(zhuǎn)子程序
  170.                             {
  171.                             int i;
  172.                             for( i=1;i<=15;i++)
  173.                                           {
  174.                                           P1_1=1;
  175.                                           delay_nus(1420);
  176.                                           P1_1=0;
  177.                                           P1_0=1;
  178.                                           delay_nus(1400);
  179.                                           P1_0=0;
  180.                                           delay_nms(20);
  181.                                           }
  182.                             }
  183. void Right_Turn(void)       //右轉(zhuǎn)子程序
  184.                             {
  185.                             int i;
  186.                             for( i=1;i<=15;i++)
  187.                                           {
  188.                                           P1_1=1;
  189.                                 delay_nus(1440);
  190.                                           P1_1=0;
  191.                                           P1_0=1;
  192.                                 delay_nus(1420);
  193.                                           P1_0=0;
  194.                                           delay_nms(20);
  195.                                           }
  196.                             }
  197. void Backward(void)        //后退子程序
  198.                             {
  199.                             int i;
  200.                             for( i=1;i<=65;i++)
  201.                                           {
  202.                                           P1_1=1;
  203.                                 delay_nus(1400);
  204.                                           P1_1=0;
  205.                                           P1_0=1;
  206.                                 delay_nus(1440);
  207.                                           P1_0=0;
  208.                                           delay_nms(20);
  209.                                           }
  210.                             }
  211. int main ()
  212. {
  213. int L1,L2,R1,R2;
  214. uart_Init();
  215. printf("Program Running!\n");
  216.               while(1)
  217.               {
  218. L1=LD1;
  219.                   L2=LD2;
  220.                   R1=RD1;
  221.                   R2=RD2;
  222. if((L1==1)&&(R2==0))         //左燈檢測到黑色右燈檢測到白色 左轉(zhuǎn)
  223.                             {
  224.                             Left_Turn();
  225.                             }
  226. else if((L1==0)&&(R2==1))      //左燈檢測到白色右燈檢測到黑色 右轉(zhuǎn)
  227.                             {
  228.                   Right_Turn();
  229.                             }
  230. else if((L1==0)&&(L2==0)&&(R1==0)&&(R2==0)) //四個(gè)燈都檢測到白色 后退
  231.                             {
  232.                             Backward();
  233.                             }
  234. else if((L1==1)&&(L2==1)&&(R1==1)&&(R2==1))//四個(gè)燈都檢測到黑色 后退
  235.                             {
  236.                             Backward();
  237.                             }
  238. else      //前進(jìn)
  239.                             {
  240.                             Forward();
  241.                             }
  242.               }
  243.    }
  244. 數(shù)據(jù)顯示子程序
  245. bit lcd_busy()                //判忙函數(shù)
  246. {
  247.               bit result;
  248.               RS=0;
  249.               RW=1;
  250.               E=1;
  251.               _nop_();
  252.               _nop_();
  253.               _nop_();
  254.               _nop_();
  255.               result = (bit)(P0&0x80);
  256.               E=0;
  257.               return result;
  258. }
  259. void lcd_write_cmd(uchar cmd)   //液晶寫指令
  260. {
  261.               while(lcd_busy());
  262.               RS=0;
  263.               RW=0;
  264.               E=0;
  265.               _nop_();
  266.               _nop_();
  267.               P0=cmd;
  268.               _nop_();
  269.               _nop_();
  270.               _nop_();
  271.               _nop_();
  272.               E=1;
  273.               _nop_();
  274.               _nop_();
  275.               _nop_();
  276.               _nop_();
  277.               E=0;                           
  278. }
  279. void lcd_write_dat(uchar dat)                            //液晶寫數(shù)據(jù)指令
  280. {
  281. ……………………

  282. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
基于單片機(jī)的智能小車設(shè)計(jì).doc (1.04 MB, 下載次數(shù): 162)


回復(fù)

使用道具 舉報(bào)

ID:517182 發(fā)表于 2019-4-20 16:28 | 顯示全部樓層
怎么沒有完整的電路設(shè)計(jì)圖?發(fā)出來學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:717081 發(fā)表于 2020-3-30 21:11 | 顯示全部樓層
搜獲很大,很詳細(xì)
回復(fù)

使用道具 舉報(bào)

ID:720168 發(fā)表于 2021-1-18 15:30 | 顯示全部樓層
你好,發(fā)射電路的NPN是哪種類型
回復(fù)

使用道具 舉報(bào)

5#
無效樓層,該帖已經(jīng)被刪除
ID:960382 發(fā)表于 2021-8-13 16:34 | 顯示全部樓層
看看步進(jìn)電機(jī),也玩玩這個(gè)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 麻豆久久久久久 | 国产精品免费一区二区 | 成人欧美一区二区三区黑人孕妇 | 欧美精品一区二区免费 | 亚洲一区二区久久久 | 新疆少妇videos高潮 | 国产高清美女一级a毛片久久w | 国产精品99久久久久久久vr | 午夜视频一区二区 | 殴美一级片 | 永久av| 99精品免费在线观看 | 久久久不卡网国产精品一区 | 欧美日韩国产精品 | 国产精品成人一区二区三区 | 日韩伦理一区二区 | 欧美视频免费在线 | 福利视频网 | 国产美女永久免费无遮挡 | 日韩高清成人 | 国产精品一区二区福利视频 | 国产日日操 | 狠狠夜夜 | 久久的色| 国产日韩精品视频 | av片免费| 日本 欧美 国产 | 成人av观看 | 可以在线看的黄色网址 | 91美女视频| 日韩毛片在线免费观看 | 日韩一区二区在线视频 | 国产分类视频 | 午夜免费影视 | 狠狠的干 | 国产成人精品久久二区二区91 | 操人网| 美女福利视频一区 | 亚洲精品99999 | 在线免费观看黄色 | 在线一区视频 |