第7講第六章-機(jī)器人的距離檢測(cè)概要_第1頁(yè)
第7講第六章-機(jī)器人的距離檢測(cè)概要_第2頁(yè)
第7講第六章-機(jī)器人的距離檢測(cè)概要_第3頁(yè)
第7講第六章-機(jī)器人的距離檢測(cè)概要_第4頁(yè)
第7講第六章-機(jī)器人的距離檢測(cè)概要_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7講第六章--機(jī)器人的距離檢測(cè)概要第一頁(yè),共33頁(yè)。本講摘要1.用IRLED/探測(cè)電路檢測(cè)距離(定時(shí)/計(jì)數(shù)器的使用)2.測(cè)試掃描頻率3.尾隨小車4.條紋帶跟蹤DEPUSH*第二頁(yè),共33頁(yè)。用IRLED/探測(cè)電路檢測(cè)距離用紅外傳感器探測(cè)道路探測(cè)靈敏度與頻率關(guān)系圖DEPUSH*第三頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器以前所用延時(shí)方法:

1.for()函數(shù)

2._nop_()函數(shù)更精確延時(shí):

定時(shí)/計(jì)數(shù)器AT89S52的定時(shí)/計(jì)數(shù)器可以分為定時(shí)器模式和計(jì)數(shù)器模式。這兩種模式?jīng)]有本質(zhì)上的區(qū)別,均使用二進(jìn)制的加一計(jì)數(shù):當(dāng)計(jì)數(shù)器的值計(jì)滿回零時(shí)能自動(dòng)產(chǎn)生中斷的請(qǐng)求,以此來(lái)實(shí)現(xiàn)定時(shí)或者計(jì)數(shù)功能。它們的不同之處在于定時(shí)器使用單片機(jī)的時(shí)鐘來(lái)計(jì)數(shù),而計(jì)數(shù)器使用的是外部信號(hào)。DEPUSH*第四頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器定時(shí)/計(jì)數(shù)器的控制,兩個(gè)特殊功能寄存器——TCON和TMOD位符號(hào)描述TCON.7TF1定時(shí)器1溢出標(biāo)志位。由硬件置位,由軟件清除。TCON.6TR1定時(shí)器1運(yùn)行控制位。由軟件置或清除:置1為啟動(dòng);置0為停止。TCON.5TF0定時(shí)器0溢出標(biāo)志位。TCON.4TR0定時(shí)器0運(yùn)行控制位。TCON.3IE1外部中斷1邊沿觸發(fā)標(biāo)志。TCON.2IT1外部中斷1類型標(biāo)志位。TCON.1IE0外部中斷0邊沿觸發(fā)標(biāo)志。TCON.0IT0外部中斷0類型標(biāo)志位。TCON控制寄存器定時(shí)器控制寄存器,可進(jìn)行位操作,低四位與定時(shí)器無(wú)關(guān)。DEPUSH*第五頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器位名字定時(shí)器描述7GATE1門控制。當(dāng)被置為1時(shí),只有為高電平時(shí),定時(shí)器才開始工作。61定時(shí)/計(jì)數(shù)器選擇位:1=計(jì)數(shù)器;0=定時(shí)器5M11模式位1(見(jiàn)下表)4M01模式位03GATE0定時(shí)器0的門控制位20定時(shí)器0的定時(shí)/計(jì)數(shù)選擇位1M10定時(shí)器0的模式位10M00定時(shí)器0的模式位0TMOD模式寄存器定時(shí)器模式寄存器,不能進(jìn)行位操作,只能通過(guò)字節(jié)傳送指令來(lái)設(shè)定各個(gè)狀態(tài)。DEPUSH*第六頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器M1M0模式000011102113TMOD模式寄存器每個(gè)定時(shí)/計(jì)數(shù)器都有一個(gè)16位的寄存器Tn(n=0或1)來(lái)控制計(jì)數(shù)長(zhǎng)度,由高8位THn和低8位TLn組成并用來(lái)設(shè)初值。共四種定時(shí)模式。DEPUSH*第七頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器13位定時(shí)器模式(模式0)定時(shí)器高字節(jié)(THx)與低字節(jié)(TLx)的低5位共同構(gòu)成1個(gè)13位定時(shí)器。低字節(jié)高3位未使用。計(jì)數(shù)值隨時(shí)鐘脈沖增加,當(dāng)計(jì)數(shù)值從FFH溢出回到00H時(shí),TFx被置1。16位定時(shí)器模式(模式1)除工作在16位以外,與模式0沒(méi)有什么不同。DEPUSH*第八頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器8位自動(dòng)重載模式(模式2)低字節(jié)(TLx)作為1個(gè)8位定時(shí)器工作,高字節(jié)用于保存重載數(shù)。當(dāng)計(jì)數(shù)值超過(guò)FFH回零時(shí),不僅TFx被置1,同時(shí)THx載入TLx,定時(shí)器重新開始工作,如此循環(huán)。DEPUSH*第九頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器分立定時(shí)器模式(模式3)定時(shí)器1在該模式下不工作。DEPUSH*第十頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器定時(shí)器初值計(jì)算定時(shí)/計(jì)數(shù)值是在設(shè)置初值的基本上加法計(jì)數(shù)。設(shè)程序要運(yùn)行的數(shù)值為CC,初值為TC,計(jì)數(shù)最大值為2n,則:TC=2n-CC例如:定時(shí)1ms要運(yùn)行的數(shù)值CC=1ms/1us=1000,在模式0下最大計(jì)數(shù)值2n=213=8192則定時(shí)器初值TC=2n-CC=7192=0x1C18,即THx=0x1C,TLx=0x18DEPUSH*第十一頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器例程:TimeApplication.c#include<AT89X52.H>#include<stdio.h>

