避障機(jī)器人設(shè)計(jì)報(bào)告
《避障機(jī)器人設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《避障機(jī)器人設(shè)計(jì)報(bào)告(21頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、巡線避障機(jī)器人的設(shè)計(jì)與制作 開(kāi)放性實(shí)驗(yàn)報(bào)告 ——避障機(jī)器人設(shè)計(jì) 系 別:智能科學(xué)與技術(shù) 姓 名:唐繼鵬 姚武浩 姜飛鵬 鄭光旭 指導(dǎo)老師:袁立行、王曙光、亢紅波 時(shí) 間:2011.9.16——2012.4.28 目 錄 1 系統(tǒng)功能介紹 1 2 設(shè)計(jì)任務(wù)與要求 1 3 系統(tǒng)硬件設(shè)計(jì) 1 3.1系統(tǒng)總體設(shè)計(jì)框圖 1 3.2尋線模塊(ST188) 2 3.3電機(jī)控制模塊 3 3.4單片機(jī)最小模塊 4 3.5數(shù)碼管顯示模塊 5 4 系統(tǒng)軟件實(shí)現(xiàn) 6 4.1 設(shè)計(jì)思路 6 4.2 軟件程序流程圖 7 4
2、.3程序代碼見(jiàn)附錄Ⅰ 7 5 調(diào)試結(jié)果 7 6 實(shí)驗(yàn)總結(jié) 8 附錄Ι 10 附錄Ⅱ 18 附錄Ⅲ………………………………………………………………19 1 系統(tǒng)功能介紹 本設(shè)計(jì)以單片機(jī)作為控制核心,電路分為最小系統(tǒng)模塊,黑線檢測(cè)模塊,電機(jī)驅(qū)動(dòng)模塊,數(shù)碼管顯示模塊。黑線檢測(cè)模塊采用反射式關(guān)電傳感器st188,并且接相應(yīng)的三級(jí)管來(lái)規(guī)劃傳感器的輸出,當(dāng)輸出高電平為正常情況。電機(jī)為伺服電機(jī),給定脈寬為1.5ms的信號(hào)電機(jī)保持不動(dòng),給定脈寬為1.7ms的信號(hào)電機(jī)正向轉(zhuǎn)到給定脈寬為1.3ms的信號(hào)電機(jī)逆向轉(zhuǎn)到。數(shù)碼管動(dòng)態(tài)顯示機(jī)器人行進(jìn)過(guò)程所用的時(shí)間。 2 設(shè)計(jì)任
3、務(wù)與要求 u 熟悉51系列單片機(jī)的原理及應(yīng)用。 u 掌握ST188設(shè)計(jì)電路和傳感器的使用。 u 掌握直流電機(jī)的驅(qū)動(dòng)方法。 u 掌握動(dòng)態(tài)數(shù)碼管顯示的方法。 u 設(shè)計(jì)機(jī)器人的硬件電路及軟件程序。 u 制作機(jī)器人的硬件電路,并調(diào)試軟件,最后實(shí)現(xiàn)機(jī)器人的自動(dòng)測(cè)量黑線。 3 系統(tǒng)硬件設(shè)計(jì) 3.1系統(tǒng)總體設(shè)計(jì)框圖 該系統(tǒng)中51單片機(jī)作為主微控芯片,其外多個(gè)I/O口作為通用I/O口接受傳感器的信號(hào)并輸出相應(yīng)的控制信號(hào)。 系統(tǒng)硬件總體設(shè)計(jì)框圖如下圖3.1-1所示。 圖3.1-1系統(tǒng)硬件總體設(shè)計(jì)框圖 3.2尋線模塊(ST188) 該系統(tǒng)中的尋線模塊我們采用的是ST188傳感器
4、。ST188是一個(gè)無(wú)限紅外模塊,它有一個(gè)發(fā)射管(白色)和一個(gè)接收管(黑色),一般情況下接收管能收到發(fā)射管發(fā)送的紅外光,但當(dāng)遇到吸光介質(zhì)(如黑色物體)時(shí)接收管便不能收到發(fā)射管的紅外光。由于這種現(xiàn)象,加上合適的硬件電路(如圖3.2-1),我們可以引出一條信號(hào)線,當(dāng)一切正常時(shí),信號(hào)線處于一種狀態(tài),但當(dāng)遇到吸光介質(zhì)時(shí)信號(hào)線便處于另一種狀態(tài),利用這種不同狀態(tài)的差異我們便可以通過(guò)微控制器來(lái)實(shí)現(xiàn)機(jī)器人的尋線行駛。ST188詳細(xì)資料見(jiàn)附錄Ⅱ 下圖3.2-1是該系統(tǒng)中我們的ST188外接硬件電路圖: 圖3.2-1 尋線模塊電路圖 圖中R1為發(fā)射管的限流電阻,若R1阻值過(guò)大,則發(fā)射管功率會(huì)大幅降低,所以
5、其阻值在50-200歐之間。R4為發(fā)光二極管的保護(hù)電阻。R2,R3,RV1為起分流的作用,其阻值可根據(jù)情況而定。其工作原理是通過(guò)R2,R3,RV1來(lái)確定輸出信號(hào)的門(mén)限值,當(dāng)發(fā)射管E端V高于RV1上的壓降時(shí),由于運(yùn)放的飽和特性,輸出低電壓0V:當(dāng)V低于RV1上的電壓時(shí),輸出電壓為5V。圖中的通過(guò)發(fā)光二極管指示是否有信號(hào)輸出。 實(shí)際硬件中我們可以通過(guò)調(diào)節(jié)滑動(dòng)變阻器的R5電阻值來(lái)選取理想的反射距離,從而提高ST188傳感器的靈敏度。 本設(shè)計(jì)中我們利用ST188來(lái)控制機(jī)器人尋線。由以上敘述可知,為使機(jī)器人尋線穩(wěn)定,最好選擇差異較大的環(huán)境,例如在白地板上貼上黑線,可使ST188尋線模塊工作更加靈敏穩(wěn)
6、定。 3.3電機(jī)控制模塊 本次實(shí)驗(yàn)采用的伺服電機(jī)的工作模式如下所示: 通過(guò)I/O口給電機(jī)的信號(hào)輸入如圖3.3-1所示的信號(hào)電機(jī)保持靜止,這個(gè)信號(hào)稱為電機(jī)的零標(biāo)定信號(hào),這個(gè)指令由時(shí)間間隔為20ms脈寬為1.5ms的一系列脈沖組成。 圖3.3-1電機(jī)控制信號(hào)(靜止?fàn)顟B(tài)) 通過(guò)I/O口給電機(jī)的信號(hào)輸入如圖3.3-2所示的信號(hào)電機(jī)將全速逆時(shí)針旋轉(zhuǎn),這個(gè)指令由時(shí)間間隔為20ms脈寬為1.3ms的一系列脈沖組成。 圖3.3-2電機(jī)控制信號(hào)(逆時(shí)針旋轉(zhuǎn)狀態(tài)) 通過(guò)I/O口給電機(jī)的信號(hào)輸入如圖3.3-3所示的信號(hào)電機(jī)將全速逆時(shí)針旋轉(zhuǎn),這個(gè)指令由時(shí)間間隔為20ms脈寬為1.7ms的
7、一系列脈沖組成。 圖3.3-3電機(jī)控制信號(hào)(順時(shí)針旋轉(zhuǎn)狀態(tài)) 3.4電機(jī)驅(qū)動(dòng)模塊 電機(jī)驅(qū)動(dòng)芯片L298N是SGS公司的產(chǎn)品,內(nèi)部包含4通道邏輯驅(qū)動(dòng)電路。是一種二相和四相電機(jī)的專用驅(qū)動(dòng)器,即內(nèi)含二個(gè)H橋的高電壓大電流雙全橋式驅(qū)動(dòng)器,接收標(biāo)準(zhǔn)TTL邏輯電平信號(hào),可驅(qū)動(dòng)46V、2A以下的電機(jī)。其引腳排列如圖1中U4所示,1腳和15腳可單獨(dú)引出連接電流采樣電阻器,形成電流傳感信號(hào)。L298可驅(qū)動(dòng)2個(gè)電機(jī),OUT1、OUT2和OUT3、OUT4之間分別接2個(gè)電動(dòng)機(jī)。5、7、10、12腳接輸入控制電平,控制電機(jī)的正反轉(zhuǎn),ENA,ENB接控制使能端,控制電機(jī)的停轉(zhuǎn)。也利用單片機(jī)產(chǎn)生PWM信號(hào)接
8、到ENA,ENB端子,對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行調(diào)節(jié)。 L298N的邏輯功能: 表1 SHARP GP2D12實(shí)物圖 外形及封裝: L298N實(shí)物圖 由于一片L298N可以直接驅(qū)動(dòng)兩個(gè)電機(jī),但是為了加大驅(qū)動(dòng)力,我們采用兩路并聯(lián)的方式來(lái)驅(qū)動(dòng)電機(jī) 3.5單片機(jī)最小模塊 整個(gè)實(shí)驗(yàn)的控制器件是51單片機(jī),它在實(shí)驗(yàn)中起了核心作用,采用內(nèi)部時(shí)鐘方式,給它的XTAL1和XTAL2引腳外接晶振,這樣就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào),給晶振的每個(gè)角又接了一個(gè)30PF的電容,讓晶振快速
9、起振并可以達(dá)到12M穩(wěn)定頻率,給單片機(jī)的RST口按鍵開(kāi)關(guān)使之構(gòu)成復(fù)位電路。具體電路如圖3.4-1所示 圖3.4-1單片機(jī)最小模塊 3.5數(shù)碼管顯示模塊 由于時(shí)鐘電路顯示的內(nèi)容是變化的,因此本實(shí)例采用動(dòng)態(tài)顯示 實(shí)驗(yàn)時(shí)數(shù)碼管采用的是共陽(yáng)極的數(shù)碼管,4個(gè)數(shù)碼管的段選相應(yīng)并聯(lián)在一起,由一個(gè)8位的I/O控制,動(dòng)態(tài)顯示時(shí),各位數(shù)碼管輪流通,要使其穩(wěn)定顯示必須采用掃描的方式,即在某一時(shí)刻只選通以位數(shù)碼管,并送出相應(yīng)的段碼,在另一時(shí)刻選通另一位數(shù)碼管,并送出此想相應(yīng)的段碼,依次規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是不不同的時(shí)刻分別顯示的,但由于人眼存在暫留效應(yīng),只要每
10、位顯示時(shí)間足夠短就可以給人不同的顯示感覺(jué)。 采用動(dòng)態(tài)顯示方式時(shí),采用三極管的放大作用,以增加led的亮度。具體電路圖如3.5-1所示。其中數(shù)碼管的ds1端的各位1、2、3、4、5、6、7接I/O的P2口,位選端接I/O的P1口。 圖3.5-1數(shù)碼管硬件電路 4 系統(tǒng)軟件實(shí)現(xiàn) 4.1 設(shè)計(jì)思路 在程序中用定時(shí)器0用用于輸出機(jī)器人電機(jī)所需的脈沖波形,定時(shí)器1用于數(shù)碼管顯示。計(jì)數(shù)器0,1初始化后,進(jìn)入while循環(huán),在while循環(huán)中等待定時(shí)器1中斷并相應(yīng)的相應(yīng)時(shí)間。否則等待定時(shí)器0輸出脈沖波形。由于中斷1只是為了顯示時(shí)間,而0中斷影響到機(jī)器人的行進(jìn)與否,所以在程序中設(shè)置1中斷的優(yōu)
11、先級(jí)高于0中斷。從而使從而使I/O口輸出穩(wěn)定的脈沖波形。 4.2 軟件程序流程圖 圖4.2-1系統(tǒng)軟件程序流程圖 4.3程序代碼見(jiàn)附錄Ⅰ 5 調(diào)試結(jié)果 開(kāi)放性試驗(yàn)使我掌握了不少知識(shí),在實(shí)驗(yàn)開(kāi)始之前我什么都不會(huì),通過(guò)壁障機(jī)器人的訓(xùn)練使我掌握了51單片機(jī),基本電路的設(shè)計(jì)和分析。但本次試驗(yàn)對(duì)我印象最深的是我自己在調(diào)試程序的時(shí)候出現(xiàn)的問(wèn)題,開(kāi)始小車(chē)應(yīng)該在驅(qū)動(dòng)和程序的控制下應(yīng)該調(diào)速,但事實(shí)是車(chē)根本沒(méi)有減速的跡象并且是全速前進(jìn)。我檢查自己的程序感覺(jué)程序是沒(méi)有問(wèn)題的,然后自然的把問(wèn)題想到了驅(qū)動(dòng)上,但驅(qū)動(dòng)不是我自己焊接的,根本不知道錯(cuò)誤從哪里找
12、。焊接驅(qū)動(dòng)的同學(xué)回家了,沒(méi)辦法看驅(qū)動(dòng)電路。只能是我自己看電路但自己對(duì)電路根本就沒(méi)有多接觸,當(dāng)時(shí)自己檢查電路圖不知從何開(kāi)始,整整檢查了一天感覺(jué)沒(méi)有問(wèn)題感覺(jué)已經(jīng)盡力了。晚上回到宿舍自己想了半天還是沒(méi)有找到問(wèn)題。第二天回到實(shí)驗(yàn)室問(wèn)題還是沒(méi)有找到,但就在自己已經(jīng)沒(méi)有精力在檢查的時(shí)候無(wú)意間看到了程序又看了一會(huì)ST188然后就突然感覺(jué)問(wèn)題找到了,自己看看了循跡模塊然后感覺(jué)中間的燈沒(méi)有亮,那就是意味這他給51的管腳一直是低電平是自己的程序一直就沒(méi)進(jìn)入其他程序,所以就出現(xiàn)了全速前進(jìn)的問(wèn)題。還有一次在給壁障機(jī)器人調(diào)試程序時(shí)他根本就不遍歷所有的道路,自己給51已經(jīng)下了一百多次程序,還是沒(méi)有找到問(wèn)題還是?;氐剿奚崴?/p>
13、覺(jué),下午原本打算不去了,但自己心里還是在想再試試。來(lái)到實(shí)驗(yàn)室,我的第三個(gè)程序便成功遍歷了所有的道路。通過(guò)上面的經(jīng)歷使我自己明白了很多,只要自己有足夠的耐心和毅力就一定能過(guò)實(shí)現(xiàn)你要完成的事情。
6 實(shí)驗(yàn)總結(jié)
附錄Ι
程序代碼如下:
#include
14、sbit ENB=P1^5; //右輪使能端 /*循跡兩側(cè)傳感*/ sbit right_red=P0^2; //右側(cè) sbit left_red=P0^1; //左側(cè) sbit redlight=P0^3; //紅外 sbit goright=P0^0; //拐彎?rùn)z測(cè) /********************向前***********************/ void gohead() { d0=1; d1=0; d2=1; d3=0; } //左轉(zhuǎn) void turnleft() { d0=0; d1=0; d2=1;
15、 d3=0; } //右轉(zhuǎn) void turnright() { d0=1; d1=0; d2=0; d3=0; } //倒轉(zhuǎn) void turnback() { d0=1; d1=0; d2=0; d3=1; } /*延時(shí)函數(shù)*/ void delay_ms(uint i) { uint j; for(;i>0;i--) for(j=110;j>0;j--); } /*循跡模塊*/ void xunjin() { int i; if((left_red==0)&&(right_r
16、ed==0)&&(goright==0)) { gohead(); for(i=20;i>0;i--) { if(i>16) { ENA=1; ENB=1; delay_ms(6); } else { ENA=0; ENB=0; delay_ms(5); } } } else if((left_red==0)&&(right_red==1)) { turnright(); for(i=20;i>
17、0;i--) { if(i>17) { ENA=1; ENB=0; delay_ms(4); } else { ENA=0; ENB=0; delay_ms(5); } } } else if((left_red==1)&&(right_red==0)) { turnleft(); for(i=20;i>0;i--) { if(i>17) { ENA=0; ENB=1;
18、 delay_ms(4); } else { ENA=0; ENB=0; delay_ms(5); } } } else if(goright) { gohead(); for(i=20;i>0;i--) { if(i>17) { ENA=1; ENB=1; delay_ms(7); } else { ENA=0; ENB=0; delay_
19、ms(5); } } while(1) { turnright(); for(i=20;i>0;i--) { if(i>17) { ENA=1; ENB=0; delay_ms(4); } else { ENA=0; ENB=0; delay_ms(5); } } if(right_red==1) break; }
20、} } //避障程序 void goback() { while(1) { uint i; turnback(); for(i=20;i>0;i--) { if(i>17 ) { ENA=1; ENB=1; delay_ms(5); } else { ENA=0; ENB=0; delay_ms(5); } } if( right_red==1) {
21、
break;
}
}
}
/*主程序*/
void main()
{
while(1)
{
xunjin(); //循跡
if(!redlight) //判斷
{
goback();
}
}
}
數(shù)碼管顯示程序:
#include
22、_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //4位一體共陽(yáng)極數(shù)碼管// uint k=0; uchar int_time,second; void delay(uchar x) { uchar i ; for(;x>0;x--) for(i=0;i<120;i++); } void showtime() { d1=0; P2=DSY_CODE[k%10]; //顯示各位// delay(2); P2=0Xff ; d1=1; d2=
23、0 ; P2=DSY_CODE[k/10%10]; //顯示十位// delay(2); P2=0Xff ; d2=1; d3=0; P2=DSY_CODE[k/100]; //顯示百位// delay(2); P2=0X00 ; d3=1; } void main() { TMOD=0x01; TR0=1; EA=1; ET0=1; IT0=0; P2=0xc0; TH0 =(65535 - 50000)/256; TL0 = (65535 - 50000)%256; while(1) { showtime(); } } void timer0() interrupt 1 { int_time++; if(int_time == 20) { int_time = 0; k++; if(k == 999) k = 0; } TH0 = (65535-50000)/256; TL0 = (65535-50000)%256; 附錄Ⅱ 19
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案