機(jī)器人實(shí)訓(xùn)總結(jié)_第1頁(yè)
機(jī)器人實(shí)訓(xùn)總結(jié)_第2頁(yè)
機(jī)器人實(shí)訓(xùn)總結(jié)_第3頁(yè)
機(jī)器人實(shí)訓(xùn)總結(jié)_第4頁(yè)
機(jī)器人實(shí)訓(xùn)總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、機(jī)電接口設(shè)計(jì)與綜合實(shí)驗(yàn)機(jī)器人實(shí)訓(xùn)總結(jié) 學(xué) 院: 專(zhuān)業(yè)班級(jí): 姓名學(xué)號(hào): 指導(dǎo)教師: 2013年7月為期一周的機(jī)器人實(shí)訓(xùn)轉(zhuǎn)眼就過(guò)去了,個(gè)人認(rèn)為這是我上大學(xué)以來(lái)參加的最有意思的一次課程設(shè)計(jì)了,在實(shí)訓(xùn)期間,同學(xué)們親自動(dòng)手組裝機(jī)器人小車(chē)并通過(guò)修改調(diào)試程序使自己的小車(chē)完成要求的任務(wù),將平時(shí)學(xué)習(xí)的C語(yǔ)言和單片機(jī)知識(shí)運(yùn)用到了實(shí)際操作中,極大地調(diào)動(dòng)了我們學(xué)習(xí)的積極性并提高了動(dòng)手能力,是我們受益匪淺!任務(wù)一:組裝小車(chē)并完成基本調(diào)試實(shí)訓(xùn)第一天我們的主要任務(wù)便是將實(shí)訓(xùn)機(jī)器人小車(chē)按要求組裝好,這看似簡(jiǎn)單的任務(wù)是極其需要耐心與細(xì)致的,每一個(gè)螺絲都要擰緊,每一個(gè)電子元件都要安裝于指定位置,特別要注意左右輪的接線(xiàn),如果反接

2、將會(huì)使小車(chē)反向運(yùn)行。經(jīng)過(guò)半小時(shí)的摸索,我們的小車(chē)終于成形,但當(dāng)給它錄入一個(gè)前行程序時(shí),小車(chē)竟然莫名其妙的在原地打轉(zhuǎn),我們仔細(xì)查閱了實(shí)訓(xùn)指導(dǎo)書(shū),才發(fā)現(xiàn)問(wèn)題所在,原來(lái),每一個(gè)新組裝的機(jī)器人都需要進(jìn)行調(diào)零檢測(cè)才能保證其運(yùn)行的準(zhǔn)確,調(diào)零程序如下:#include<BoeBot.h>#include<uart.h>int main(void) uart_Init(); printf("The LED connected to P1_0 is blinking!n"); while(1); P1_0=1; delay_nus(1500); P1_0=0; del

3、ay_nus(20000); 將程序錄入小車(chē)并運(yùn)行,旋轉(zhuǎn)車(chē)輪旁的旋鈕直至車(chē)輪停轉(zhuǎn)便達(dá)到了調(diào)零的目的。接下來(lái),我們便要完成實(shí)訓(xùn)要求的第一個(gè)程序:控制小車(chē)LED燈的亮滅。通過(guò)參考指導(dǎo)書(shū)的已有程序,我們比較順利的完成了該任務(wù),任務(wù)程序如下:(在試驗(yàn)中需要注意LED燈的正負(fù)極)#include<BoeBot.h>#include<uart.h>int main(void)uart_Init();printf("The LED connected to P1_0 is blinking!n");while(1)P1_0=0;P1_1=1;delay_nms(5

4、00);P1_0=1;P1_1=0;delay_nms(500);任務(wù)二:機(jī)器人觸覺(jué)導(dǎo)航該任務(wù)要求機(jī)器人碰到障礙物時(shí),接觸開(kāi)關(guān)會(huì)有所察覺(jué),通過(guò)編程讓機(jī)器人避開(kāi)障礙物。在安裝胡須時(shí),需要注意胡須距傳感立柱既不能太遠(yuǎn)也不能太近,太遠(yuǎn)會(huì)導(dǎo)致機(jī)器人碰到障礙物后反應(yīng)過(guò)慢,太近則會(huì)使機(jī)器人在前方?jīng)]有障礙物的情況下進(jìn)行避障操作,影響小車(chē)正常行進(jìn)。胡須機(jī)器人避障程序如下:#include<BoeBot.h>#include<uart.h>int P1_4state(void)/獲取P1_4的狀態(tài),右胡須return (P1&0x10)?1:0;int P2_3state(voi

