C語言實訓報告--精選文檔_第1頁
C語言實訓報告--精選文檔_第2頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設計實訓報告題 目: 紅外避障機器人 院 (系): 信息工程系 專 業: 通信工程 學生姓名: 韋嘉寶 學 號: 1551100424 指導教師: 朱震 周斌 王旬 全劉輝 2016 年 10月 8 日 目 錄摘要1設計要求2設計步驟3代碼編寫4心得體會5參考文獻·6 許多機器人使用雷達(RADAR)或者聲納(SONAR)來探測物體而不需要同物體接觸。本文的方法是使用紅外光來照射機器人前進的路線,然后確定何時有光線從被探測目標反射回來,通過檢測反射回來的紅外光就可以確定前方是否有物體。由于紅外遙控技術的發展,現在紅外線發射器和接收器已經很普及并且價格很便宜。 隨著微電子技術

2、的不斷發展,微處理器芯片的集成程度越來越高,單片機已可以在一塊芯片上同時集成CPU、存儲器、定時器、并行和串行接口、看門狗、前置放大器、A/D轉換器、D/A轉換器等多種電路,這就很容易將計算機技術與測量控制技術結合,組成智能化測量控制系統。這種技術促使機器人技術也有了突飛猛進的發展,目前人們已經完全可以設計并制造出具有某些特殊功能的簡易智能小車。 機器人使用紅外線二極管 LED 作為前燈,如圖 6-1 所示。 紅外線二極管發射紅外光線,如果機器人前面有障礙物,紅外線從物體反射回來,相當 于機器人眼睛的紅外檢測(接收)器,檢測到反射回的紅外光線,并發出信號來表明檢測到從 物體反射回紅外線。機器人

3、的大腦單片機 AT89S52 基于這個傳感器的輸入控制伺服電機。 紅外線(IR)接收/檢測器有內置的光濾波器,除了需要檢測的 980 nm 波長的紅外線外,它幾乎不允許其他光通過。紅外檢測器還有一個電子濾波器,它只允許大約 38.5 kHz 的電信 號通過。換句話說,檢測器只尋找每秒閃爍 38500 次的紅外光。這就防止了普通光源像太陽 光和室內光對 IR 的干涉。太陽光是直流干涉(0Hz)源,而室內光依賴于所在區域的主電源, 閃爍頻率接近 100 Hz 或 120 Hz。由于 120 Hz 在電子濾波器的 38.5 kHz 通帶頻率之外,它完 全被 IR 探測器忽略。本任務將搭建并測試紅外線

4、發射和檢測器對。本講需要用到的新部件如下:元件清單 (1)紅外檢測器,2 個。 (2)IR LED(帶套筒),2 個。 (3)470 電阻,2 個。(4)連接線,若干。二、設計要求(1)小車能夠完成前進、后退、左轉、右轉等動作。(2)機器人能夠讀出傳感器電平變化,并作相應的動作變化。(3)利用機器人所裝配的兩個探測器,探測和避開障礙物。三、設計步驟1.測試紅外發射探測器 下面要用 P1_3 發送持續 1ms 的 38.5kHz 的紅外光,如果紅外光被機器人路徑上的物體反射回來,紅外檢測器將給微控制器發送一個信號,讓它知道已經檢測到反射回的紅外光。 讓每個IR LED探測器組工作的關鍵是發送1m

5、s頻率為38.5kHz的紅外信號,然后立刻將IR探測器的輸出存儲到一個變量中。下面是一個例子,它發送 38.5 kHz信號給連接到P1_3的IR發射器,然后用整型變量 irDetectLeft存儲連接到P1_2的IR探測器的輸出上。 for(counter=0;counter<38;counter+) P1_3=1; delay_nus(13); P1_3=0; delay_nus(13); irDetectLeft=P1_2state();上述代碼給 P1_3 輸出的信號高電平13s,低電平為13s,總周期為26s,即頻率約為38.5kHz。總共輸出 38個周期的信號,即持續時間約為1

6、ms(38×261000s)。當沒有紅外信號返回時,探測器的輸出狀態為高電平。當它探測到被物體反射的38.5kHz紅外信號時,它的輸出為低電平。因紅外信號發送的持續時間為1ms,因此IR探測器的輸出如果處于低電平,其持續狀態也不會超過1ms,因此發送完信號后必須立即將IR探測器的輸出存儲到變量中。這些存儲的值會顯示在調試終端或被機器人用來導航。 保持機器人與串口電纜的連接,因為需用調試終端來測試 IR 組。 放一個物體,比如手或一張紙,距離左側 IR 組大約 23cm 處,調試終端會顯示“irDetecfLeft=0”;將物體移開時,它顯示“irDetectLeft=1”。再次修改程

