機器人實訓總結_第1頁
機器人實訓總結_第2頁
機器人實訓總結_第3頁
免費預覽已結束,剩余16頁可下載查看

下載本文檔

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

文檔簡介

1、機器人實訓總結文件編碼(GHTU-UITIDGGBKT-POIUWUUI8968)學 院: 專業班級: 姓名學號: 指導教師:凍孫林塢大學機器人實訓總結2013年7月為期一周的機器人實訓轉眼就過去了,個人認為這是我上大學以來參加的最 有意思的一次課程設計了,在實訓期間,同學們親自動手組裝機器人小車并通過 修改調試程序使自己的小車完成要求的任務,將平時學習的C語言和單片機知識 運用到了實際操作中,極大地調動了我們學習的積極性并提高了動手能力,是我 們受益匪淺!任務一:組裝小車并完成基本調試實訓第一天我們的主要任務便是將實訓機器人小車按要求組裝好,這看似簡 單的任務是極其需要耐心與細致的,每一個螺

2、絲都要擰緊,每一個電子元件都要 安裝于指定位置,特別要注意左右輪的接線,如果反接將會使小車反向運行。經 過半小時的摸索,我們的小車終于成形,但當給它錄入一個前行程序時,小車竟 然莫名其妙的在原地打轉,我們仔細查閱了實訓指導書,才發現問題所在,原 來,每一個新組裝的機器人都需要進行調零檢測才能保證其運行的準確,調零程 序如下:#include<>nclude>int main(void)uart_Init ();printf ("The LED connected to Pl_0 is blinking! nz,);while(1);Pl_0=l;delay_nus

3、(1500);Pl_0二0;delay_nus(20000); _將程序錄入小車并運行,旋轉車輪旁的旋鈕直至車輪停轉便達到了調零的目 的。接下來,我們便要完成實訓要求的第一個程序:控制小車LED燈的亮滅。通 過參考指導書的己有程序,我們比較順利的完成了該任務,任務程序如下:(在 試驗中需要注意LED燈的正負極)ftincludeOftincludeOint main(void)uar();printf (The LED connected to Pl_0 is blinking! n,z):while (1)Pl_0二0;Pl_l=l;delay_nms(500);Pl_0二1;Pl_l二0;

4、delay_nms (500); _任務二:機器人觸覺導航該任務要求機器人碰到障礙物時,接觸開關會有所察覺,通過編程讓機器人 避開障礙物。在安裝胡須時,需要注意胡須距傳感立柱既不能太遠也不能太近, 太遠會導致機器人碰到障礙物后反應過慢,太近則會使機器人在前方沒有障礙物 的情況下進行避障操作,影響小車正常行進。胡須機器人避障程序如下:ftincludeOncludeOint Pl_4state (void)/獲取 Pl_4 的狀態,右胡須return (Pl&0xl0)1:0;int P2_3state(void)/獲取 P2_3 的狀態,左胡須return (P2&0x08)1

5、:0;void Forward(void)Pl_l=l; delay_nus(1700);Pl_l=0;Pl_0=l; delay_nus(1300);Pl_0=0; delay_nms(20); _void Left_Turn(void) _int i;for(i=l;i<=26;i+)Pl_l=l; delay_nus (1300);Pl_l=0;Pl_0=l; delay_nus (1300);Pl_0=0; delay_nms (20); _void Right_Turn(void) int i;for(i=l;i<=26;i+)Pl_l=l; delay_nus (170

6、0);Pl_l=0;Pl_0=l; delay_nus (1700);Pl_0=0; delay_nms (20); _void Backward(void)int i;for(i=l;i<=65;i+)Pl_l=l;delay_nus(1300);Pl_l=0;Pl_0=l; delay_nus (1700);Pl_0二0; delay_nms (20); _int main(void)uart_Init ();printf("Program Running!n");while (1)if (Pl_4state ()=0) && (P2_3state

7、 ()=0) ,Backward () ; /向后Left_Turn();/ 向左Left_Turn() ;/向左else if(Pl_4state()=0) " ,Backward () ;/向后Left_Turn() ;/向左else if (P2_3state ()=0) _ ,Backward () ; / 向后Right_Turn () ;/向右elseForward () ;/ 向前任務三:機器人紅外線導航任務二觸須接觸導航是依靠接觸變形來探測物體,而本任務是依靠紅外線探測機器人前進路線,然后確定何時有光線從被探測物體反射回來,通過檢測反射 回來的紅外光就可以確定前方是否

8、有物體。在本次任務中,我們需要使用三極管9013,這是因為C51的10驅動能力較弱, 這里我們加入三極管使其工作在開關狀態。三極管是一種控制元件,主要用來控 制電流大小,簡單地說,是用小電流去控制大電流。紅外導航避障程序如下: ncludeftincludeOncludeOttdefine LeftIRPl_2/左邊紅外接收連接到Pl_2#define RightIRP3_5/右邊紅外接收連接到P3 5#define LeftLaunchPl_3/左邊紅外發射連接到Pl_3#define RightLaunchP3_6/右邊紅外發射連接到P3 6void IRLaunch(unsignedch