5、d)/獲取P2_3的狀態(tài),左胡須return (P2&0x08)?1:0;void Forward(void) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);void Left_Turn(void) int i; for(i=1;i<=26;i+)P1_1=1;delay_nus(1300); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);void Right_Turn(void) int i; for(i=1;i<

6、=26;i+)P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);void Backward(void) int i; for(i=1;i<=65;i+)P1_1=1;delay_nus(1300); P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);int main(void)uart_Init();printf("Program Running!n"); while(1)if(P1_4state()=0)&&

7、amp;(P2_3state()=0)Backward(); /向后Left_Turn();/向左Left_Turn();/向左else if(P1_4state()=0)Backward();/向后Left_Turn();/向左 else if(P2_3state()=0)Backward();/向后Right_Turn();/向右else Forward();/向前任務(wù)三:機(jī)器人紅外線(xiàn)導(dǎo)航任務(wù)二觸須接觸導(dǎo)航是依靠接觸變形來(lái)探測(cè)物體,而本任務(wù)是依靠紅外線(xiàn)探測(cè)機(jī)器人前進(jìn)路線(xiàn),然后確定何時(shí)有光線(xiàn)從被探測(cè)物體反射回來(lái),通過(guò)檢測(cè)反射回來(lái)的紅外光就可以確定前方是否有物體。在本次任務(wù)中,我們需要使用三極

8、管9013,這是因?yàn)镃51的IO驅(qū)動(dòng)能力較弱,這里我們加入三極管使其工作在開(kāi)關(guān)狀態(tài)。三極管是一種控制元件,主要用來(lái)控制電流大小,簡(jiǎn)單地說(shuō),是用小電流去控制大電流。紅外導(dǎo)航避障程序如下:#include<BoeBot.h>#include<uart.h>#include<intrins.h>#define LeftIR P1_2 /左邊紅外接收連接到P1_2#define RightIR P3_5 /右邊紅外接收連接到P3_5#define LeftLaunch P1_3 /左邊紅外發(fā)射連接到P1_3#define RightLaunch P3_6 /右邊紅外

9、發(fā)射連接到P3_6void IRLaunch(unsigned char IR) int counter; if(IR='L') for(counter=0;counter<38;counter+) LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); LeftLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

10、 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(IR='R') for(counter=0;counter<38;counter+)/右邊發(fā)射 RightLaunch=1;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _

11、nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); void Forward(void)/向前行走子程序 P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20);void Left_Turn(void)/左轉(zhuǎn)子程序 int i; for( i=1;i<=26;i+) P1_1=1; delay_nus(1300); P1_1=0; P1_0=1; delay_nus(1300);P1_0=0; delay_nms(

12、20); void Right_Turn(void)/右轉(zhuǎn)子程序 int i; for( i=1;i<=26;i+) P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1700); P1_0=0; delay_nms(20); void Backward(void)/向后行走子程序 int i; for( i=1;i<=65;i+) P1_1=1; delay_nus(1300); P1_1=0; P1_0=1; delay_nus(1700); P1_0=0; delay_nms(20); int main(void)int i

13、rDetectLeft,irDetectRight; uart_Init(); printf("Program Running!n"); while(1) IRLaunch('R'); /右邊發(fā)射 irDetectRight = RightIR;/右邊接收 IRLaunch('L'); /左邊發(fā)射 irDetectLeft = LeftIR;/左邊接收 if(irDetectLeft=0)&&(irDetectRight=0)/兩邊同時(shí)接收到紅外線(xiàn) Backward(); Left_Turn(); Left_Turn(); e

14、lse if(irDetectLeft=0)/只有左邊接收到紅外線(xiàn)Backward();Right_Turn(); else if(irDetectRight=0)/只有右邊接收到紅外線(xiàn)Backward();Left_Turn(); else Forward(); 任務(wù)四:尾隨小車(chē)該任務(wù)的設(shè)計(jì)線(xiàn)路與任務(wù)三相同,故完成較為簡(jiǎn)單,試驗(yàn)程序如下:#include<BoeBot.h>#include<uart.h>#include<intrins.h>#define LeftIR P1_2 /左邊紅外接收連接到P1_2#define RightIR P3_5 /右邊

