首页 避障机器人红外测距模块设计与调试

避障机器人红外测距模块设计与调试

举报
开通vip

避障机器人红外测距模块设计与调试避障机器人红外测距模块设计与调试一、实训目的1、了解模数转换器的基本功能;2、了解红外测距模块的基本功能及技术规格;3、掌握红外传感器工作原理。二、实训设备1硬件:HOST机一台、基于机器人项目驱动的嵌入式教学实训平台一套;2软件:SiliconlabIDE开发环境、调试器。三、实训原理红外距离感应模块是专为机器人设计的测障传感器,如图所示。它通过发射红外线并测量红外线被反射的强度来输出反映和物体距离的电压信号,有效距离10〜80厘米。红外测距传感器红外测距功能编号名称/功能1VCC电源线2GND地线...

避障机器人红外测距模块设计与调试
避障机器人红外测距模块设计与调试一、实训目的1、了解模数转换器的基本功能;2、了解红外测距模块的基本功能及技术规格;3、掌握红外传感器工作原理。二、实训设备1硬件:HOST机一台、基于机器人项目驱动的嵌入式教学实训平台一套;2软件:SiliconlabIDE开发环境、调试器。三、实训原理红外距离感应模块是专为机器人设计的测障传感器,如图所示。它通过发射红外线并测量红外线被反射的强度来输出反映和物体距离的电压信号,有效距离10〜80厘米。红外测距传感器红外测距功能编号名称/功能1VCC电源线2GND地线3Vo输出信号线4发射管5接收管红外传感器基于三角测量原理。红外发射器按照一定的角度发射红外光束,当遇到物体以后,光束会反射回来,如图所示。反射回来的红外光线被CCD检测器检测到以后,会获得一个偏移值L,禾U用三角关系,在知道了发射角度a,偏移距L,中心矩X,以及滤镜的焦距f以后,传感器到物体的距离D就可以通过几何关系计算出来了。OCD检测器III?IiILIX红外线发时器四、实训步骤1正确连接pc机、调试器和嵌入式教学实训平台,连接红外测距模块;2、打开嵌入式教学实训平台电源;3、打开工程,编译、链接、进入调试、运行程序,观察led屏上显示的测量值,移动机器人,观察led屏上测量值的变化(思考测量值的变化的原理)4、测量传感器的输出特性曲线。在实验中需要中的函数及功能说明函数名:unsignedcharGetIR_Distance(unsignedcharchannle)函数说明:获取红外传感器感测距离函数名:voidADC_PortInit()函数说明:ADC引脚初始化函数名:voidADC_Init()函数说明:ADC初始化函数名:unsignedcharADC_DistanceGet(unsignedcharAD_port)函数说明:获取AD_port端口红外传感器的值函数名:voidADC_ConvertStart()函数说明:AD转换启动函数名:voidAD_PortSelection(AD_port)函数说明:AD转换端口配置函数名:unsignedintADC_AvrDataGet(unsignedint*AD_data)函数说明:获取平均值函数名:doubleSensorDistanceProcess(doublex)函数说明:ADC值距离转换#include"Sensor_AD.h"#defineAD_NUM10/*************************************************************//!函数名:unsignedcharGetIR_Distance(unsignedcharchannle)//!函数说明:获取红外传感器感测距离*************************************************************/unsignedcharGetIR_Distance(unsignedcharchannle){xdataunsignedintucIRDisValue=0;if(channle<0||channle>10){return0;}ucIRDisValue=ADC_DistanceGet(channle);ucIRDisValue=((int)SensorDistanceProcess(ucIRDisValue));if(ucIRDisValue>255)ucIRDisValue=255;return(char)ucIRDisValue;unsignedintGetIRDistance(unsignedcharchannle)xdataunsignedintucIRDisValue=0;if(channle<0||channle>10){return0;}ucIRDisValue=ADC_DistanceGet(channle);returnucIRDisValue;}/*************************************************************//!函数名:unsignedcharGetIRCol(unsignedcharAD_Point)//!函数说明:获取灰度传感器感测灰度值***********************************************************unsignedintGetIRCol(unsignedcharad_channle){xdataunsignedintucGreyValue;if(ad_channle<0||ad_channle>9)return0;}ucGreyValue=ADC_DistanceGet(ad_channle);return(ucGreyValue);}/************************************************************//!函数名:voidADC_PortInit()//!函数说明:ADC引脚初始化//!//!引脚图://!//!//!//!//!//!//!//!//!//!//!//!//!引脚端口AMX0P012345678DDDDDDDDDAAAAAAAAA701234567122222222PPPPPPPPP789ABCDEF000*************************************************************/voidADC_PortInit()unsignedcharSFRPAGE_save=SFRPAGE;SFRPAGE=CONFIG_PAGE;//当有语音的时候,P1口不能ADP1MDIN&=~0x80;P1SKIP|=0x80;P2MDIN=0x00;P2SKIP=0xFF;//P3MDIN&=~0x01;//P3SKIP|=0x01;初始化//P1.7模拟输入//交叉开关跳过模拟引脚//P2模拟输入//交叉开关跳过模拟引脚//P3.0模拟输入//交叉开关跳过模拟引脚//交叉开关使能XBR1=0x40;SFRPAGE=SFRPAGE_save;}/**i++;//!函数名:voidADC_Init()//!函数说明:ADC初始化*************************************************************/voidADC_Init(){unsignedcharSFRPAGE_save=SFRPAGE;ADC_PortInit();SFRPAGE=CONFIG_PAGE;ADC0CN=0xC0;//跟踪模式,开启转换ADC0CF=(SYSCLOCK/3000000-1)<<3;ADC0CF&=~0x04;//右端对齐EIE1&=~0x08;//禁止ADC中断//AD0EN=1;REF0CN=0x08;SFRPAGE=SFRPAGE_save;}/*************************************************************//!函数名:unsignedcharADC_DistanceGet(unsignedcharAD_port)//!函数说明:获取AD_port端口红外传感器的值*************************************************************/unsignedintADC_DistanceGet(unsignedcharAD_port){xdataunsignedcharAD_counter=0;xdataunsignedchari=0;xdataunsignedcharadc0_h,adc0_l;xdataunsignedintad_test;xdataunsignedintADC_DataStore[10]={0,0,0,0,0,0,0,0,0,0};if(AD_port>0x0A){return0xFF;}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_DataStore[AD_counter]=((unsignedint)(adc0_h)<<8)+(unsignedint)adc0_l;//ADC_DataStore[AD_counter]=(unsignedint)(adc0_l);AD0INT=0;ADC_ConvertStart();}//ADC_FlagClear();//ADC_DataStore[0]=ADC_AvrDataGet(ADC_DataStore);//returnSensorData[AD_port][0];ad_test=ADC_AvrDataGet(ADC_DataStore);//ad_test++;//return(ADC_AvrDataGet(ADC_DataStore));return(ad_test);}/*************************************************************//!函数名:voidADC_ConvertStart()//!函数说明:AD转换启动*************************************************************/voidADC_ConvertStart(){unsignedcharSFRPAGE_save=SFRPAGE;SFRPAGE=CONFIG_PAGE;AD0EN=1;//EA=0;AD0INT=0;AD0BUSY=1;SFRPAGE=SFRPAGE_save;/}*************************************************************//!函数名:voidAD_PortSelection(AD_port)//!函数说明:AD转换端口配置*************************************************************/voidAD_PortSelection(unsignedcharport_unm){unsignedcharSFRPAGE_save=SFRPAGE;SFRPAGE=CONFIG_PAGE;switch(port_unm)0x07;break;0x08;break;0x09;break;0x0A;break;0x0B;break;0x0C;break;0x0D;break;0x0E;break;0x0F;break;{case0x01:AMX0Pcase0x02:AMX0Pcase0x0A:AMX0P=0x10;break;case0x03:AMX0Pcase0x04:AMX0Pcase0x05:AMX0Pcase0x06:AMX0Pcase0x07:AMX0Pcase0x08:AMX0Pcase0x09:AMX0Pdefault:break;}AMX0N=0x1F;//负输入端选择VDDSFRPAGE=SFRPAGE_save;}/*************************************************************//!函数名:unsignedintADC_AvrDataGet(unsignedint*AD_data)//!函数说明:获取平均值*************************************************************/unsignedintADC_AvrDataGet(unsignedint*AD_data){xdataunsignedintucAD_avragy,k;xdataunsignedint*uiAD_data=AD_data;xdataunsignedchari,j;xdataunsignedintAD_Array[10];for(i=0;i<10;i++){AD_Array[i]=AD_data[i];for(i=0;i<10;i++)for(j=0;j<10-i;j++){if(AD_Array[j]>AD_Array[j+1])k=AD_Array[j];AD_Array[j]=AD_Array[j+1];AD_Array[j+1]=k;}}Array[5];ucAD_avragy=AD_Array[3]+AD_Array[4]+ADreturnucAD_avragy/3;}/*************************************************************//!函数名:voidADC0_ISR(void)interrupt10//!函数说明:ADC中断函数*************************************************************//*voidADC0_ISR(void)interrupt10}*//*************************************************************//!函数名:doubleSensorDistanceProcess(doublex//!函数说明:ADC值距离转换*************************************************************/doubleSensorDistanceProcess(doublex)xdatadoubleresult;staticdoublefinal_result;result=pow(x,-1.320888871);final_result=result*59599.430602019;returnfinal_result;}/*************************************************************//!文件结束
本文档为【避障机器人红外测距模块设计与调试】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
陨辰
暂无简介~
格式:doc
大小:73KB
软件:Word
页数:0
分类:
上传时间:2021-10-16
浏览量:3