13-陳曉倩-王睿-張嬋-智能小車的紅外避障系統-paper_第1頁
13-陳曉倩-王睿-張嬋-智能小車的紅外避障系統-paper_第2頁
13-陳曉倩-王睿-張嬋-智能小車的紅外避障系統-paper_第3頁
13-陳曉倩-王睿-張嬋-智能小車的紅外避障系統-paper_第4頁
13-陳曉倩-王睿-張嬋-智能小車的紅外避障系統-paper_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

隨著生產自動化的發展需要,機器人已經越來越廣泛的應用到生產自動化上,隨著科學技術的發展,機器人的傳感器種類也越來越多,其中紅外傳感器已經成為自動行走和駕駛的重要部件。紅外的典型應用領域為自主式智能導航系統,機器人要實現自動避障功能就必須要感知障礙物,感知障礙物相當于給機器人一個視覺功能。智能避障是基于紅外傳感系統,采用紅外傳感器實現前方障礙物檢測,并判斷障礙物遠近。我們所涉及的整體方案思路是利用紅外線傳感器發射和接受信號模塊來控制單片機,讓單片機翻譯傳輸指令,從而實現相應功能。具體的過程如下:兩路紅外傳感器,每一路發射一個信號,當遇到障礙物信號被反射后,紅外接收系統接收信號,經單片機處理后,證明相應方向存在障礙物,控制電機正轉和反轉,從而實現繞開障礙物繼續前行。一、任務:利用單片機、紅外實現避障,要求具有下述功能:小車前進可以避開(前、左、右)一定距離內的障礙物;實現下車前進時,不碰障礙物; 發揮:1.利用超聲波測距2.紅外尋跡可以控制小車行走的路跡3.紅外發射接收器,用遙控來控制小車的行走方向二、硬件電路圖設計§2系統框圖本設計制作的是單片機控制的自動避障小汽車,以單片機為小汽車的“大腦”,紅外線探頭為小汽車的“眼睛”,電機為小汽車的“雙足”。“大腦”控制“眼睛”去看前方是否有障礙物,當“眼睛”看到障礙后,由大腦來控制“雙足”的行動方向。從而實現小汽車的自動避障。電路原理簡單,結構明了。如圖2.2.1為整個系統的框圖。紅外紅外避障電路H橋控制電路電機80C51返回信號輸入調制信號輸出電路圖如下圖:但為了使用方便,改用成品。(成品如下圖)2.驅動模塊在電機驅動模塊中,由于電機的功率不大,我們可以選擇使用電橋驅動,電路圖如下:圖2.2.1系統框圖§4紅外線避障電路

避障方案選擇,方案一:采用超聲波避障。超聲波受環境影響較大,電路復雜,而且地面對超聲波的反射,會影響系統對障礙物的判斷。

