利用红外发射接收传感器进行距离检测.docx
- 文档编号:2796292
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:22
- 大小:272.71KB
利用红外发射接收传感器进行距离检测.docx
《利用红外发射接收传感器进行距离检测.docx》由会员分享,可在线阅读,更多相关《利用红外发射接收传感器进行距离检测.docx(22页珍藏版)》请在冰豆网上搜索。
利用红外发射接收传感器进行距离检测
利用红外发射接收传感器进行距离检测
一、实验要求
对红外的发射接收作进一步的探讨。
红外可以用来测距离,理解红外测距的基本原理,能够掌握简单的比例控制方法,以及编程。
掌握定时/计数器的使用。
对循迹效果作分析。
二、实验概要
本实验将探讨红外测距的内容。
利用红外检测器的内置电子滤波功能,调节发射红外的载波频率,而检测器对不同频率的信号有不同的“敏感度”,这样,就能大概的知道距离。
1.测试红外的扫描频率。
记录红外发射接收的距离。
2.尾随小车。
让一个小车跟着另一个小车前行。
要将前后距离控制在一定的范围内,若前后距离较大,后面跟随的小车应该加速,跟上去;若距离小于预定值,则减速。
3.跟踪黑色条纹带。
红外测距的另一种形式的应用。
也能让小车实现循迹功能。
三、实验内容
红外技术发展到现在,已经为大家所熟知,这种技术已经在现代科技、国防和工农业等领域获得了广泛的应用。
红外传感系统是用红外线为介质的测量系统,按照功能能够分成五类:
(1)辐射计,用于辐射和光谱测量;
(2)搜索和跟踪系统,用于搜索和跟踪红外目标,确定其空间位置并对它的运动进行跟踪;(3)热成像系统,可产生整个目标红外辐射的分布图像;(4)红外测距和通信系统;(5)混合系统,是指以上各类系统中的两个或者多个的组合。
红外传感器根据探测机理可分成为:
光子探测器(基于光电效应)和热探测器(基于热效应)。
本次试验将尝试用红外来测距。
1.测试扫描频率
下图9-1显示的是一个特殊品牌的红外线探测器数据表(PanasonicPNA4602M)的部分摘录。
这个摘录显示了红外线探测器在接收到频率不同于38.5kHz时红外线信号时其敏感程度随频率变化的曲线图。
例如,当你发送频率为40kHz的信号给探测器时,它的灵敏度是频率为38.5kHz的50%。
如果红外LED发送频率为42kHz,探测器的灵敏度是频率为38.5kHz的20%左右。
尤其是对于让探测器的灵敏度很底的频率,为了让探测器探测到红外线的反射,物体必须离探测器更近让反射的红外光更强。
另一个角度来考虑就是最高灵敏度的频率可以探测最远距离的物体,较低灵敏度的频率可以探测距离较近的物体。
这使得距离探测就简单了。
选择5个不同频率,然后从最高灵敏度到最低灵敏度进行测试。
首先尝试最高灵敏度频率,如果物体被探测到了,就让仅次于它的高灵敏度频率测试,观察是否可以探测到。
依赖于探测器不能再检测到物体的红外线频率,我们就可以推断物体的大概位置。
图9-1滤波器灵敏度由载波频率决定
图9-2探测区域
例程:
TestLeftFrequencySweep.c
例程要做两件事情:
首先,测试IRLED/探测器(分别与P1_3和P1_2连接)以确认它们的距离探测功能正常;然后,完成图9-2所示的频率扫描。
#include
#include
#defineLeftIRP1_2//左边红外接受连接到P1_2
#defineLeftLaunchP1_3//左边红外发射连接到P1_3
unsignedinttime;//定时时间值
intleftdistance;//左边的距离
intdistanceLeft,irDetectLeft;
unsignedintfrequency[5]={29370,31230,33050,35700,38460};
voidtimer_init(void)
{
IE=0x82;//开总中断EA,允许定时器0中断ET0
TMOD|=0X01;//定时器0工作在模式1:
16位定时器模式
}
voidFreqOut(unsignedintFreq)
{
time=256-(500000/Freq);//根据频率计算初值
TH0=0XFF;//高八位设FF
TL0=time;//低八位根据公式计算
TR0=1;//启动定时器
delay_nus(800);//延时
TR0=0;//停止定时器
}
voidTimer0_Interrupt(void)interrupt1//定时器中断
{
LeftLaunch=~LeftLaunch;//取反
TH0=0xFF;//重新设值
TL0=time;
}
voidGet_lr_Distances()
{
unsignedintcount;
leftdistance=0;//初始化左边的距离
for(count=0;count<5;count++)
{
FreqOut(frequency[count]);//发射频率
irDetectLeft=LeftIR;
printf("irDetectLeft=%d",irDetectLeft);
if(irDetectLeft==1)
leftdistance++;
}
}
intmain(void)
{
uart_Init();
timer_init();
printf("ProgamRunning!
\n");
printf("FREQENCYETECTED\n");
while
(1)
{
Get_lr_Distances();
printf("distanceLeft=%d\n",leftdistance);
printf("-----------------\n");
delay_nms(1000);
}
}
Tips:
TestLeftFrequencySweep.c是如何工作的?
还记得“数组”吗?
这里你将用整数型数组存储五个频率值:
unsignedintfrequency[5]={29370,31230,33050,35700,38460};
uart_Init();
串口的初始化,这个函数已多次用到。
timer_init();
定时器的初始化。
此例程使定时器0工作在模式1,16位定时模式,不具备自动重载功能。
注意,timer_init()并没有开启定时器。
Get_lr_Distances();
机器人要发射某一频率,该给定时器设定多大的值呢?
频率为f时,周期T=1/f,高低电平持续时间为t=1/(2T),根据公式TC=2n-CC可算定时器初值time:
但实际上,time值并未占满低八位,所以你可以这样简化计算:
高八位设0xFF,低八位根据n=8时计算,即函数FreqOut(frequency[count])中用的time=256-(500000/Freq)来计算。
当低八位计满后,整个寄存器将溢出。
根据图6-2所示的描述原理,如果检测结果irDetectLeft为1,即没有发现物体,则距离leftdistance加1。
循环描述,当5个频率描完后,可根据leftdistance的值来判断物体离机器人的大致距离。
运行程序时,在机器人前端放一白纸,前后移动白纸,调试终端将会显示白纸所在的区域,如图9-3所示。
图9-3距离探测输出实例
程序通过计算“1”出现的数量,就可以确定目标在哪个区域。
紧记,这种距离测量方法是相对的而非绝对地精确。
然而,它为机器人跟随,跟踪和其他行为提供了一个足够好的探测距离的能力。
●输入、保存并运行程序TestLeftFrequencySweep.c
●用一张纸或卡片面对IRLED/探测器做距离探测
●改变纸片与机器人距离,记录使distanceLeft变化的位置
该你了――测试右边的IRLED/探测器
●修改程序TestLeftFrequencySweep.c,对右边的IRLED/探测器做距离探测测试
●运行该程序,检验这对IRLED/探测器能否测量同样的距离。
你可参考教材配套光盘对应例程中的注释部分。
例程:
DisplayBothDistances.c
●修改程序TestLeftFrequencySweep.c,添加右边IRLED/探测器部分
●输入、保存并运行程序DisplayBothDistances.c
●用纸片重复对每个IRLED进行距离探测,然后对两个IRLED同时进行测试
该你了――更多的距离测试
●尝试测量不同物体的距离,弄清物体的颜色和(或)材质是否会造成距离测量的差异
2.尾随小车
让一个宝贝车跟随另一个宝贝车行走,跟随的宝贝车,也叫尾随车,必须知道距离引导车有多远。
如果尾随车落在后面,它必须能察觉并加速。
如果尾随车距离引导车太近,它也要能察觉并减速。
如果当前距离正好合适,它会等待直到测量距离变远或变近。
距离仅仅是由机器人和其它自动化机器需要控制一种数值之一。
当一个机器被设计用来自动维持某一数值,比如距离、压力或液位等,它一般都包含一个控制系统。
这些系统有时由传感器和阀门组成,或者由传感器和电机组成。
在宝贝车里面,由传感器和连续旋转电机组成。
还必须有某些处理器可以接受传感器的测量结果并把它们转化为机械运动。
必须对处理器编程来基于传感器的输入做出决定,从而控制机械输出。
闭环控制是一种常用的维持控制目标数据的方法,它很好地帮助宝贝车保持与一个物体之间的距离。
闭环控制算法类型多种多样,最常用的有滞后、比例、积分以及微分控制。
所有这些控制方法都将在《过程控制》教材中详细介绍。
事实上,图9-4所示的方框图描述了宝贝车用到的比例控制过程的步骤,即宝贝车用右边的IRLED/探测器探测距离并用右边的伺服电机调节机器人之间的位置以维持适当的距离。
图9-4右边的伺服电机及IRLED/探测器的比例控制方框图
让我们仔细观察一下图9-4的数字,学习一下比例控制是如何工作的。
这个特殊的例子是右边的IRLED/探测器和右边的伺服电机的比例控制方框图。
设定位置为2,说明我们想宝贝车维持它和任何它探测到的物体之间的距离是2。
测量的距离为4,距离太远。
误差是设定值减去测量值的差,即2-4=-2,这在圆圈的左方以符号的形式指出,这个圆圈叫求和点。
接着,误差传入一个操作框。
这个操作框显示,误差将乘以一个比例常数Kp。
Kp的值为70。
该操作框的输出显示为–2×70=–140,这叫输出校正。
这个输出校正结果输入到另一个求和点,这时它与电机的零点脉冲宽度1500相加。
相加的结果是1360,这个脉宽可以让电机大约以3/4全速顺时针旋转。
这让宝贝车右轮向前、朝着物体的方向旋转。
第二次经过闭环,测量距离可能发生变化,但是没有问题,因为不管测量距离如何变,这个控制环路将会计算出一个数值,让电机旋转来纠正任何误差。
修正值与误差总是成比例关系,该误差就是设定位置和测量位置的关系的偏差。
控制环都有一组方程来主导系统行为。
图9-4中的方框图是对该组方程的可视化描述方法。
下面是从方框图中归纳出来的方程关系及结果:
Error=Rightdistancesetpoint–Measuredrightdistance
=2–4
Outputadjus=error·Kp
=–2·70
=–140
Rightservooutput=Outputadjust+Centerpulsewidth
=–140+1500
=1360
通过一些置换,上面三个等式可被简化为一个,提供你相同的结果:
Rightservooutput=(Rightdistancesetpoint–Measuredrigh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 红外 发射 接收 传感器 进行 距离 检测
![提示](https://static.bdocx.com/images/bang_tan.gif)