智能小車設(shè)計(智能小車設(shè)計方案)
設(shè)計任務(wù)和設(shè)計方案
本章節(jié)主要介紹該實驗設(shè)計的任務(wù)和要求,選擇出最適合本設(shè)計的方案。
1.1 設(shè)計任務(wù)
循跡避障二合一:(1)循跡功能:小車利用紅外傳感器探測黑線通過單片機控制電機實現(xiàn)小車左右轉(zhuǎn)和直行實現(xiàn)該功能;(2)避障功能:當(dāng)小車遇到障礙物時,傳感器將信號傳遞給單片機掉頭重新執(zhí)行循跡功能。
超聲波魔術(shù)手:超聲波魔術(shù)手即利用超聲波傳感器對人手進行檢測,小車進行前進后退,實現(xiàn)“跟手”功能。
遙控器控制小車:通過遙控器對小車進行前進后退和左右轉(zhuǎn)功能。
1.2 實驗設(shè)備
小車組件 電池 遙控器 改錐 紅外傳感器 超聲波傳感器 電機 計算機
1.3 設(shè)計方案
以STC89C52單片機為核心,制作一款智能小車,使其具有自動駕駛,手動駕駛和循跡前進等功能。在自動駕駛功能時,其前進過程中可以實現(xiàn)避障。手動駕駛時,遙控控制小車前進、后退、左轉(zhuǎn)、右轉(zhuǎn)等操作。以下是對要實現(xiàn)各個功能的設(shè)計:
(1)循跡避障二合一:小車利用紅外傳感器探測黑線將信號傳遞給單片機,然后通過單片機輸出信號控制電機,實現(xiàn)小車左右轉(zhuǎn)和直行;當(dāng)傳感器檢測到障礙物時,向后轉(zhuǎn)180°然后繼續(xù)尋找黑線,達到避障的目的。
(2)超聲波魔術(shù)手:利用超聲波傳感器發(fā)出的信號與人手的距離進行檢測,當(dāng)手向后或者向前時,小車也跟隨著進行前進后退,實現(xiàn)“跟手”功能。
(3)遙控器控制小車:通過遙控器發(fā)出信號,被小車的接收模塊接收信號,使小車進行前進后退和左右轉(zhuǎn)的功能。
本系統(tǒng)由硬件和軟件兩部分組成。硬件部分主要完成紅外編碼信號的發(fā)射和接受、障礙物檢測、軌跡檢測、直流電機運行等功能。軟件主要完成信號的檢測和處理、設(shè)備的驅(qū)動及控制等功能。STC89S52單片機查詢紅外信號并解碼,查詢各個檢測部分輸入的信號,并進行相應(yīng)處理,包括電機的正反轉(zhuǎn),判斷是否遇到障礙物,判斷是否小車其前進中有出軌等。系統(tǒng)結(jié)構(gòu)框圖如圖1-1所示。
圖1-1 系統(tǒng)結(jié)構(gòu)框圖
第二章 系統(tǒng)硬件方案
本章節(jié)主要介紹本設(shè)計中系統(tǒng)的硬件方案和各個部分電路的設(shè)計原理。通過各個模塊的功能描述了解其工作原理以及在設(shè)計的中作用。
2.1 STC89C52單片機系統(tǒng)設(shè)計
2.1.1 STC89C52的概述
STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C51使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU和在系統(tǒng)可編程Flash,使得STC89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、非常有效的解決方案。具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個16位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口。另外STC89C51可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運作頻率35MHz,6T/12T可選。
2.1.2 STC89C52單片機的最小系統(tǒng)
單片機最小系統(tǒng)說的通熟易懂的話就是以最少的元器件組成能讓單片機工作起來的系統(tǒng),接下來開始介紹51單片機最小系統(tǒng)必備的器件及其作用。
首先電源這對于一個電子產(chǎn)品的話是必不可少,它提供能源給系統(tǒng)運作,在本設(shè)計中由于51單片機的工作電壓在4.5~5.5V之間都可以正常工作所以我們采用了USB電源線連接手機充電器插頭或者5V的移動電源給系統(tǒng)進行供電。
其次晶振電路,XTAL1和XTAL2 是獨立的輸入和輸出反相放大器,它們可以被配置為使用石英晶振的片內(nèi)振蕩器,或者是器件直接由外部時鐘驅(qū)動。圖2-1中采用的是內(nèi)時鐘模式,即采用利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2 的引腳上外接定時元件(一個石英晶體和兩個電容),內(nèi)部振蕩器便能產(chǎn)生自激振蕩。一般來說晶振可以在1.2~12MHz 之間任選,甚至可以達到24MHz 或者更高,但是頻率越高功耗也就越大。在本實驗套件中采用的12M 的石英晶振。和晶振并聯(lián)的兩個電容的大小對振蕩頻率有微小影響,可以起到頻率微調(diào)作用。當(dāng)采用石英晶振時,電容可以在20 ~40pF 之間選擇(本設(shè)計使用30pF);當(dāng)采用陶瓷諧振器件時,電容要適當(dāng)?shù)卦龃笠恍?0~50pF 之間。通常選取30pF 的陶瓷電容就可以了。
圖2-1 晶振電路
復(fù)位電路分為:上電自動復(fù)位和開關(guān)復(fù)位。圖2-2 中所示的是開關(guān)復(fù)位,復(fù)位電路并聯(lián)在電容的兩端為復(fù)位按鍵,在芯片正常工作后,通過按下按鍵使RST管腳出現(xiàn)高電平達到手動復(fù)位的效果。一般來說,只要RST 管腳上保持10ms 以上的高電平,就能使單片機有效的復(fù)位。圖中所示的復(fù)位電阻和電容為經(jīng)典值,實際制作是可以用同一數(shù)量級的電阻和電容代替,讀者也可自行計算RC 充電時間或在工作環(huán)境實際測量,以確保單片機的復(fù)位電路可靠。
圖2-2 復(fù)位電路
完整的STC89C52單片機最小系統(tǒng)電路圖如圖2-3所示。
圖2-3 STC89C51單片機最小系統(tǒng)
2.2 主要硬件電路
2.2.1 電源模塊
電源模塊如圖2-4所示,C1.104電容為100nF的無極性電容。SW1閉合之后,電源模塊開始供電, 7.2V電壓信號(兩節(jié)3.6V蓄電池)被直接通到電機驅(qū)動模塊VCC2引腳上,為其供電。U3為降壓芯片(LM7805),因為開發(fā)板的大部分芯片正常工作電壓都在5V左右,所以引入該芯片,將7.2V電壓降到5V左右。EC1為耐壓10V,470uF的濾波電容,其作用是濾除7.4V的電壓。EC2為耐壓35V,220uF的濾波電容,防止電壓過低,將其穩(wěn)定在5V左右,因為單片機的供電電壓低于5V之后,單片機將無法正常工作。F1為保險絲,為防止接線短路燒壞元器件而設(shè)置。VCC接通后,其5V電壓會使電源指示燈電路接通,LED1亮起。J7為電壓檢測模塊,電路接通后, 7.4V電壓信號被直接接到J7上,實時監(jiān)測顯示電壓。
圖2-
4 電源模塊
供電口模塊如圖2-5所示,J5為開發(fā)板供5V電壓,D1為一二極管,其作用是防止開發(fā)板通過USB供電時,電流從開發(fā)板流向小車底板,導(dǎo)致開發(fā)板燒壞或燒毀USB線。
圖2-5 供電口
舵機模塊如圖2-6所示,本次實驗僅用其來為小車供電。
圖2-6 舵機模塊
2.2.2 電機驅(qū)動模塊
電機驅(qū)動模塊如圖2-7,采用L293D,采用光電測速方法實現(xiàn)速度采集。當(dāng)需要調(diào)速時由單片機產(chǎn)生占空比進行控制的其控制原理為:EN1為使能端,當(dāng)其接收到5V電壓信號跳變?yōu)楦唠娖綍r,芯片左端會響應(yīng)電機的驅(qū)動信號。其為低電平時,左端接收到任何信號芯片都不會做出反應(yīng)。IN1與IN2為控制端,接收到單片機傳來的控制信號后,產(chǎn)生高低電平控制指令傳到OUT1、OUT2端。OUT1與OUT2為輸出信號端,接到左電機接口上,通過分別改變其高低電平,實現(xiàn)電機的正轉(zhuǎn)反轉(zhuǎn)。芯片右端控制右電機,其使能端為EN2,控制原理與左端相同。J3、J4為電機的兩個接口,位于小車底板底部。
圖2-7 電機驅(qū)動模塊
2.2.3 紅外循跡與避障反饋模塊
紅外循跡和避障反饋模塊如圖2-8所示,循跡是通過紅外對管來執(zhí)行的。避障是由超聲波來控制,避障主要在下一超聲波模塊介紹。紅外對管由一個紅外發(fā)射管(例如LEAS1)和一個紅外接收管(例如RC1)組成,發(fā)射管上的膠套是為了降低環(huán)境自然光的干擾。
當(dāng)VCC接通時,LEAS1將會導(dǎo)通而發(fā)出紅外光,R3為調(diào)節(jié)其發(fā)光亮度而設(shè)置。當(dāng)RC1端接收到紅外光后,RC1下端電壓會發(fā)生變化,并將此電壓變化引出直接接到反饋模塊的電壓比較芯片U5(LM324)上的IN3,通過用螺絲刀擰動RW1改變其阻值,從而改變T3端的電壓,用來調(diào)節(jié)紅外循跡模塊的靈敏度。當(dāng)T3處電壓與IN3處電壓相同時,U5會在輸出端O1處輸出一個低電平信號給P3.4,從而使LED4接通發(fā)光。RW2與其工作原理相同。此過程通過J11接到單片機,單片機將決定對電機驅(qū)動模塊發(fā)出指令。實現(xiàn)下一步的控制,以實現(xiàn)循跡。
圖2-8 紅外循跡和避障反饋模塊
2.2.4 超聲波模塊
實現(xiàn)避障和魔術(shù)手用到的都是超聲波模塊,在實現(xiàn)避障時,檢測到障礙物反饋回的信號時,將信號傳遞給單片機,然后電機停止工作,控制電機右轉(zhuǎn)180°,然后繼續(xù)上邊的紅外循跡,當(dāng)切換到模式2的時候,進行魔術(shù)手模式,超聲波檢測信號,然后控制電機前進后退。HC-SR04超聲波測距模塊如下圖2-9,可提供2cm-400cm的非接觸式距離感測功能,測距精度可達高到3mm;模塊包括超聲波發(fā)射器、接收器與控制電路。
基本工作原理:
(1)采用I0口TRIG觸發(fā)測距,給最少10us的高電平信呈。
(2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;
(3)有信號返回,通過I0口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;
VCC供5V電源,GND為地線,TRIG觸發(fā)控制信號輸入,ECHO回響信號輸出等四個接口端如圖2-10。超聲波模塊共有四個引腳,其中兩個為電源和地,P2.0與P2.1分別為其輸入端與輸出端,將其接到單片機I/O口上之后,與單片機連通,將其接收到的超聲波信息傳到單片機,并讀取單片機返回的數(shù)據(jù),實現(xiàn)單片機控制超聲波的功能。
圖2-9 超聲波模塊實物
圖2-10 超聲波模塊原理圖
2.2.5 紅外遙控模塊
一般而言,紅外遙控系統(tǒng)由發(fā)射裝置和接收裝置兩大部分組成。其中發(fā)射裝置主要包括鍵盤電路、紅外編碼芯片、電源和紅外發(fā)射電路組成(例如遙控器);紅外接收設(shè)備可由紅外接收電路、紅外解碼芯片、電源和應(yīng)用電路組成(例如開發(fā)板上有紅外接收電路,單片機充當(dāng)解碼芯片)。紅外通信流程圖如圖2-11。通常為了使信號能更好的被傳輸,發(fā)送端將基帶二進制信號調(diào)制為脈沖串信號,通過紅外發(fā)射管發(fā)射。
圖2-11 紅外通信流程圖
紅外發(fā)射和紅外接受如下圖2-12所示。2為前進、8為后退、4和6為左右轉(zhuǎn)、中間5為停止。
圖2-12 紅外發(fā)射和接收模塊
2.3 原理圖及PCB板
2.3.1 PCB軟件介紹
Altium Designer 是原Protel軟件開發(fā)商Altium公司推出的一體化的電子產(chǎn)品開發(fā)系統(tǒng),主要運行在Windows操作系統(tǒng)。這套軟件通過把原理圖設(shè)計、電路仿真、PCB繪制編輯、拓撲邏輯自動布線、信號完整性分析和設(shè)計輸出等技術(shù)的完美融合,為設(shè)計者提供了全新的設(shè)計解決方案,使設(shè)計者可以輕松進行設(shè)計,熟練使用這一軟件使電路設(shè)計的質(zhì)量和效率大大提高。最高版本為:Altium Designer 21.3.1。
電路設(shè)計自動化 EDA(Electronic Design Automation)指的就是將電路設(shè)計中各種工作交由計算機來協(xié)助完成。如電路原理圖(Schematic)的繪制、印刷電路板(PCB)文件的制作、執(zhí)行電路仿真(Simulation)等設(shè)計工作。隨著電子科技的蓬勃發(fā)展,新型元器件層出不窮,電子線路變得越來越復(fù)雜,電路的設(shè)計工作已經(jīng)無法單純依靠手工來完成,電子線路計算機輔助設(shè)計已經(jīng)成為必然趨勢,越來越多的設(shè)計人員使用快捷、高效的CAD設(shè)計軟件來進行輔助電路原理圖、印制電路板圖的設(shè)計,打印各種報表。
Altium Designer 除了全面繼承包括Protel 99SE、Protel DXP在內(nèi)的先前一系列版本的功能和優(yōu)點外,還增加了許多改進和很多高端功能。該平臺拓寬了板級設(shè)計的傳統(tǒng)界面,全面集成了FPGA設(shè)計功能和SOPC設(shè)計實現(xiàn)功能,從而允許工程設(shè)計人員能將系統(tǒng)設(shè)計中的FPGA與PCB設(shè)計及嵌入式設(shè)計集成在一起。 由于Altium Designer 在繼承先前Protel軟件功能的基礎(chǔ)上,綜合了FPGA設(shè)計和嵌入式系統(tǒng)軟件設(shè)計功能,Altium Designer 對計算機的系統(tǒng)需求比先前的版本要高一些。
2.3.2 原理圖和PCB板展示
圖2-13是設(shè)計的原理圖。
圖2-14主要是通過AD畫的PCB板。
圖2-13 原理圖
圖2-14 PCB板
第三章 系統(tǒng)軟件設(shè)計
3.1 軟件開發(fā)環(huán)境的介紹
本設(shè)計采用 Keil μVision5進行編程實現(xiàn)。Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。
3.2 系統(tǒng)重要函數(shù)的介紹
3.2.1 主函數(shù)的設(shè)計
主函數(shù)void main()是程序的入口函數(shù),一個完整的程序必須要包含該函數(shù)。在該函數(shù)的開頭一般都是先對單片機和一些外圍器件需要進行初始化才能正常使用的器件進行初始化和重新賦值一些變量,初始化完后進去死循環(huán),如果不進入死循環(huán)程序運行一次就會退出,如果加入死循環(huán)程序就會不斷地進行循環(huán)達到實時檢測執(zhí)行的目的。在主程序的設(shè)計中需要注意的是主函數(shù)中不宜放過多的代碼,具體的代碼一般都是采用函數(shù)進行封裝然后在主函數(shù)進行調(diào)用,這樣也可以方便閱讀修改。
3.2.2 循跡避障函數(shù)設(shè)計
首先將back置0,進入循跡程序,如果左右燈都不亮,直行;如果左燈亮,右燈不亮,則左轉(zhuǎn);如果右燈亮,左燈不亮,則右轉(zhuǎn);如果傳感器檢測到前方有障礙物,back置1,向后轉(zhuǎn)重新進行循跡。流程圖如下圖3-1。
圖3-1 循跡避障函數(shù)流程圖
開始
前進
是否檢測到黑線
是否檢測到障礙
左/右檢測到黑線
左/右轉(zhuǎn)彎
左轉(zhuǎn)
檢測黑線
是
是
是
否
否
否
否
結(jié)束
3.2.3 紅外遙控函數(shù)設(shè)計
對遙控上的按鍵進行設(shè)置,2為前進、4為左轉(zhuǎn)、6為右轉(zhuǎn)、8為后退、9為停止。流程入下圖3-5所示。
圖3-2 紅外遙控設(shè)計
3.2.4 魔術(shù)手函數(shù)設(shè)計
超聲波測距,根據(jù)檢測到的距離,控制小車的前進、后退。
3.3 系統(tǒng)軟件測試
測試所需的工具:KEIL軟件、系統(tǒng)硬件、普中下載器等。
系統(tǒng)的軟件方面通過KEIL軟件進行編寫,將編寫好的程序生成.HEX文件后通過PL2303下載器下載到單片機中。通過觀察整個系統(tǒng)運行的狀態(tài),然后進行反復(fù)的修改調(diào)試程序,最終得到一個完善的程序。
第四章 結(jié) 論
經(jīng)過制作設(shè)計的這段時間的努力終于將本設(shè)計方案要求基本實現(xiàn)。由于時間、水平和經(jīng)驗有限,設(shè)計的作品還存在著一些的不足之處。
存在問題:在紅外循跡采集黑線信號時不穩(wěn)定,有時采集不到信號,小車只能停止,同時紅外傳感器受光線影響也比較大。在設(shè)計紅外遙控時小組成員對該模塊的原理和使用不太熟悉。解決方案:多次進行小車實驗,調(diào)整紅外傳感器的精度和靈敏度,使小車跑起來更穩(wěn),同時調(diào)低電機轉(zhuǎn)速,在檢測黑線時更方便檢測,達到要求。針對對紅外遙控不了解的情況,小組成員從各方收集紅外遙控的資料,了解紅外遙控的原理,同時查找紅外遙控的相關(guān)程序,進行多次調(diào)試,最終實現(xiàn)該要求。
經(jīng)過設(shè)計最后實現(xiàn)了如下設(shè)計要求:
(1)循跡避障二合一:小車利用紅外傳感器探測黑線將信號傳遞給單片機,然后通過單片機輸出信號控制電機,實現(xiàn)小車左右轉(zhuǎn)和直行;當(dāng)傳感器檢測到障礙物時,向后轉(zhuǎn)180°然后繼續(xù)尋找黑線,達到避障的目的。
(2)超聲波魔術(shù)手:利用超聲波傳感器發(fā)出的信號與人手的距離進行檢測,當(dāng)手向后或者向前時,小車也跟隨著進行前進后退,實現(xiàn)“跟手”功能。
(3)遙控器控制小車:通過遙控器發(fā)出信號,被小車的接收模塊接收信號,使小車進行前進后退和左右轉(zhuǎn)的功能。
對于這次設(shè)計來說既是一次機遇,又是一次挑戰(zhàn)。在這次的設(shè)計過程中,本人學(xué)到了很多東西,通過自己的實踐,增強了動手能力。通過實際工程的設(shè)計也使我了解到書本知識和實際應(yīng)用的差別。在實際應(yīng)用中遇到很多的問題,這都需要我對問題進行具體的分析,并一步一步地去解決它。