智能循跡小車(chē)
目錄Q.摘 要: 錯(cuò)誤!未定義書(shū)簽。1 .任務(wù)及要求1.1.1 任務(wù)1.2 .系統(tǒng)設(shè)計(jì)方案1.2.1 小車(chē)循跡原理 1.2.2 控制系統(tǒng)總體設(shè)計(jì)2.3 .系統(tǒng)方案2.3.1 尋跡傳感器模塊2.3.1.1 紅外傳感器ST188簡(jiǎn)介23.1.2 比較器 LM324K介33.1.3 具體電路3.3.1.4 傳感器安裝4.3.2 控制器模塊4.3.3 電源模塊5.3.4 電機(jī)及驅(qū)動(dòng)模塊5.3.4.1 電機(jī)5.3.4.2 驅(qū)動(dòng)6.3.5 自動(dòng)循跡小車(chē)總體設(shè)計(jì) 7.3.5.1 總體電路圖錯(cuò)誤!未定義書(shū)簽。3.5.2 系統(tǒng)總體說(shuō)明7.4 .軟件設(shè)計(jì)7.4.1 PWM 控制7.4.2 總體軟件流程圖 8.4.3 小車(chē)循跡流程圖8.4.4 中斷程序流程圖 1.04.5 單片機(jī)測(cè)序1.15 .參考資料1.1智能循跡小車(chē)小組成員:韋韜,林紹輝,吳尚平1 .任務(wù)及要求1.1 任務(wù)設(shè)計(jì)一個(gè)基于直流電機(jī)的自動(dòng)尋跡小車(chē),使小車(chē)能夠自動(dòng)檢測(cè)地面黑色軌跡,并沿著黑色車(chē)軌跡行駛。系統(tǒng)方案方框圖如圖1-1所示。檢測(cè)(黑線(xiàn))一軟件控制 f驅(qū)動(dòng)電機(jī)*控制小車(chē)圖1-1系統(tǒng)方案方框圖2 .系統(tǒng)設(shè)計(jì)方案2.1 小車(chē)循跡原理這里的循跡是指小車(chē)在白色地板上循黑線(xiàn)行走, 由于黑線(xiàn)和白色地板對(duì)光線(xiàn) 的反射系數(shù)不同,可以根據(jù)接收到的反射光的強(qiáng)弱來(lái)判斷“道路” 。通常采取的 方法是紅外探測(cè)法。紅外探測(cè)法,即利用紅外線(xiàn)在不同顏色的物體表面具有不同的反射性質(zhì)的 特點(diǎn),在小車(chē)行駛過(guò)程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色紙質(zhì)地板時(shí)發(fā)生漫反射,反射光被裝在小車(chē)上的接收管接收;如果遇到黑線(xiàn)則紅外光被吸 收,小車(chē)上的接收管接收不到紅外光。單片機(jī)就是否收到反射回來(lái)的紅外光為依 據(jù)來(lái)確定黑線(xiàn)的位置和小車(chē)的行走路線(xiàn)。紅外探測(cè)器探測(cè)距離有限,2.2 控制系統(tǒng)總體設(shè)計(jì)自動(dòng)循跡小車(chē)控制系統(tǒng)由主控制電路模塊、穩(wěn)壓電源模塊、紅外檢測(cè)模塊、 電機(jī)及驅(qū)動(dòng)模塊等部分組成,控制系統(tǒng)的結(jié)構(gòu)框圖如圖2-1所示。世圖1、主控制電路模塊:用 AT89C51I片機(jī)、復(fù)位電路,時(shí)鐘電路2、紅外檢測(cè)模塊:光電傳感器 ST188,比較器LM3243、電機(jī)及驅(qū)動(dòng)模塊:電機(jī)驅(qū)動(dòng)芯片L298N兩個(gè)直流電機(jī)4、電源模塊:9V干電池。3 .系統(tǒng)方案3.1 尋跡傳感器模塊STS列反射式光電傳感器是經(jīng)常使用的傳感器。這個(gè)系列的傳感器種類(lèi)齊 全、價(jià)格便宜、體積小、使用方便、質(zhì)量可靠、用途廣泛。我們采用ST188乍為紅外檢測(cè)傳感器。在黑線(xiàn)檢測(cè)的測(cè)試中,若檢測(cè)到白色區(qū)域,發(fā)射管發(fā)射的紅外線(xiàn)沒(méi)有反射到 接收管,測(cè)量接收管的電壓為4. 8V ,若檢測(cè)到黑色區(qū)域,接收管接受到發(fā)射管 發(fā)射的紅外線(xiàn),電阻發(fā)生變化,所分得的電壓也就隨之發(fā)生變化, 測(cè)的接收管的 電壓為0. 5V,測(cè)試基本滿(mǎn)足要求。判斷有無(wú)黑線(xiàn)我們用的一塊比較器LM324 比較基準(zhǔn)電壓由30K勺變阻器調(diào) 節(jié),各個(gè)接收管的參數(shù)都不一致,每個(gè)傳感器的比較基準(zhǔn)電壓也不盡相同, 我們 為每個(gè)傳感器配備了 一個(gè)變阻器。3.1.1 紅外傳感器ST188簡(jiǎn)介含一個(gè)反射模塊(發(fā)光二極管)和一個(gè)接收模塊(光敏三極管)。通過(guò)發(fā)射紅外信號(hào),看接收信號(hào)變化判斷檢測(cè)物體狀態(tài)的變化。A、K之間接發(fā)光二極管,G E之間接光敏三極管(二者在電路中均正接,但要串聯(lián)一定阻值的電阻)圖3-1 ST188實(shí)物圖© 國(guó)怎口 ©早甲軍口口匚口":川媼底視圖 1;部電路圖3-2 ST188管腳圖及內(nèi)部電路3.1.2 比較器LM324簡(jiǎn)介L(zhǎng)M32妁四運(yùn)放集成電路,采用14腳雙列直插塑料封裝。內(nèi)部有四個(gè)運(yùn)算放 大器,有相位補(bǔ)償電路。電路功耗很小,工作電壓范圍寬,可用正電源 330V, 或正負(fù)雙電源± 1. 5V±15VU乍。在黑線(xiàn)檢測(cè)電路中用來(lái)確定紅外接收信號(hào)電平的高低,以電平高低判定黑線(xiàn)圖3-3 LM324內(nèi)部電路C反相輸入端)(同相輸入端】0圖3-4集成運(yùn)放的管腳圖有無(wú)。在電路中,LM324勺一個(gè)輸入端需接滑動(dòng)變阻器,通過(guò)改變滑動(dòng)變阻器的 阻值來(lái)提供合適的比較電壓。3.1.3 具體電路通過(guò)ST188僉測(cè)黑線(xiàn),輸出接收到的信號(hào)給LM324,接收電壓與比較電壓比 較后,輸出信號(hào)變?yōu)楦叩碗娖?,再輸入到單片機(jī)中,用以判定是否檢測(cè)到黑線(xiàn)。圖3-5 傳感器模塊電路圖3.1.4 傳感器安裝在小車(chē)具體的循跡行走過(guò)程中,將紅外傳感器放置在車(chē)頭前方,提前對(duì)路 況采集信息,再由單片機(jī)控制兩輪轉(zhuǎn)速來(lái)進(jìn)行兩級(jí)方向糾正控制, 提高其循跡的 可靠性。小車(chē)前方循跡傳感器全部在一條直線(xiàn)上。其中中間連個(gè)傳感器為第一級(jí)方 向控制傳感器,旁邊兩個(gè)為第二級(jí)方向控制傳感器, 并且黑線(xiàn)同一邊的兩個(gè)傳感 器之間的寬度不得大于黑線(xiàn)的寬度。 小車(chē)前進(jìn)時(shí),始終保持軌跡黑線(xiàn)在中間兩個(gè) 第一級(jí)傳感器之間,當(dāng)小車(chē)偏離黑線(xiàn)時(shí),第一級(jí)傳感器就能檢測(cè)到黑線(xiàn),把檢測(cè) 的信號(hào)送單片機(jī)處理、控制系統(tǒng),控制系統(tǒng)發(fā)出信號(hào)對(duì)小車(chē)軌跡予以糾正。 若小 車(chē)回到了軌道上,即4個(gè)探測(cè)器都只檢測(cè)到白紙,則小車(chē)會(huì)繼續(xù)行走;若小車(chē)由 于慣性過(guò)大依舊偏離軌道,越出了第一級(jí)兩個(gè)探測(cè)器的探測(cè)范圍,這時(shí)第二級(jí)探 測(cè)器動(dòng)作,再次對(duì)小車(chē)的運(yùn)動(dòng)進(jìn)行糾正,使之回到正確軌道上去。可以看出,第 二級(jí)方向探測(cè)器實(shí)際是第一級(jí)的后備保護(hù),從而提高了小車(chē)循跡的可靠性。3.2 控制器模塊采用Atmel公司的AT89C51單片機(jī)作為主控制器。它是一個(gè)低功耗,高性 能的8位單片機(jī),片內(nèi)含32k空間的可反復(fù)擦寫(xiě)100,000次Flash只讀存儲(chǔ)器,具有4K的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM ), 32個(gè)I/O 口,2個(gè)8位可編程定時(shí)計(jì) 數(shù)器,且可在線(xiàn)編程、調(diào)試,方便地實(shí)現(xiàn)程序的下載與整機(jī)的調(diào)試。時(shí)鐘電路和復(fù)位電路 如圖3-7 (與單片機(jī)構(gòu)成最小系統(tǒng))1)采用外部時(shí)鐘,晶振頻率為12MHZ2)采用按鍵復(fù)位XTAL2RSTNE E-SMAIEA01-4567 11 ,fl fl fl fl rfj 1 .1 p p p p p p p pPii AT'fl PO VAD1 P0二華口管PO 4iy>D4 PO *'AL'5 PO 5/AD6 PO.HADTP2 0/ASPS 1/A& P2 2/A10P2 >A nP2 1/A12 P2 HAi3 P2 的 14 P2 了伊 FP3C.-RXD P3 1HXD P3.2flNrrr P-.i'iNTlP3 4ZT0PS5TT17 G/V7PP3 7/RD圖3-7時(shí)鐘電路和復(fù)位電路3.3 電源模塊采用6節(jié)1.5V南孚電池供電??梢怨┙o小車(chē)正常行駛。3.4 電機(jī)及驅(qū)動(dòng)模塊3.4.1 電機(jī)電機(jī)采用直流減速電機(jī),直流減速電機(jī)轉(zhuǎn)動(dòng)力矩大,體積小,重量輕,裝 配簡(jiǎn)單,使用方便。由于其內(nèi)部由高速電動(dòng)機(jī)提供原始動(dòng)力,帶動(dòng)變速(減速) 齒輪組,可以產(chǎn)生較大扭力。可選用減速比為1: 74的直流電機(jī),減速后電機(jī)的轉(zhuǎn)速為 100r/min 。若車(chē) 輪直徑為6cm,則小車(chē)的最大速度可以達(dá)到V=2 < v=2*3.14*0.03*100/60=0.314m/s能夠較好的滿(mǎn)足系統(tǒng)的要求。3.4.2 驅(qū)動(dòng)驅(qū)動(dòng)模塊采用專(zhuān)用芯片 L298N作為電機(jī)驅(qū)動(dòng)芯片,L298N是一個(gè)具有高電 壓大電流的全橋驅(qū)動(dòng)芯片,具響應(yīng)頻率高,一片L298N可以分別控制兩個(gè)直流電 機(jī)。以下為L(zhǎng)298N的引腳圖和輸入輸出關(guān)系表。ENA111510+ VSSSENSFASENSEB1N1IN2IN40UT2OUT4GXDENAIN2電機(jī)運(yùn)行情況HHL臊H1H反轉(zhuǎn)HNM快研止LXX停止圖3-9 L298N外部引腳表2 L298N輸入輸出關(guān)系驅(qū)動(dòng)電路的設(shè)計(jì)如圖3-10所示:圖3-10 L298N電機(jī)驅(qū)動(dòng)電路L298N的5、7、10、12四個(gè)引腳接到單片機(jī)上,通過(guò)對(duì)單片機(jī)的編程就可實(shí)現(xiàn)兩個(gè)直流電機(jī)的PWM0速控制。3.5 自動(dòng)循跡小車(chē)總體設(shè)計(jì)3.5.1 系統(tǒng)總體說(shuō)明當(dāng)光電傳感器開(kāi)始接受信號(hào),通過(guò)比較器將信號(hào)傳如單片機(jī)中。小車(chē)進(jìn)入尋 跡模式,即開(kāi)始不停地掃描與探測(cè)器連接的單片 I/O 口,一旦檢測(cè)到某個(gè)I/O 口 有信號(hào)變化,就執(zhí)行相應(yīng)的判斷程序,把相應(yīng)的信號(hào)發(fā)送給電動(dòng)機(jī)從而糾正小車(chē) 的狀態(tài)。單片機(jī)采用T0定時(shí)計(jì)數(shù)器,通過(guò)來(lái)產(chǎn)生PW峽,控制電機(jī)轉(zhuǎn)速。4 .軟件設(shè)計(jì)4.1 PWM控制本系統(tǒng)采用PWM調(diào)節(jié)直流電機(jī)的速度。PWM通過(guò)控制固定電壓的直流電源 開(kāi)關(guān)頻率,從而改變負(fù)載兩端的電壓,進(jìn)而達(dá)到控制要求的一種電壓調(diào)整方法。 PWM以應(yīng)用在許多方面,如電機(jī)調(diào)速、溫度控制、壓力控制等。在PWM動(dòng)控制的調(diào)整系統(tǒng)中,按一個(gè)固定的頻率來(lái)接通和斷開(kāi)電源,并根據(jù) 需要改變一個(gè)周期內(nèi)“接通”和“斷開(kāi)”時(shí)間的長(zhǎng)短。通過(guò)改變直流電機(jī)電樞上 電壓的“占空比”來(lái)改變平均電壓的大小,從而控制電動(dòng)機(jī)的轉(zhuǎn)速。因此,PWIMC 被稱(chēng)為“開(kāi)關(guān)驅(qū)動(dòng)裝置”。在脈沖彳用下,當(dāng)電機(jī)通電時(shí),速度增加;電機(jī)斷電時(shí),速度逐漸減少。只要 按一定規(guī)律,改變通、斷電的時(shí)間,即可讓電機(jī)轉(zhuǎn)速得到控制。本系統(tǒng)中通過(guò)控制51單片機(jī)的定時(shí)器T0的初值,從而可以實(shí)現(xiàn)P0.4和P0.5 輸出口輸出不同占空比的脈沖波形。定時(shí)計(jì)數(shù)器若干時(shí)間(比如0.1ms)中斷一次,就使P0.4或P0.5產(chǎn)生一個(gè)高電平或低電平。將直流電機(jī)的速度分為100個(gè)等級(jí),因此一個(gè)周期就有個(gè)100脈沖,周期為100個(gè)脈沖的時(shí)間。速度等級(jí)對(duì) 應(yīng)一個(gè)周期的高電平脈沖的個(gè)數(shù)。占空比為高電平脈沖個(gè)數(shù)占一個(gè)周期總脈沖個(gè) 數(shù)的百分?jǐn)?shù)。一個(gè)周期加在電機(jī)兩端的電壓為脈沖高電壓乘以占空比。占空比越大,加在電機(jī)兩端的電壓越大,電機(jī)轉(zhuǎn)動(dòng)越快。電機(jī)的平均速度等于在一定的占 空比下電機(jī)的最大速度乘以占空比。當(dāng)我們改變占空比時(shí),就可以得到不同的電 機(jī)平均速度,從而達(dá)到調(diào)速的目的。精確地講,平均速度與占空比并不是嚴(yán)格的 線(xiàn)性關(guān)系,在一般的應(yīng)用中,可以將其近似地看成線(xiàn)性關(guān)系。4.2 總體軟件流程圖小車(chē)進(jìn)入尋跡模式后,即開(kāi)始不停地掃描與探測(cè)器連接的單片 I/O 口, 且檢測(cè)到某個(gè)I/O 口有信號(hào)變化,就執(zhí)行相應(yīng)的判斷程序,把相應(yīng)的信號(hào)發(fā)送 給電動(dòng)機(jī)從而糾正小車(chē)的狀態(tài)。軟件的主程序流程圖如圖 4-1所示:4.3 小車(chē)循跡流程圖小車(chē)進(jìn)入循跡模式后,即開(kāi)始不停地掃描與探測(cè)器連接的單片機(jī) I/O 口, 且檢測(cè)到某個(gè)I/O 口有信號(hào),即進(jìn)入判斷處理程序,先確定4個(gè)探測(cè)器中的哪一個(gè)探測(cè)到了黑線(xiàn),如果左面第一級(jí)傳感器或者左面第二級(jí)傳感器探測(cè)到黑線(xiàn),即小車(chē)左半部分壓到黑線(xiàn),車(chē)身向右偏出,此時(shí)應(yīng)使小車(chē)向左轉(zhuǎn);如果是右面第一 級(jí)傳感器或右面第二級(jí)傳感器探測(cè)到了黑線(xiàn),即車(chē)身右半部壓住黑線(xiàn),小車(chē)向左 偏出了軌跡,則應(yīng)使小車(chē)向右轉(zhuǎn)。在經(jīng)過(guò)了方向調(diào)整后,小車(chē)再繼續(xù)向前行走, 并繼續(xù)探測(cè)黑線(xiàn)重復(fù)上述動(dòng)作。循跡流程圖如圖4-2所示由于第二級(jí)方向控制為第一級(jí)的后備,則兩個(gè)等級(jí)間的轉(zhuǎn)向力度必須相互 配合。第二級(jí)通常是在超出第一級(jí)的控制范圍的情況下發(fā)生作用,它也是最后一層保護(hù),所以它必須要保證小車(chē)回到正確軌跡上來(lái),則通常使第二級(jí)轉(zhuǎn)向力度大于第一級(jí),即 Turn_left2 > Turn_left1,Turn_right2 > Turn_right1 (其中Turn_left2 , Turn_left1, Turn_right2 , Turn_right1為小車(chē)轉(zhuǎn)向力度,其大小通過(guò)改變單片機(jī)輸出的占空比的大小來(lái)改變),具體數(shù)值在實(shí)地實(shí)驗(yàn)中得到。4.4 中斷程序流程圖這里利用的是51單片機(jī)的T0定時(shí)計(jì)數(shù)器,從而讓單片機(jī) P0 口的P0.4和 P0.5引腳輸出占空比不同的方波,然后經(jīng)驅(qū)動(dòng)芯片放大后控制直流電機(jī)。定時(shí) 計(jì)數(shù)器若干時(shí)間(比如0.1ms)比如中斷一次,就使P0.4或P0.5產(chǎn)生一個(gè)高電 平或低電平。中斷程序流程圖如圖 4-3所小4.5 單片機(jī)測(cè)序#include<reg51.h>#define uchar unsigned char#define uint unsigned int/*電機(jī)控制端口 */ sbit in1=P2A7;sbit in2=P2A6; /* 左電機(jī) *7/ sbit ena=P2A1; sbit in3=P2A5;sbit in4=P2A4; /* 右電機(jī) */ sbit enb=P2AQ;/*傳感器檢測(cè)端 口 */ sbit L_1=P1A0; 左內(nèi)傳感器sbit L_2=P1A1; / 左外傳感器 /sbit R_1=PW2; 右內(nèi)傳感器sbit R_2=PW3; 右外傳感器uchar i,j;uint w0,w1;uint p1;/uint k=0;/*1毫秒延時(shí)函數(shù) */void delay(uint z)/延時(shí)一毫秒uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/* 定時(shí)器初始化函數(shù) */ void chuhua (void)TMOD=0x11;TH0=(65535-100)/256;TL0=(65535-100)%256;TH1=(65535-100)/256;TL1=(65535-100)%256;EA=1;/總中斷開(kāi)ET0=1;/定時(shí)器T0中斷TR0=1;/允許T0中斷ET1=1;/定時(shí)器T1中斷TR1=1;ena=1;enb=1;/允許T1中斷/* 主函數(shù) */ void main(void)chuhua();in1=1;in2=0;in3=1;in4=0;while(1)p1=P1|0xf0;/ if(p1=0xf0)/ k+;switch(pl)(case 0xff:/未檢測(cè)到黑帶直行(w0=11;w1=11;)break;case 0xfe:/左大拐彎(w0=1;w1=12;) break;case 0xf7:/右大拐彎(w0=12;w1=1;)break;case 0xfd:/左小拐彎(w0=4;w1=9;) break;case 0xfb:/右小拐彎(w0=9;w1=4;)break;/* case 0xf0:/加減速帶(if(k=1)w0=25;w1=18;delay(200);w0=7;w1=7;delay(200);w0=11;w1=11;) break; */)/* 定時(shí)器T0中斷服務(wù)函數(shù)*/void t0(void) interrupt 1 定時(shí)器T0用來(lái)對(duì)左電機(jī)的調(diào)節(jié)(TH0=(65535-500)/256;/定時(shí)器重裝初值TL0=(65535-500)%256;i+;if(i=w0)/PWM 波的占空比 W0/21*100%(ena=0;else if(i=21) /PWM 波的周期為 21*500us(ena=1;i=0;/*定時(shí)器T1中斷服務(wù)函數(shù)*/void t1(void) interrupt 3 定時(shí)器T1用來(lái)對(duì)左電機(jī)的調(diào)節(jié)(TH1=(65535-500)/256;/定時(shí)器重裝初值TL1=(65535-500)%256;j+;if(j=w1)/PWM 波的占空比 W1/21*100%(enb=0;)else if(j=21)/PWM 波的周期為 21*500usenb=1;j=0;)5.參考資料1徐煜名,C51單片機(jī)及應(yīng)用系統(tǒng)設(shè)計(jì).電子工業(yè)出版社,2009.22金建設(shè) 于曉海;C51單片機(jī)系統(tǒng)及應(yīng)用試驗(yàn)教程;北京郵電大學(xué)出版社;2010.33單成祥 牛彥文 張春.傳感器原理與應(yīng)用.國(guó)防工業(yè)出版社2006.9