15、紅外接收連接到P3_5#define LeftLaunch P1_3 /左邊紅外發(fā)射連接到P1_3#define RightLaunch P3_6 /右邊紅外發(fā)射連接到P3_6void IRLaunch(unsigned char IR) int counter; if(IR='L')/左邊發(fā)射 for(counter=0;counter<38;counter+) LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _

16、nop_(); _nop_(); LeftLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(IR='R')/右邊發(fā)射 for(counter=0;counter<38;counter+) RightLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _no

17、p_(); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); int main(void) int pulseLeft,pulseRight; int irDetectLeft,irDetectRight; uart_Init(); printf("Program Running!n"); do IRLaunch('R'); /右

18、邊發(fā)射 irDetectRight = RightIR;/右邊接收 IRLaunch('L'); /左邊發(fā)射 irDetectLeft = LeftIR;/左邊接收 if(irDetectLeft=0)&&(irDetectRight=0)/向后退 pulseLeft=1300; pulseRight=1700; else if(irDetectLeft=0)&&(irDetectRight=1)/右轉(zhuǎn) pulseLeft=1700; pulseRight=1700; else if(irDetectLeft=1)&&(irDet

19、ectRight=0)/左轉(zhuǎn) pulseLeft=1300; pulseRight=1300; else /前進(jìn) pulseLeft=1700; pulseRight=1300; P1_1=1; delay_nus(pulseLeft); P1_1=0; P1_0=1; delay_nus(pulseRight); P1_0=0; delay_nms(20); while(1); 任務(wù)五:機(jī)器人的距離檢測(cè)用同樣的IR LED/探測(cè)電路檢測(cè)距離,高靈敏度的頻率可以探測(cè)遠(yuǎn)距離的物體,低靈敏度的頻率可以探測(cè)距離較近的物體。這使得距離探測(cè)就簡(jiǎn)單了。選擇5個(gè)不同頻率,從最低靈敏度到最高靈敏度進(jìn)行測(cè)試,依

20、賴(lài)于探測(cè)器不能再檢測(cè)到物體的紅外線(xiàn)頻率,就可以推斷物體的大概位置。測(cè)試掃描頻率程序如下:#include <BoeBot.h>#include <uart.h>#define LeftIR P1_2 /左邊紅外接受連接到P1_2 /#define RightIR P3_5 /右邊紅外接收連接到P3_5#define LeftLaunch P1_3 /左邊紅外發(fā)射連接到P1_3/#define RightLaunch P3_6 /右邊紅外發(fā)射連接到P3_6unsigned int time;int leftdistance;/左邊的距離/int rightdistance

21、;/右邊的距離int distanceLeft, irDetectLeft;/int distanceRight,irDetectRight;unsigned int frequency5=29370,31230,33050,35700,38460;void timer_init(void)IE=0x82; /開(kāi)總中斷EA,允許定時(shí)器0中斷ET0 TMOD |= 0X01;/定時(shí)器0工作在模式1:16位定時(shí)器模式void FreqOut(unsigned int Freq) time = 256 - (500000/Freq);/根據(jù)頻率計(jì)算初值 TH0 = 0XFF;/高八位設(shè)FF TL0