9、ar IR)int counter;if (IR= L')for (counter=0;counter<38;counter+)LeftLaunchl;_nop_(); _nop_(); _nop_(); _nop_() ; _nop_() ; _nop_(); _nop_(); _nop_(); _nop_(); _nop_() ; _nop_() ; _nop_(); LeftLaunch二0;_nop_(); _nop_(); _nop_(); _nop_() ; _nop_() ; _nop_(); _nop_(); _nop_(); _nop_(); _nop_() ;

10、 _nop_() ; _nop_();if (IR= R')for (counter二0; counter<38; counter+) /右邊發身寸RightLaunchl;_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();RightLaunch二0;_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();_nop_();_nop_();_nop_();_nop_() ;_nop_() ;

11、_nop_();void Forward(void)/向前行走子程序Pl 1=1; delay_nus(1700);Pl_l=0;Pl_0=l;delay_nus(1300);Pl_0=0;delay_nms(20); _void Left_Turn(void)/左轉子程序 "int i;for( i=l;i<=26;i+)Pl_l=l;delay_nus(1300);Pl_l=0;Pl_0二1; delay_nus (1300);Pl_0=0;delay_nms(20); _void Right_Turn (void) /右轉子程序 _int i;for( i=l;i<

12、=26;i+)Pl_l=l;delay_nus(1700);Pl_l=0;Pl_0二1;delay_nus(1700);Pl_0=0;delay_nms(20); _void Backward (void) /向后行走子程序 int i;for( i=l;i<=65:i+)Pl_l=l; delay_nus (1300);P1_1=O;P1_O=1;delay_nus(1700);Pl_0二0;delay_nms(20); _int main(void)int irDetectLeft, irDetectRight;uart_Init ();printf (''Progr

13、am Running! n");while (1)IRLaunch ('R'); 右邊發射irDetectRight 二 RightIR;/右邊接收IRLaunch ('L') ; /左邊發射 irDetectLeft = LeftIR;/左邊接收 辻(irDetectLeft=O)&& (irDetectRight=O) /兩邊同時接收 到紅外線Backward ();Left_Turn ();Left_Turn();"else if(irDetectLeft=O) /只有左邊接收到紅外線Backward ();Right_

14、Turn (); _else if (irDetectRight=O)/只有右邊接收到紅外線Backward ();Left_Turn(); _elseForward ();任務四:尾隨小車該任務的設計線路與任務三相同,故完成較為簡單,試驗程序如下:SincludeO #include<> #includedefine LeftIR Pl_2 define RightIR P3_5 #define LeftLaunch Pl_3 define RightLaunch P3_6/左邊紅外接收連接到Pl_2 /右邊紅外接收連接到P3_5 /左邊紅外發射連接到Pl_3 /右邊紅外發射連接

15、到P3_6void IRLaunch(unsigned char IR)int counter;if (IR= L')左邊發射for (counter=0;counter<38;counter+)LeftLaunch=l;_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();LeftLaunch=O;_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();_nop_();_nop_();_no

16、p_();_nop_() ;_nop_() ;_nop_();辻(IR二二'R')/右邊發射for (counter二0;counter<38;counter+)RightLaunch二1;_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();RightLaunch二0;_nop_();_nop_();_nop_();_nop_() ;_nop_() ;_nop_();_nop_();_nop_();_nop_();_nop_(

17、) ;_nop_() ;_nop_();int main(void)int pulseLeft, pulseRight;int irDetectLeft, irDetectRight;uart_Init ();printf ("'Program Running! n,z);doIRLaunchR) ; /右邊發射 irDetectRight 二 RightIR;/右邊接收IRLaunch (' L') ; /左邊發射irDetectLeft = LeftIR;/左邊接收if (irDetectLef t=0) && (irDetectRight

18、=O) / 向后退pulseLeft=1300;pulseRight二1700;else if (irDetectLeft=0)&&(irDetectRight=l)/右轉pulseLeft二1700;pulseRight二1700;else if (irDetectLeft=l)&&(irDetectRight=O)/左轉pulseLeft二1300;pulseRight二1300;else /前進pulseLeft=1700;pulseRight二1300;Pl_l=l;delay_nus(pulseLeft);Pl_l=0;Pl_0=l;delay_nus

19、(pulseRight);Pl_0=0;delay_nms(20); _while (1);任務五:機器人的距離檢測用同樣的IR LED/探測電路檢測距離,高靈敏度的頻率可以探測遠距離的物 體,低靈敏度的頻率可以探測距離較近的物體。這使得距離探測就簡單了。選擇5 個不同頻率,從最低靈敏度到最高靈敏度進行測試,依賴于探測器不能再檢測到 物體的紅外線頻率,就可以推斷物體的大概位置。測試掃描頻率程序如下:Sinclude <>include <>define LeftIRPl_2/ftdefine RightIR P3_5#define LeftLaunchPl_3/左邊紅外

20、接受連接到Pl_2/右邊紅外接收連接到P3_5/左邊紅外發射連接到Pl_3/ttdefine RightLaunch P3_6/右邊紅外發射連接到P3_6unsigned int time;int leftdistance; /左邊的距離/int rightdistance: /右邊的距離int distanceLeft, irDetectLeft;/int distanceRight, irDetectRight;unsigned int frequency5 = 29370, 31230, 33050, 35700, 38460:void timer_init(void)IE二0x82;/

21、開總中斷EA,允許定時器0中斷ETOTMOD |= 0X01;/定時器0工作在模式1: 16位定時器模式void FreqOut(unsigned int Freq)time = 256 - (500000/Freq) ; /根據頻率計算初值THO = OXFF;TLO 二 time:TRO = 1;delay_nus (800);TRO 二 0;/高八位設FF/低八位根據公式計算/啟動定時器/延時/停止定時器void TimerOInterrupt(void) interrupt 1LeftLaunch 二 LeftLaunch;/取反/RightLaunch二 ' RightLau

22、nch;/重新設値THO = OXFF;TLO 二 time:void Get_lr_Distances()unsigned int count: for (count 二 0:count<5:count+)leftdistance 二 0;初始化左邊的距離/rightdistance 二 0;/初始化右邊的距離FreqOut(frequencycount);讓 DetectLeft = LeftIR;左邊接收/irDetectRight = RightIR; /右邊接收/printf ("QWd'n", time);printf ("irDetec

23、tLeft 二 %dnz,, irDetectLeft); /printf C' irDetectRight 二 %dn ,z, irDetectRight); if(irDetectLeft 二二 1)leftdistance+;/if (irDetectRight 二二 1)/rightdistance+;int main(void)uart_Init ();timer_init ();printf("Progam Running!n");printfCFREQENCY ETECTEDn);while (1)Get_lr_Distances();printf(&

24、quot;distanceLeft = %dn", leftdistance);/printf (” distanceRight二dn", rightdistance);printfCn);delay_nms(1000);在進行串口調試時,應注意串口的接線位置,安裝符合白己電腦的串口調試 助手。任務六:尋線搬運機器人可能是前兒個任務完成太輕松的原因,是我們對實訓產生了懈怠的想法,但 最后的任務再一次提醒了我需要學習的東西還有很多,永遠都不能驕傲自滿。經過一天多的調試,在機器人的運行和編程中,出現了以下兒方面的問題:一、轉彎出現問題。在一些路口中轉彎出現了問題。所以提倡用自定

25、義轉 彎,提高成功率。二、在運行機器人前要檢查螺絲,檢查機器人的性能是否良好,以免在運行 過程中發生意外。三、遇到錯誤時,要耐心,細心檢查問題,分析問題,要互相討論出解決方 案。四、電池的電量對小車運行影響極大最好選用質量較好的電池。五、伺服電機的角度沒有調好,導致機器人在運行過程中影響程序的運行。六、熟悉自己的機器人,了解一些運行、編程的小技巧。尋線搬運機器人編程如下:include <>include <>#includedefine uint unsigned int define uchar unsigned char uchar QTIState ;void

26、Timelinit(void)EA二1;/硬件串口使用定時器1,供AT89S52與PC機通信使用TMOD |= 0x20;SCON = 0x50;TH1 = OxFD;/定時器1方式位自動重裝模式模式1, 8位數據/波特率為9600TL1 = OxFD;TRI = 1;TI = 1;/起動定時器void F or ward (voi d) /向前行走子程序 Pl_l=l;delay_nus(1700);Pl_l=0;Pl_0=l;delay_nus(1300);Pl_0=0;delay_nms (20); _void Pivot_Left (void) /左轉子程序delay_nus(1500

27、);Pl_l二0;Pl_0=l;delay_nus (1350);Pl_0二0; delay_nms (20); _void Pivot_Right (void)/右轉子程序Pl_l二1; delay_nus(1650);P1_1=O;P1_O=1; delay_nus(1500);Pl_0=0; delay_nms (20);_void Rotate_right(void)_Pl_l=l;delay_nus(1650);Pl_l=0;Pl_0=l;delay_nus(1650);Pl_0=0; delay_nms (20); _void Rotate_Left(void) Pl_l=l;de

28、lay_nus(1350);Pl_l=0;Pl_0=l;delay_nus(1350);Pl_0=0; delay_nms (20); _void Backward (void) /向后行走子程序 Pl_l=l;delay_nus(1300);Pl_l=0;Pl_0=l;delay_nus(1700);Pl_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()

29、:break;case 0x06 : Pivot_Right();break;case 0x02 : Rotate_right();break;case 0x0c : Pivot_Left();break;case 0x08 : Rotate_Left();break;/*case OxOe : Forward();break;*/ default :break;void main(void)int counter;Timel_init ();printf("'program run ok!");for (counter=0; counter<350; counter+) /尋線Follow_Line(); /*f or (counter=0; cou nt er<20; counter+) / / 直走 Forward ();for (counter二0; counter<33; counter+) /左轉90 Pivot_Left (); "for (counter=0; counter<65; cou nte r+) / / 直走 Forward ();for (counter

溫馨提示

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

評論

0/150

提交評論