方案二:采用紅外線避障。利用單片機來產生38KHz信號,并用250HZ的方波對紅外線發射管進行調制發射,發射出去的紅外線遇到避障物的時候反射回來,紅外線接收管對反射回來信號進行解調,輸出TTL電平。外界對紅外信號的干擾比較小,且易于實現,價格也比較便宜,故采用方案二。紅外線避障電路是小汽車的“眼睛”,其性能的好壞和抗干擾能力的強弱,就定了避障的準確性和靈活性。由于紅外線受外界可見光的影響較大,因此用250Hz的信號對38KHz的載波進行調制,這樣能減少外界的一些干擾。接收管采用HS0038A2型號,輸出TTL電平,有利于單片機對信號的處理。避障電路采用紅外線發射與接收原理,利用單片機產生250HZ和38KHz信號,并利用單片機的中斷對紅外線發射管進行調制發射,發射距離遠近由RW調節,由于本設計的小汽車行駛速度較快,所以調節避障距離為20CM左右。發射出去的紅外線遇到避障物的時候反射回來,紅外線接收管對反射回來信號進行解調,輸出TTL電平。利用單片機的中斷系統,在遇障礙物時控制電機并使小車轉彎。如圖2.4.1所示紅外發射紅外發射紅外接收80C51MH橋驅動圖2.4.1紅外線避障示意圖1、紅外線發射部分紅外線發射電路通過單片機的控制,輸出調制信號向前方發射,如果遇到障礙物后,紅外光線被障礙物返回,被紅外接收頭接收,在其3腳輸出250HZ方波信號,而其3腳和單片機的ITN0連接在一起,故當遇到障礙物后,會給單片機一個外部中斷0信號,通過外部中斷0程序,來控制小汽車的左轉或者右轉。從而實現避障功能。圖2.4.2所示為紅外線發射原理圖。P2.1輸入的是250HZ的方波,P2.0輸入的是38K的載波,D0處發射的就是調制好的發射信號。各個波形如圖2.4.3a)、b)、c)所示。圖2.4.2紅外線發射電路a).38K載波b).250HZ調制信號c).調制后波形圖2.4.3紅外線發射波形圖2、紅外線接收部分紅外線接收電路如圖2.4.4所示,紅外線接收頭在沒有接收到紅外信號時,INT0輸出高電平,單片機不中斷。在接收到信號時輸出低電平,單片機中斷。接收頭采用HS0038A2型一體化接收探頭,其內部集成了輸入部分、自動增益控制部分、控制電路、帶通濾波器和解調電路。其內部框圖如2.4.5所示圖2.4.4紅外線接收電路輸入電路輸入電路自動增益控制解調電路帶通濾波器控制電路30KOUTVsGND圖2.4.5HS0038A2型紅外接收頭內部結構由圖2.4.5可知,經過調制后發射的紅外線被接收頭接收后,通過其內部的自動增益控制、帶通濾波器和解調電路等在OUT處輸出調制信號。因為本設計采用的是250HZ的調制信號,其周期為4000μs,如果占空比為1:1,其半周期為2000μs,如果把OUT端口和單片機的外部中斷連接在一起的話,足以能夠引起單片機的中斷了。在中斷程序中來實現對障礙物的判斷和控制小汽車的行駛方向。§5H橋驅動電路H橋驅動電路是小汽車的“雙足”控制電路,對小汽車的行駛有著直接的影響。如圖2.5.1所示,整個車體的驅動用兩個H橋驅動電路,分別驅動兩個直流電機,其控制口分別接單片機的I/O口,在此接在了P1口。在控制其行駛時,在P1.4為低電平的前提下,只要給P1.0、P1.1、P1.2和P1.3輸出不同的高低電平就能控制小汽車的行駛,但是一定要注意的是,其中P1.0和P1.1的電平一定不能全為高電平,P1.2和P1.3的電平也一定不能全為高電平。現以P1.0和P1.1如果全為高為例介紹其原理。H橋電路的正常控制原理是,當P1.0為高電平、P1.1為低電平時Q6、Q3、Q2導通,Q1、Q5、Q4截止,所以電流的流向是從VCCQ2Q3GND,電機正轉。如果當P1.0為低電平、P1.1為高電平時Q1、Q5、Q4導通,Q6、Q3、Q2截止,所以電流的流向是從VCCQ1Q4GND,電機反轉。如果P1.0和P1.1全為高電平,則Q1、Q5、Q4、Q6、Q3、Q2全部導通VCC和GND必將短路,將會損壞整個系統。因為整個系統沒有設置看門狗系統,所以在系統死機后需要人工復位,考慮到復位時各I/O口輸出全為高電平,為了防止整個系統死機后復位時輸出全高電平損壞整個系統,所以在電源和整個電路之間加一PNP型三極管Q13,其基極接P1.4,當單片機復位時P1.4輸出高電平,Q13截止,整個電路不供電,保證了電路的安全性能。H橋控制原理圖如圖2.5.1所示:圖2.5.1H橋控制電路當單片機和H橋控制電路連接完畢后,只要讓單片機給出不同的數據編碼,就能控制小汽車的行駛方向。下表2.5.1為不同的行駛方向所對應的16進制數碼。表2.5.1前行左轉右轉后退停止81H06H09H0AH00H開始初始化開始初始化延時2秒定時30秒前行判斷定時時間到否判斷是否有障礙判斷障礙物是否在左邊左轉右轉結束是是否否是否§1程序流程圖§3紅外線調制信號發生程序紅外線調制信號發生程序采用中斷的方式來實現的,用計數定時器T0定時2ms,中斷時取反P2.1來控制圖2.4.2紅外線發射電路中Q1的通斷,以此來產生250HZ的調制信號,來調制38K的紅外載波,程序如下:DS0:CPLP2.1;取反P2.1MOVTH0,#0F8H;重新裝初值MOVTL0,#30HRETI;中斷返回§4紅外線載頻信號發生程序紅外線載波信號采用軟件延時來實現,利用單片機指令執行時間的長短來選擇不同的指令和不同的執行次數,從而達到想要的延時時間,以下為38K載波發生程序:§5避障程序避障程序采用外部中斷的方式來實現,因為在小汽車的前部安裝了兩對紅外線探頭,分別用來檢測車體左邊和右邊的障礙物,當右邊檢測到障礙時引起外部中斷1中斷,控制小汽車向左轉。當左邊檢測到障礙時引起外部中斷0中斷,控制小汽車向右轉。程序如下:ZD1:MOVP1,#06H;左轉MOVR5,#5;延時0.5SY2:MOVR1,#0FFHY0:MOVR2,#0FAHY1:DJNZR2,Y1DJNZR1,Y0DJNZR5,Y2MOVP1,#81H;前行RETIZD0:MOVP1,#09H;右轉MOVR3,#5;延時0.5SYS2:MOVR6,#0FFHYS0:MOVR4,#0FAHYS1:DJNZR4,YS1DJNZR6,YS0DJNZR3,YS2MOVP1,#81H;前行RETI附錄電路原理總圖附錄!!C語言程序1.Hongwai.hvoiddelay1(void)//延時程序{ intk; for(k=0;k<1000;k++);}////////////////////////////////////bitirpro_ok,irok;unsignedcharIRcord[4];unsignedcharirdata[33];voidShowString(unsignedcharline,char*ptr);unsignedcharirtime;//紅外用全局變量//////////////////////////////////////////////voidtim0_isr(void)interrupt1using1//定時器0中斷服務函數{ irtime++;}voidex0_isr(void)interrupt0using0//外部中斷0服務函數P3.2下降沿觸發{ staticunsignedchari; staticbitstartflag; if(startflag){ if(irtime<63&&irtime>=33)//引導碼/8.44ms<time<16.128msi=0;//如果判斷為引導碼則i清零重新/開始接收 irdata[i]=irtime; irtime=0; i++; if(i==33){ irok=1; i=0; } } else{ irtime=0; startflag=1; }}voidTIM0init(void)//定時器0初始化{ TMOD=0x12;//定時器0工作方式2,TH0是重裝值,TL0是初值 TH0=0x00; TL0=0x00; ET0=1;//開中斷 TR0=1;}voidEX0init(void){ IT0=1;//中斷方式0檢測下降沿/INT0(P3.2) EX0=1;//開T0中斷 EA=1;}voidIrcordpro(void)//紅外碼值處理函數{ unsignedchari,j,k=1; unsignedcharcord,value; for(i=0;i<4;i++){//處理4個字節 for(j=1;j<=8;j++)//處理1個字節8位 { cord=irdata[k];//k從1開始忽略引導碼 value=value>>1; if(cord>7)value=value|0x80;//cord大于7則大于1.792ms為"1"最高位賦值1 k++; }//八個一位二進制變成一個八位二進制數 IRcord[i]=value; value=0; }irpro_ok=1;//處理完畢標志位置1}voidhongwai(void){EX0init();//中斷初始TIM0init(); }2lcd.hsbitlcden=P2^5;sbitrs=P1^0;sbitwr=P1^1;sbitwela=P2^6;sbitdula=P2^7;unsignedcharnumber[]={'0','1','2','3','4','5','6','7','8','9'};voiddela(inta){ while(a--);}voidlcd_order(unsignedcharcom)//給lcd輸入命令{ rs=0; P0=com; dela(10); lcden=1; dela(10); lcden=0;}voidlcd_date(unsignedcharcom)//給lcd輸入數據{ rs=1; P0=com; dela(10); lcden=1; dela(10); lcden=0; }voidlcd_init()//初始lcd{ wela=0; dula=0; lcden=0; wr=0; lcd_order(0x38);lcd_order(0x0e);lcd_order(0x06); lcd_order(0x80);}voidlcd_date_int(intdate,intlen)//lcd顯示多位整數//小車實驗沒用到{inti,temp,count=1;temp=date;for(i=1;i<len;i++){ count=count*10;}for(i=0;i<len;i++){temp=temp/count; lcd_date(number[temp]); temp=date%count;count=count/10;}}voidlcd_char_write(unsignedcharx,y,lcd_dat)//LCD1602字符寫入帶位置{x&=0x0f;/*X位置范圍0~15*/y&=0x01;/*Y位置范圍0~1*/if(y==1)x+=0x40;x+=0x80;lcd_order(x);lcd_date(lcd_dat);}Diatant.hsbittrig=P2^0;sbitecho=P2^1;//測距輸入口unsignedintus;voidtimer_init(){//TMOD=0x11;TH1=(65536-10)/256;TL1=(65536-10)%256;EA=1;ET1=1;}voiddelay_20us(){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}voidp()interrupt3//中斷方式的時鐘{TH1=(65536-10)/256;TL1=(65536-10)%256;us++;//10us產生一次中斷}intdistant()//主函數{intlen;echo=0;trig=0;trig=1;delay_20us();trig=0;us=0;while(echo==0);TR1=1;while(echo==1);TR1=0;len=us*170/100/4;//具體算法感覺不對但只有這樣才正確顯示returnlen;}Bujin.hunsignedcharcodeF_Rotation[4]={0x88,0x44,0x22,0x11};//雙輪正轉表格,10001000,01000100,00100010,00010001unsignedcharcodeB_Rotation[4]={0x11,0x22,0x44,0x88};//雙輪反轉表格,00010001,00100010,01000100,10001000unsignedcharcodeL_Rotation[4]={0x81,0x42,0x24,0x18};//左轉表格,10000001,01000010,00100100,00011000unsignedcharcodeR_Rotation[4]={0x18,0x24,0x42,0x81};//右轉表格,00011000,00100100,01000100,10000001voidDelay(unsignedinti)//延時{while(--i);}voidstepper(intm,ints){ inti,model,speed;speed=12500/s;//正常步進電機這個速度太慢 model=m;for(i=0;i<4;i++)//4相{ switch(model) { case1: P1=F_Rotation[i];break; case2: P1=B_Rotation[i];break; case3: P1=L_Rotation[i];break; case4: P1=R_Rotation[i];break; } Delay(speed); }}主程序#include<reg52.h>#include<stdio.h>#include<intrins.h>#include"stepper.h"#include"hongwai.h"#include"lcd.h"#include"distant.h"#defineuintunsignedint#defineucharunsignedchar#defineTURE1#defineFALSE0ucharcodenum[10]={"0123456789"};ucharcodeline0[16]={"Dir:HV:Mo:OFF"};ucharcodeline1[16]={"S:OFFcmAUTO:OFF"};ucharcodeon[3]={"ON"};ucharcodeoff[5]={"OFF"};ucharcodemod[5]={"BHLR"};sbitL=P2^2;sbitR=P2^4;//避障輸入口voidmain(){intmodel=1,speed=9,i,len;int state=0,state1=0;//定義變量狀態state(用來判斷電機是否轉)state1(用來判斷是否開啟紅外避障) //L=0; //R=0;//左右紅外避障模塊狀態hongwai();//紅外信號接收函數,數據儲存在IRcord中四個八位二進制 lcd_init(); timer_init();//time1初始化 for(i=0;i<16;i++)lcd_char_write(i,0,line0[i]);for(i=0;i<16;i++)lcd_char_write(i,1,line1[i]);//lcd的初始顯示 while(1) { if(irok){//當紅外模塊接收完畢標志irok為1時表示一次接收完,irok置0;進行下一次紅外處理 Ircordpro(); irok=0; }if(irpro_ok){//紅外按鍵判斷及標志的修改 if(IRcord[2]==0x18)model=1;//通過遙控器完成模式字model的改寫以及速度的修改以及電機的開關紅外避障的開關 if(IRcord[2]==0x52)model=2; if(IRcord[2]==0x08)model=3; if(IRcord[2]==0x5a)model=4; if(IRcord[2]==0x42){speed++;IRcord[2]=0;if(speed>9)speed=1;} if(IRcord[2]==0x4a){speed--;IRcord[2]=0;

溫馨提示

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

評論

0/150

提交評論