7、序,使其適用于右方紅外。3、探測和避開障礙物 有關IR檢測器的趣事是它們的輸出與觸須的輸出非常相像。沒有檢測到物體時,輸出為高電平;檢測到物體時,輸出為低電平。本任務是更改程序RoamingWithWhiskers.c,使它適用于IR檢測器。 進行IR探測時要使用AT89S52的4個引腳:P1_2、P1_3、P3_5和P3_6。#define LeftIR P1_3 /左邊紅外接收連接到 P1_3 #define RightIR P1_2 /右邊紅外接收連接到 P1_2 #define LeftLaunch P3_6 /左邊紅外發射連接到 P3_6 #define RightLaunch P3

8、_5 /右邊紅外發射連接到 P3_5這里用到了宏定義命令:#define,它的作用是在后面的程序文件中可以用LeftIR等來代替P1_3這個字符串等。程序在編譯預處理時,會自動將后面程序中出現的所有LeftIR等都用P1_3代替。這種方法是用一個簡單的名字代替一個長的字符串,或者用一個有意義的名字代替一些無規則、無意義的字符串,方便程序閱讀、理解和修改。4、改變觸須程序使其適用于 IR 檢測和躲避 設計一個函數 void IRLaunch(unsigned char IR)來進行紅外線發射。 void IRLaunch(unsigned char IR)int counter;if(IR=&#

9、39;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_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();i

10、f(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_(); _nop_(); _nop_();

11、這個函數的形參是一個無符號的字符型變量,用到了修飾符unsigned。對于字符型變量而言,在第 2 講介紹過,如果沒有指定修飾符unsigned,它也可以作為一個有符號的8位整型變量,取值范圍為-128127。如果是無符號型,則取值范圍為 0255。無論是有符號還是無符號,其數值作為編碼時代表的字符都是一樣的。 修改ifelse語句存儲IR檢測信息的變量。if(irDetectLeft=0)&&(irDetectRight=0) /兩邊同時接收到紅外線Left_Turn();Left_Turn();else if(irDetectLeft=0) /只有左邊接收到紅外線Right

12、_Turn();else if(irDetectRight=0) /只有右邊接收到紅外線Left_Turn();elseForward();2.本程序由如下模塊組成:(1)小車左右兩個輪子的控制模塊,完成小車不同狀態下的行進方式。(2)小車的后退控制程序模塊,通過接受到指定信號完成小車的后退指令。(3)小車的接收器接收信號模塊,完成不同信號狀態的傳遞和選擇狀態開關。3.完成運動流程(1)當左接收器檢測到信號右接收器沒有檢測到信號時小車向左轉彎 (2)當右接收器檢測到信號左接收器沒有檢測到信號時小車向右轉彎(3)當左右探頭都檢測到信號時小車后退。(4)當小車左右接收器均未檢測到信號時直行。4.函

13、數的定義5.運動控制程序四、代碼編寫#include<BoeBot.h>#include <AT89X52.h>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<=16;i+)P1_1=1;delay_nus(1500);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);voi

14、d Right_Turn(void) /右轉子程序int i;for( i=1;i<=26;i+)P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);void Backward(void) /向后行走子程序int i;for( i=1;i<=30;i+)P1_1=1;delay_nus(1500);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);void main()if(P1_2=0)&&(P1_3=0) /兩邊同時

15、接收到紅外線Backward();Right_Turn();Right_Turn();Right_Turn();else if(P1_3=0) /只有左邊接收到紅外線Backward();Right_Turn();else if(P1_2=0) /只有右邊接收到紅外線Backward();Left_Turn();elseForward();五、心得體會(1)在對模塊化機器人的組裝調整中,我們熟悉了各種結構件的使用技巧,為設計更復雜的構型打好了基礎;使我了解了機器人小車執行各種功能的原理和利用的器件,了解了小車最基本的前進后退轉彎的工作原理,了解了小車如何尋線行駛,了解小車如何避障和尋找目標。(2)讓我親身感受到傳感器在機器人工作中的運用,可以說,機器人每做一個任務都離不開傳感器,從避障,找目標物等等任務中完全體現出來。(3)熟悉了用電腦c語言的應用及其部分傳感器的使用,此次實驗是培養我們綜合運用所學知識發現提出分析和解決實際問題鍛煉實踐能力的重要環節隨著科學技術發展的日新日異,現在機器人的應用在我們生活中日益增加,使我了解了一些關于機器人的知

溫馨提示

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

最新文檔

評論

0/150

提交評論