voidinitial(void);//子函數(shù)聲明voidmain(void){initial();//調(diào)用定時(shí)/計(jì)數(shù)器初始化函數(shù)

while(1);//等待中斷}/*==初始化定時(shí)/計(jì)數(shù)器函數(shù)==*/voidinitial(void){IE=0x82;//開總中斷EA,允許定時(shí)器0中斷ET0TCON=0x00;//停止定時(shí)器,清除標(biāo)志

TMOD=0x02;//工作在定時(shí)器0的模式2中

TH0=0x38;//設(shè)置重載值

TL0=0x38;//設(shè)置定時(shí)器初值

TR0=1;//啟動(dòng)定時(shí)器0}//中斷服務(wù)程序voidTIMER(void)interrupt1//中斷服務(wù)程序,1是定時(shí)器0的中斷號(hào){P1_0=~P1_0;//P1_0的值取反}DEPUSH*第十二頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器#include<AT89X52.H>#include<stdio.h>AT89X52.H對(duì)一些標(biāo)識(shí)符進(jìn)行了聲明,如P1_0、IE、TCON等stdio.h對(duì)常用的一些IO函數(shù)進(jìn)行了聲明,如printf()等頭文件uart.h已包含了這些頭文件。voidinitial(void);//子函數(shù)聲明voidmain(void){initial();//調(diào)用定時(shí)/計(jì)數(shù)器初始化函數(shù)

while(1);//等待中斷}函數(shù)定義若在main之后,則在main之前應(yīng)加上該函數(shù)的聲明。DEPUSH*第十三頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器/*==初始化定時(shí)/計(jì)數(shù)器函數(shù)==*/voidinitial(void){IE=0x82;TCON=0x00;

TMOD=0x02;

TH0=0x38;

TL0=0x38;

