红外感应原理知识普及
红外感应原理基础知识包括:红外感应开关原理、去除环境光的干扰、解决感应波动问题、增大感应距离、提升抗干扰能力。本文主围绕着红外线发光二极管,光敏二极管展开解说:
所谓的红外感应开关,只是利用了人眼看不到的红外线来感应物体的,感应开关的核心元器件就是红外反射传感器了。红外反射传感器包括一个红外线发光二极管和一个红外线光敏二极管,它们两个都朝着一个方向,被封装在一个塑料外壳里。使用的时候,红外线发光二极管点亮,发出一道人眼看不见的红外光。如果传感器的前方没有物体,那么这道红外光就以每秒299792458 米的速度(光速)消散在宇宙空间。但如果传感器前方有不透明的物体时,红外光就会被反射回来,照在自己也照在旁边的红外线光敏二极管身上。红外线光敏二极管收到红外光时,其输出引脚的电阻值就会产生变化。判断红外线光敏二极管的阻值变化,就可以感应前方物体,控制电器开关了。
下图主要原理把红外线发光二极管以某一频率进行调制,即让它以一定的频率闪烁。在红外线光敏二极管一端则设计一个电路,让接收端可以筛选出这一频率的红外光源。因为环境里的红外光要么是没有频率的,要么就是有着自己固定的频率。像收音机一样,传感器只要以自己的频率发射,再以自己的频率接收就可以过滤其他频率光源的干扰了,而且由于接收管胶体也对可见光的波段光源进行过滤,所以在室内使用的情况下是没有问题的。
不过,当强光照进室内,感应开关受强光的影响而处在不稳定的状态,自行的开关,或是对反射物体没有反应。家里常用的电视机红外线遥控器也会让感应开关失灵。即使把它放在阴暗的角落也会出现一个讨厌的问题,当反射物体处在某一个临界距离时,感应开关就会不断的开关,继电器的吸合很快,好像一台电报机。这是因为反射物体正好处在了感应区的临界点上,也就是“感应到”和“感应不到”的分界线上,物体微微靠近或离开就会产生开关状态的改变。所以一般现都会通过单片机对光干扰进行软件上的处理,而且电路比用硬件来做简单得多。具体电路如下所示:
对于设计中存在的一些问题:
1. 如何去除环境光的干扰?
与之前的硬件调制解调的方式不同,在使用ADC 功能之后,另一种解决方案会让测试更有效率。那就是使用双重检测的方法,前提条件是单片机可以控制红外发光二极管的开关。首先大家要制作ADC 功能可以读出接在ADC 接口上电压的模拟量,数值从0 到255(十进制)。红外光敏二极管接收的红外光线强时,ADC读出的数值就大,反之就小。我们要做的就是控制红外发光二极管在发光时读一次ADC的数值,然后再让红外发光二极管熄灭,再读一次ADC 的数值。我们先假设没有其他红外光源的干扰,当红外发光二极管熄灭时,红外光敏二极管应该检测不到光源,ADC读出的数值也应该为0;当红外发光二极管点亮,且没有反射物理时,ADC读出的值也应该很小,接近于为0;当有反射物理时,红外光敏二极管检测到光源,ADC 读出的数值会变大。如果存在其他光源的干扰,那么当红外发光二极管熄灭时也会读到较大的数值,双重检测读出的数值的差距越大,表示干扰光源越弱,反之则越强。我们通过这种双重检测就可以判断接收到的红外光是不是发射端发出来的了,两次检测的数值之差就是我们需要的最终数值。最终数值将参与下面的算法处理,也是我们判断、处理的关键数据。单片机需要控制红外发光二极管高速开关,以便更快的采集数据。
最终数值 = 红外发光二极管点亮时ADC读出的数值 - 红外发光二极管熄灭时ADC读出的数值
2. 如何解决临界点的感应波动问题?
微微向前一点就触发,微微向后一点就关断,这是临界点问题的困扰。问题的根源在于触发的临界点和
留出较大的活动区域。如果是做自动寻迹小车的传感器,则可以用较小的活动区域,甚至改用单临界点
3. 如何增加感应的成功率和可靠性?
“最终数值”处理和双临界点设计都可以增加系统的稳定性,可以如果检测出错、或者出现误差,在多
次数据采集中出现几次失败和误差是很正常的事情,但如果这些误差左右了开关的状态,给采集到的数据把关。一旦出现错误就放弃当前的数据,重新采集,这种设计就是一种冗余。所以设计了一段循环检测语句,连续20 次检测和判断采集到的数据,如果20 次中有1次误差就马上放弃当前的所有数据,重新检测。连续20 次检测已经算是很稳定的了,当然你也可以为了更稳定而改用连续50 次、100 次的检测,但是系统的反应速度会慢,灵敏度下降。灵敏度和稳定度之间的矛盾是刚性的,在实际测试中找到适合目标系统的检测次数就可以了。“最终数值”、双临界点和20 次连续检测听上去好像是很复杂的事情,可是在程序里面却是很简单的几条语句。设计的重点不在于程序的复杂性,而是整个系统的设计思路。下面列出一段关键程序部分与大家分享,这个简单的程序包含了以上讲到的3种抗干扰设计。
RAM_H = Read_ADC; //读出LED亮时ADC端口的值
RAM_L = Read_ADC; //读出LED 灭时ADC端口的值
RAM_H = RAM_H - RAM_L; //取2次检测值之差,避开环境光干扰
if(RAM_H > 0x06)
{ //开启时的距离(应该小于关闭时的距离)
CON++; //计数加1
CON2 = 0;
if(CON > 20)
{ //连续20 次检测,以避开干扰
CON = 0;
LED_Y = 0; //LED 指示灯点亮
}
}
if(RAM_H < 0x03)
{ //关闭时的距离
CON2++;
CON = 0;
if(CON2 > 20)
{
CON2 = 0;
LED_Y = 1; //LED 指示灯熄灭
}
}
“最终数值”、双临界点和20次连续检测的程序部分
4. 如何增大感应距离?
基于单片机的红外传感器的感应距离和单片机的ADC 精度、双临界点数值、红外发光二极管的功率、红外光敏二极管的灵敏度和反射物理的反光效果有关,一般的感应距离不会超过20CM。不过对于开关感应开关的设计已经是足够了。要想增加感应距离可以改进以下几方面。不过更远的感应距离反而会让系统产生许多不确定因素,效果反而不佳。具体的一些设计要求如下:
1、 提高ADC精度,例如将8位ADC换成10 位或12 位ADC。
2、 将双临界点的数值设置得更小。
3、 用LED驱动电路提高红外发光二极管的功率(即提高亮度),或是多个红外发射管来增加功率。
4、 为红外光敏二极管一端加装信号放大电路,或是增加透镜来增加感光面积来提高灵敏度。
5、 尽量使用反光效果好的反射物体(如白纸、镜面)
5. 如何进一步提升搞干扰能力?
最后一个问题是同频环境光的干扰,所谓的同频干扰,就是假设红外感应开关的周围正好存在这么一个红外光源,它也按一定的频率点亮和熄灭,而已这一频率正好和红外感应开关中红外发光二极管的亮、灭频率一致,且周期相同。这种巧合并不只是彩票头奖的幸运观众才能遇见的,当多个红外感应开关在较近的距离内同时使用,问题就自然会出现。如果它们之间的距离不能改变,那就只有用跳频的方法来解决了。跳频技术在移动电话和无绳电话机上已经成为必备的功能,为了防止窃听或当某一频道被占用时,电话机会自动切换到别的频道,让通信更稳定、可靠。对于红外感应开关来说,跳频并没有那么复杂,只要在程序中不断改变红外发光二极管的亮、灭时间,用不同的频率去检测,其他干扰光源也以相同频率跳变的机会就少之又少了,再加上前面介绍的20 次连续检测功能,再遇见干扰的可能性几乎为0了。
共有-条评论【我要评论】