22、= time;/低八位根據(jù)公式計(jì)算 TR0 = 1;/啟動(dòng)定時(shí)器 delay_nus(800);/延時(shí) TR0 = 0;/停止定時(shí)器void Timer0_Interrupt(void) interrupt 1LeftLaunch = LeftLaunch;/取反 /RightLaunch= RightLaunch; TH0 = 0XFF;/重新設(shè)值 TL0 = time;void Get_lr_Distances() unsigned int count; leftdistance = 0; /初始化左邊的距離 /rightdistance = 0;/初始化右邊的距離 for(count =

23、 0;count<5;count+) FreqOut(frequencycount);irDetectLeft = LeftIR; /左邊接收/irDetectRight = RightIR;/右邊接收 /printf("f=%dn",time);printf("irDetectLeft = %dn",irDetectLeft); /printf(" irDetectRight = %dn ",irDetectRight); if(irDetectLeft = 1) leftdistance+; /if (irDetectRig

24、ht = 1) /rightdistance+; int main(void) uart_Init(); timer_init(); printf("Progam Running!n"); printf("FREQENCY ETECTEDn"); while(1) Get_lr_Distances(); printf("distanceLeft = %dn",leftdistance);/printf(" distanceRight=%dn",rightdistance); printf("-n"

25、;); delay_nms(1000); 在進(jìn)行串口調(diào)試時(shí),應(yīng)注意串口的接線(xiàn)位置,安裝符合自己電腦的串口調(diào)試助手。任務(wù)六:尋線(xiàn)搬運(yùn)機(jī)器人可能是前幾個(gè)任務(wù)完成太輕松的原因,是我們對(duì)實(shí)訓(xùn)產(chǎn)生了懈怠的想法,但最后的任務(wù)再一次提醒了我需要學(xué)習(xí)的東西還有很多,永遠(yuǎn)都不能驕傲自滿(mǎn)。經(jīng)過(guò)一天多的調(diào)試,在機(jī)器人的運(yùn)行和編程中,出現(xiàn)了以下幾方面的問(wèn)題:一、轉(zhuǎn)彎出現(xiàn)問(wèn)題。在一些路口中轉(zhuǎn)彎出現(xiàn)了問(wèn)題。所以提倡用自定義轉(zhuǎn)彎,提高成功率。二、在運(yùn)行機(jī)器人前要檢查螺絲,檢查機(jī)器人的性能是否良好,以免在運(yùn)行過(guò)程中發(fā)生意外。三、遇到錯(cuò)誤時(shí),要耐心,細(xì)心檢查問(wèn)題,分析問(wèn)題,要互相討論出解決方案。四、電池的電量對(duì)小車(chē)運(yùn)行影響極大

26、最好選用質(zhì)量較好的電池。五、伺服電機(jī)的角度沒(méi)有調(diào)好,導(dǎo)致機(jī)器人在運(yùn)行過(guò)程中影響程序的運(yùn)行。六、熟悉自己的機(jī)器人,了解一些運(yùn)行、編程的小技巧。尋線(xiàn)搬運(yùn)機(jī)器人編程如下:#include <AT89X52.h>#include <stdio.h>#include<BoeBot.h>#define uint unsigned int #define uchar unsigned char uchar QTIState ;void Time1_init(void)EA = 1;/硬件串口使用定時(shí)器1,供AT89S52與PC機(jī)通信使用TMOD |= 0x20; /定時(shí)器

27、1方式2.8位自動(dòng)重裝模式SCON = 0x50; /模式1,8位數(shù)據(jù)TH1 = 0xFD; /波特率為9600TL1 = 0xFD;TR1 = 1; /起動(dòng)定時(shí)器TI = 1;void Forward(void)/向前行走子程序 P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20);void Pivot_Left(void)/左轉(zhuǎn)子程序 P1_1=1; delay_nus(1500); P1_1=0; P1_0=1; delay_nus(1350);P1_0=0; delay_nms(2

28、0);void Pivot_Right(void)/右轉(zhuǎn)子程序 P1_1=1; delay_nus(1650); P1_1=0; P1_0=1; delay_nus(1500); P1_0=0; delay_nms(20);void Rotate_right(void)P1_1=1; delay_nus(1650); P1_1=0; P1_0=1; delay_nus(1650); P1_0=0; delay_nms(20);void Rotate_Left(void)P1_1=1; delay_nus(1350); P1_1=0; P1_0=1; delay_nus(1350); P1_0=

29、0; delay_nms(20);void Backward(void) /向后行走子程序P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);void Get_QTI_State(void)QTIState = P2&0x0e ;void Follow_Line(void)Get_QTI_State();switch(QTIState)case 0x04 : Forward();break;case 0x06 : Pivot_Right();break; case 0x02 : Rotate

30、_right(); break;case 0x0c : Pivot_Left();break;case 0x08 : Rotate_Left();break;/*case 0x0e : Forward(); break;*/default : break;void main(void)int counter; Time1_init(); printf("program run ok!");for(counter=0;counter<350;counter+)/尋線(xiàn) Follow_Line(); /*for(counter=0;counter<20;counter+)/直走 Forward(); */for(counter=0;counter<33;counter+

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論