无论是在互动作品中对人或者物体存在性的检测,或者机器人项目中辟障或寻线的实现,红外开关通常都是最简单实用的传感器。红外开关通常由一个红外发射装置和一个红外接装置组成,其工作原理是利用被检测物体对红外光束的遮光或反射,来检测是否有物体存在。根据检测方式的不同,最常用的红外开关有漫反射式、镜反射式和对射式几种。
漫反射红外开关是一种集红外发射器和红外接收器于一体的传感器,当有被检测物体经过时,将光电开关发射器发射的足够量的光线反射到接收器,就能够产生相应的动作。由于受被检测物体对红外线的反射率的影响,虽然漫反射红外开关安装时非常容易,但通常却是感应距离最近的红开关传感器。
镜反射式红外开关虽然也是集发射器与接收器于一体,但光电开关发射器发出的光线经过的是专用的反射镜而不是被检测物体反射回接收器,当被检测物体经过且完全阻断光线时,光电开关就产生了相应的动作。镜反射红外开关在实际使用中的检测距离比漫反射红外开关要远计多,但由于需要多安装一个专用的反射镜,对现场安装环境有一定的要求。
对射式红外开关包含在结构上相互分离且光轴相对放置的红外发射器和红外接收器,发射器发出的光线直接进入接收器。当被检测物体经过发射器和接收器之间且阻断光线时,光电开关就产生了动作。当检测物体是不透明时,对射式红外开关往往是最可靠的检测模式。
如果物体的检测距离在50cm以内,那么下面的这个漫反射红外开关则能够很好地满足要求:
仔细观察传感器不难发现其集成在一起的红外发射管和接收管:
接口则采用与传感器扩展板V4相兼容的三线接口,从上至下依次为地(G,黑色)、电源(V,红色)和信号(S,蓝色):
在配合传感器扩展板使用时,只需要按照正确的线序插上就可以使用了:
电路连接好之后,只要有物体经过红外传感器的作用范围,就可以通过读取Arduino数字I/O上的对应端口,实现相应的检测。
在Arduino中使用的代码如下所示:
int ledPin = 13;
int switchPin = 8;
int value = 0;
void setup() {
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
value = digitalRead(switchPin);
if (HIGH == value) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
实际使用时需要注意的是,当红外开关检测到有物体存在时,从Arduino数字I/O上读出的值为低(LOW),这与传感器的电路设计有关。









Mars · 2009/03/24 at 10:29 AM
厉害啊!
丰富了 丰富了
burn · 2009/03/24 at 5:58 PM
flamingoeda的电子积木越来越丰富了啊!
howie · 2009/03/27 at 11:42 AM
啊哈哈哈,这个是欠我很久的东西了把~~~还有一个~~~支持支持!!
CouldHll’s Blog » Blog Archive » 我的Arduino装备 · 2010/01/07 at 2:55 PM
[...] 红外开关:http://blog.flamingoeda.com/2009/03/24/arduino-%e7%94%b5%e5%ad%90%e7%a7%af%e6%9c%a8-%e7%ba%a2%e5%a4%… Read More [...]
kastu · 2011/01/22 at 9:04 PM
你好, int ledPin = 13;
的意思是接到括展板的数字13口是吗?
为什么我的ARDUINO没反应阿?
Author comment by flamingoeda · 2011/02/18 at 7:24 AM
ledPin是指用的数字13号上的灯做为检查到信号之后的提示,红外开关本身按文章中的说法要接到数字8号:
int switchPin = 8;