避障機器人紅外測距模塊設計與調(diào)試_第1頁
避障機器人紅外測距模塊設計與調(diào)試_第2頁
避障機器人紅外測距模塊設計與調(diào)試_第3頁
避障機器人紅外測距模塊設計與調(diào)試_第4頁
避障機器人紅外測距模塊設計與調(diào)試_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、避障機器人紅外測距模塊設計與調(diào)試一、實訓目的1、了解模數(shù)轉(zhuǎn)換器的基本功能;2、了解紅外測距模塊的基本功能及技術(shù)規(guī)格;3、掌握紅外傳感器工作原理。 二、實訓設備1 硬件:HOST機一臺、基于機器人項目驅(qū)動的嵌入式教學實訓平臺一套;2 軟件:Siliconlab IDE開發(fā)環(huán)境、調(diào)試器。三、實訓原理紅外距離感應模塊是專為機器人設計的測障傳感器,如圖所示。它通過發(fā)射紅外線并測量紅外線被反射的強度來輸出反映和物體距離的電壓信號,有效距離 1080厘米。紅外測距傳感器紅外測距功能編號名稱/功能1VCC 電源線2GND 地線3Vo 輸出信號線4發(fā)射管5接收管紅外傳感器基于三角測量原理。紅外發(fā)射器按照一定的

2、角度發(fā)射紅外光束,當遇到物體以后,光束會反射回來,如圖所示。反射回來的紅外光線被CCD檢測器檢測到以后,會獲得一個偏移值L,利用三角關(guān)系,在知道了發(fā)射角度a,偏移距L,中心矩X,以及濾鏡的焦距f以后,傳感器到物體的距離D就可以通過幾何關(guān)系計算出來了。四、實訓步驟1、正確連接PC 機、調(diào)試器和嵌入式教學實訓平臺,連接紅外測距模塊;2、打開嵌入式教學實訓平臺電源;3、打開工程,編譯、鏈接、進入調(diào)試、運行程序,觀察lcd屏上顯示的測量值,移動機器人,觀察lcd屏上測量值的變化(思考測量值的變化的原理)4、測量傳感器的輸出特性曲線。 在實驗中需要中的函數(shù)及功能說明函數(shù)名:unsigned char G

3、etIR_Distance(unsigned char channle)函數(shù)說明:獲取紅外傳感器感測距離函數(shù)名:void ADC_PortInit()函數(shù)說明:ADC引腳初始化函數(shù)名:void ADC_Init()函數(shù)說明:ADC初始化函數(shù)名:unsigned char ADC_DistanceGet(unsigned char AD_port)函數(shù)說明:獲取AD_port端口紅外傳感器的值函數(shù)名:void ADC_ConvertStart()函數(shù)說明:AD轉(zhuǎn)換啟動函數(shù)名:void AD_PortSelection(AD_port)函數(shù)說明:AD轉(zhuǎn)換端口配置函數(shù)名:unsigned int A

4、DC_AvrDataGet(unsigned int *AD_data)函數(shù)說明:獲取平均值函數(shù)名:double SensorDistanceProcess(double x )函數(shù)說明:ADC值距離轉(zhuǎn)換#include "Sensor_AD.h"#define AD_NUM 10/*/! 函數(shù)名:unsigned char GetIR_Distance(unsigned char channle)/! 函數(shù)說明:獲取紅外傳感器感測距離*/unsigned char GetIR_Distance(unsigned char channle)xdata unsigned in

5、t ucIRDisValue = 0;if(channle<0 | channle>10)return 0;ucIRDisValue = ADC_DistanceGet(channle);ucIRDisValue = (int)SensorDistanceProcess(ucIRDisValue);if(ucIRDisValue>255)ucIRDisValue = 255;return (char)ucIRDisValue;unsigned int GetIRDistance(unsigned char channle)xdata unsigned int ucIRDisV

6、alue = 0;if(channle<0 | channle>10)return 0;ucIRDisValue = ADC_DistanceGet(channle);return ucIRDisValue;/*/! 函數(shù)名:unsigned char GetIRCol(unsigned char AD_Point)/! 函數(shù)說明:獲取灰度傳感器感測灰度值*/unsigned int GetIRCol(unsigned char ad_channle)xdata unsigned int ucGreyValue;if(ad_channle<0 | ad_channle>

7、9)return 0;ucGreyValue = ADC_DistanceGet(ad_channle);return (ucGreyValue);/*/! 函數(shù)名:void ADC_PortInit()/! 函數(shù)說明:ADC引腳初始化/!-/! 引腳圖:/!-/! 引腳 端口 AMX0P/!/! AD0-P1.7-0x07/! AD1-P2.0-0x08/! AD2-P2.1-0x09/! AD3-P2.2-0x0A/! AD4-P2.3-0x0B/! AD5-P2.4-0x0C/! AD6-P2.5-0x0D/! AD7-P2.6-0x0E/! AD8-P2.7-0x0F/! AD9-P3

8、.0-0x10*/void ADC_PortInit()unsigned char SFRPAGE_save = SFRPAGE;SFRPAGE = CONFIG_PAGE;/當有語音的時候,P1口不能AD初始化P1MDIN &= 0x80; /P1.7模擬輸入P1SKIP |= 0x80; /交叉開關(guān)跳過模擬引腳P2MDIN = 0x00; /P2模擬輸入P2SKIP = 0xFF; /交叉開關(guān)跳過模擬引腳/P3MDIN &= 0x01; /P3.0模擬輸入 /P3SKIP |= 0x01; /交叉開關(guān)跳過模擬引腳XBR1 = 0x40; /交叉開關(guān)使能SFRPAGE = S