TR0=1;}“/*”和“*/”必須成對(duì)使用,注釋在它們之間的內(nèi)容?!?/”僅僅對(duì)它所在的一行起注釋作用。TCON=0x00;停止定時(shí)器,并清除了中斷標(biāo)志TMOD=0x02;M1=0且M0=0,定時(shí)器0選擇模式2TH0=0x38;TL0=0x38;設(shè)置計(jì)數(shù)初值和重載值。TR0=1;啟動(dòng)定時(shí)器0。DEPUSH*第十四頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器中斷中斷即發(fā)生了某種情況(事件),使得CPU暫時(shí)中止當(dāng)前程序的執(zhí)行,轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序。中斷驅(qū)使系統(tǒng)能夠在同一時(shí)間處理許多任務(wù)。中斷與子程序有些相似:CPU執(zhí)行另一個(gè)程序——子程序——然后返回主程序。單片機(jī)AT89S52有5個(gè)中斷源:2個(gè)外部中斷源;2個(gè)定時(shí)器中斷;1個(gè)串口中斷。每個(gè)中斷源可以單獨(dú)允許或禁止,通過(guò)修改可位尋址的專用寄存器IE(允許中斷寄存器)實(shí)現(xiàn)DEPUSH*第十五頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器位符號(hào)描述(1=使能,0=禁止)IE.7EA全局允許/禁止IE.6未定義IE.5ET2允許定時(shí)器2中斷IE.4ES允許串口中斷IE.3ET1允許定時(shí)器1中斷IE.2EX1允許外部中斷1IE.1ET0允許定時(shí)器0中斷IE.0EX0允許外部中斷0IE(中斷使用)寄存器簡(jiǎn)表IE=0x82;EA=1且ET0=1,打開了全局和定時(shí)器0的中斷IEEAET00x8210000010DEPUSH*第十六頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器中斷優(yōu)先級(jí)AT89S52的中斷分為2級(jí),高和低。允許擁有高優(yōu)先級(jí)的中斷源中斷系統(tǒng)正在處理的低優(yōu)先級(jí)的中斷源。中斷的優(yōu)先級(jí)由高到低依次為:外部中斷0,定時(shí)器0,外部中斷1,定時(shí)器1,串口中斷,定時(shí)器2中斷。DEPUSH*第十七頁(yè),共33頁(yè)。定時(shí)/計(jì)數(shù)器中斷函數(shù)中斷函數(shù)是通過(guò)按規(guī)定語(yǔ)法格式定義的一個(gè)函數(shù),語(yǔ)法格式如下:返回值函數(shù)名([參數(shù)])interruptm[usingn] { …… }m:中斷號(hào)。定時(shí)器0的中中斷號(hào)為1;n:寄存器組。在多中斷的情況下,使用該參數(shù)進(jìn)行任務(wù)切換。不用該參數(shù),則默認(rèn)使用寄存器組0,即n=0。voidTIMER(void)interrupt1{P1_0=~P1_0;//P1_0的值取反}DEPUSH*第十八頁(yè),共33頁(yè)。測(cè)試掃描頻率探測(cè)靈敏度與頻率關(guān)系圖38500Hz靈敏度最高,越往兩邊,靈敏度越差頻率越低,探測(cè)距離越遠(yuǎn)DEPUSH*第十九頁(yè),共33頁(yè)。測(cè)試掃描頻率例程:TestLeftFrequencySweep.cintmain(void){uart_Init();

timer_init();printf("ProgamRunning!\n");printf("FREQENCYETECTED\n");while(1){

Get_lr_Distances();printf("distanceLeft=%d\n",leftdistance);printf("-----------------\n");delay_nms(3000);}}DEPUSH*第二十頁(yè),共33頁(yè)。測(cè)試掃描頻率voidtimer_init(void){IE=0x82; //開總中斷EA,允許定時(shí)器0中斷ET0TMOD|=0X01; //定時(shí)器0工作在模式1:16位定時(shí)器模式}TMODM1M0|0x0101IEEAET00x8210000010IE=0x82TMOD|=0X01DEPUSH*第二十一頁(yè),共33頁(yè)。測(cè)試掃描頻率voidGet_lr_Distances(){unsignedintcount;leftdistance=0;//初始化左邊的距離

for(count=0;count<5;count++){

FreqOut(frequency[count]);//發(fā)射頻率

irDetectLeft=LeftIR;printf("irDetectLeft=%d",irDetectLeft);if(irDetectLeft==1)

leftdistance++;}}unsignedintfrequency[5]={33050,35700,38460,40400,42370};假設(shè)物體在區(qū)域3,則前3個(gè)頻率均無(wú)法探測(cè)到物體,即irDectLeft為1,所以leftdistance為3DEPUSH*第二十二頁(yè),共33頁(yè)。測(cè)試掃描頻率voidFreqOut(unsignedintFreq){time=256-(50000/Freq);//根據(jù)頻率計(jì)算初值

TH0=0XFF;//高八位設(shè)FFTL0=time;//低八位根據(jù)公式計(jì)算

TR0=1;//啟動(dòng)定時(shí)器

delay_nus(800);//延時(shí)

TR0=0;//停止定時(shí)器}實(shí)際上,time值并未占滿低八位,即高八位未用到,所以你可以這樣簡(jiǎn)化計(jì)算:高八位設(shè)0xFF,低八位根據(jù)n=8計(jì)算。DEPUSH*第二十三頁(yè),共33頁(yè)。測(cè)試掃描頻率voidTimer0_Interrupt(void)interrupt1 //定時(shí)器中斷{LeftLaunch=~LeftLaunch; //取反,高低電平轉(zhuǎn)換

TH0=0xFF; //重新設(shè)值

TL0=time;}模式1不具備自動(dòng)重載功能,所以要重新設(shè)值。DEPUSH*第二十四頁(yè),共33頁(yè)。測(cè)試掃描頻率如果檢測(cè)結(jié)果irDetectLeft為1,即沒(méi)有發(fā)現(xiàn)物體,則距離leftdistance加1。循環(huán)描述,當(dāng)5個(gè)頻率描完后,可根據(jù)leftdistance的值來(lái)判斷物體離機(jī)器人的大致距離。DEPUSH*第二十五頁(yè),共33頁(yè)。尾隨小車引導(dǎo)車尾隨車如果尾隨車落在后面,它必須能察覺(jué)并加速。如果尾隨車距離引導(dǎo)車太近,它也要能察覺(jué)并減速。如果當(dāng)前距離正好合適,它會(huì)等待直到測(cè)量距離變遠(yuǎn)或變近DEPUSH*第二十六頁(yè),共33頁(yè)。尾隨小車控制系統(tǒng)當(dāng)一個(gè)機(jī)器被設(shè)計(jì)用來(lái)自動(dòng)維持某一數(shù)值,比如距離、壓力或液位等,它一般都包含一個(gè)控制系統(tǒng)。這些系統(tǒng)有時(shí)由傳感器和閥門組成,或者由傳感器和電機(jī)組成。

在機(jī)器人里面,由傳感器和連續(xù)旋轉(zhuǎn)電機(jī)組成。還必須有某些處理器可以接受傳感器的測(cè)量結(jié)果并把它們轉(zhuǎn)化為機(jī)械運(yùn)動(dòng)。必須對(duì)處理器編程來(lái)基于傳感器的輸入做出決定,從而控制機(jī)械輸出。閉環(huán)控制和開環(huán)控制。DEPUSH*第二十七頁(yè),共33頁(yè)。尾隨小車右伺服電機(jī)比例控制方框圖Rightservooutput=(Rightdistancesetpoint–Measuredrightdistance)*Kp+CenterpulsewidthDEPUSH*第二十八頁(yè),共33頁(yè)。尾隨小車左伺服電機(jī)比例控制方框圖Leftservooutput=(Leftdistancesetpoint–Measuredleftdistance)*Kp+CenterpulsewidthDEPUSH*第二十九頁(yè),共33頁(yè)。尾隨小車?yán)蹋篎ollowingRobot.c聲明常數(shù)#defineKpl -70#defineKpr 70#defineSetPoint 2#defineCenterPulse1500

intmain(void){unsignedintpulseLeft,pulseRight;……whil

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論