9、FRPAGE_save;/*/! 函數(shù)名:void ADC_Init()/! 函數(shù)說明:ADC初始化*/void ADC_Init()unsigned char SFRPAGE_save = SFRPAGE;ADC_PortInit();SFRPAGE = CONFIG_PAGE;ADC0CN= 0xC0; /跟蹤模式,開啟轉(zhuǎn)換ADC0CF = (SYSCLOCK/3000000 - 1) << 3;ADC0CF &= 0x04; /右端對齊EIE1 &= 0x08; /禁止ADC中斷/AD0EN = 1;REF0CN = 0x08;SFRPAGE = SFRPAG

10、E_save;/*/! 函數(shù)名:unsigned char ADC_DistanceGet(unsigned char AD_port)/! 函數(shù)說明:獲取AD_port端口紅外傳感器的值*/unsigned int ADC_DistanceGet(unsigned char AD_port)xdata unsigned char AD_counter=0;xdata unsigned char i = 0;xdata unsigned char adc0_h,adc0_l;xdata unsigned int ad_test;xdata unsigned int ADC_DataStore1

11、0 = 0,0,0,0,0,0,0,0,0,0;if(AD_port>0x0A)return 0xFF;AD_PortSelection(AD_port);ADC_ConvertStart();for(AD_counter=0;AD_counter<10;AD_counter+) while(!AD0INT);adc0_h = ADC0H;adc0_h &= 0x03;adc0_l = ADC0L; ADC_DataStoreAD_counter = (unsigned int)(adc0_h)<<8) + (unsigned int)adc0_l;/ADC_D

12、ataStoreAD_counter = (unsigned int)(adc0_l);AD0INT = 0;ADC_ConvertStart();i+;/ADC_FlagClear(); /ADC_DataStore0 = ADC_AvrDataGet(ADC_DataStore);/return SensorDataAD_port0;ad_test = ADC_AvrDataGet(ADC_DataStore);/ad_test+;/return (ADC_AvrDataGet(ADC_DataStore);return(ad_test);/*/! 函數(shù)名:void ADC_Convert

13、Start()/! 函數(shù)說明:AD轉(zhuǎn)換啟動*/void ADC_ConvertStart()unsigned char SFRPAGE_save = SFRPAGE;SFRPAGE = CONFIG_PAGE;AD0EN = 1;/EA = 0;AD0INT = 0;AD0BUSY = 1;SFRPAGE = SFRPAGE_save;/*/! 函數(shù)名:void AD_PortSelection(AD_port)/! 函數(shù)說明:AD轉(zhuǎn)換端口配置*/void AD_PortSelection(unsigned char port_unm)unsigned char SFRPAGE_save =

14、SFRPAGE;SFRPAGE = CONFIG_PAGE;switch(port_unm)case 0x01: AMX0P = 0x07; break;case 0x02: AMX0P = 0x08; break;case 0x03: AMX0P = 0x09; break;case 0x04: AMX0P = 0x0A; break;case 0x05: AMX0P = 0x0B; break;case 0x06: AMX0P = 0x0C; break;case 0x07: AMX0P = 0x0D; break;case 0x08: AMX0P = 0x0E; break;case 0

15、x09: AMX0P = 0x0F; break;case 0x0A: AMX0P = 0x10; break;default: break;AMX0N = 0x1F; /負輸入端選擇VDDSFRPAGE = SFRPAGE_save;/*/! 函數(shù)名:unsigned int ADC_AvrDataGet(unsigned int *AD_data)/! 函數(shù)說明:獲取平均值*/unsigned int ADC_AvrDataGet(unsigned int *AD_data)xdata unsigned int ucAD_avragy,k;xdata unsigned int *uiAD_

16、data = AD_data;xdata unsigned char i,j;xdata unsigned int AD_Array10;for(i=0;i<10;i+)AD_Arrayi = AD_datai;for(i=0;i<10;i+)for(j=0;j<10-i;j+)if(AD_Arrayj>AD_Arrayj+1)k = AD_Arrayj;AD_Arrayj = AD_Arrayj+1;AD_Arrayj+1 = k; ucAD_avragy = AD_Array3 + AD_Array4 + AD_Array5; return ucAD_avragy/3;/*/! 函數(shù)名:void ADC0_ISR (void) interrupt 10/! 函數(shù)說明:ADC中斷函數(shù)*/*void ADC0_ISR (void) interrup

溫馨提示

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

評論

0/150

提交評論