格物致知、诚意正心
每个疯狂的科学家实验室或青少年的秘密室都需要高级保护,以防止流氓特工或兄弟姐妹入侵。如果您是其中之一,则可能应该考虑为您购买被动红外(PIR)传感器。通过PIR传感器,您可以检测不应该有人进入房间的时间。
尽管看起来好像是间谍电影里的东西,但您可能每天都在使用PIR传感器。该传感器与大多数现代安全系统,自动照明开关,车库门开启器以及类似的应用中的传感器相同,在这些应用中,只有在有人在场的情况下才需要操作某些电气设备。
如果您不知道,所有温度高于绝对零温度(0开尔文/ -273.15°C)的物体都会以红外线辐射的形式释放热能,包括人体。一个物体越热,它发出的辐射就越多。
PIR传感器经过专门设计,可检测这种水平的红外辐射。它基本上由两个主要部分组成:一个热释电传感器和一个称为菲涅耳透镜的特殊透镜,该透镜将红外信号聚焦到热释电传感器上。
热释电传感器实际上具有两个矩形狭槽,该狭槽由允许红外辐射通过的材料制成。在它们的后面是两个单独的红外传感器电极,一个负责产生正输出,另一个负责负输出。这样做的原因是我们正在寻找IR级别的变化,而不是环境IR级别的变化。两个电极连接在一起,以便彼此抵消。如果一半的红外辐射比另一半多或少,则输出将摆高或摆低。
当传感器处于空闲状态时,即传感器周围没有运动;两个插槽检测到的红外辐射量相同,从而导致输出信号为零。
但是当像人或动物一样温暖的身体经过时; 它首先截取了PIR传感器的一半,这导致了两半之间的正差分变化。当温暖的身体离开感应区域时,情况会发生相反的变化,从而使传感器产生负的差分变化。相应的信号脉冲导致传感器将其输出引脚设置为高电平。
对于我们大多数需要检测人员何时离开或进入该区域或接近该区域的Arduino项目,HC-SR501 PIR传感器是一个不错的选择。它们功耗低,成本低,坚固耐用,具有宽广的镜头范围,易于连接并且在业余爱好者中疯狂地流行。
HC-SR501 PIR传感器具有三个输出引脚VCC,输出和接地,如下图所示。它具有内置的稳压器,因此可以通过4.5至12伏的任何DC电压(通常使用5V)供电。除此之外,PIR还有两个选项。让我们检查一下。
板上有两个电位器,可调节两个参数:
最后,板上有一个跳线(某些型号的跳线未焊接)。它有两个设置:
HC-SR501电路板具有用于两个其他组件的焊盘。这些通常被标记为“ RT”和“ RL”。请注意,在某些板上,标签可能被与组件相对的一侧的“圆顶”透镜覆盖。
可以将其他组件直接焊接到板上,也可以使用电线和连接器将其扩展到远程位置。
HC-SR501具有一个3针连接器,可将其与外界连接。连接如下:
VCC 是HC-SR501 PIR传感器的电源,我们连接了Arduino上的5V引脚。
输出引脚为3.3V TTL逻辑输出。LOW表示未检测到运动,HIGH表示已检测到某些运动。
地线 应该连接到Arduino的地面。
HC-SR501 PIR传感器之所以广受欢迎的原因之一是,HC-SR501是一种用途非常广泛的传感器,其功能十分强大。通过将其连接到Arduino等某些微控制器,您可以进一步扩展其多功能性。对于我们的第一个实验,我们将单独使用HC-SR501来说明它本身是多么有用。
此实验的接线非常简单。电池连接在传感器的VCC和GND之间,一个小的红色LED通过220Ω限流电阻连接到输出引脚。就是这样!
现在,当PIR检测到运动时,输出引脚将变为“高电平”并点亮LED!
请记住,一旦为电路加电,则需要等待30-60秒,以使PIR适应室内的红外能量。在此期间,LED可能会闪烁一点。等到指示灯熄灭后,再挥动手等在指示灯的前面四处走动,以查看指示灯是否亮起!
现在我们已经完全了解了PIR传感器的工作原理,我们可以开始将其连接到Arduino了!
将PIR传感器连接到微控制器确实非常简单。PIR用作数字输出,因此您所需要做的就是监听输出引脚将其翻转为HIGH(检测到运动)或LOW(未检测到)。用5V为PIR供电,并将地线接地。然后将输出连接到数字引脚2。
您需要将HC-SR501上的跳线设置为H(重新触发)位置,以使其正常工作。您还需要将TIME设置为最少3秒钟,然后将TIME电位计逆时针旋转到底。将灵敏度设置为任意位置,如果不确定,将其设置为中点。
这样,您现在就可以上传一些代码并使PIR正常工作了。
代码非常简单,基本上只是跟踪引脚2的输入是HIGH还是LOW。
int ledPin = 13; // choose the pin for the LED int inputPin = 8; // choose the input pin (for PIR sensor) int pirState = LOW; // we start, assuming no motion detected int val = 0; // variable for reading the pin status void setup() { pinMode(ledPin, OUTPUT); // declare LED as output pinMode(inputPin, INPUT); // declare sensor as input Serial.begin(9600); } void loop(){ val = digitalRead(inputPin); // read input value if (val == HIGH) // check if the input is HIGH { digitalWrite(ledPin, HIGH); // turn LED ON if (pirState == LOW) { Serial.println("Motion detected!"); // print on output change pirState = HIGH; } } else { digitalWrite(ledPin, LOW); // turn LED OFF if (pirState == HIGH) { Serial.println("Motion ended!"); // print on output change pirState = LOW; } } }
最后,当检测到运动时,我们将在串行监视器上打印一条消息。
与大多数PIR传感器一样,HC-SR501需要一些时间来适应室内的红外能量。首次启动传感器时,此过程需要30到60秒。
另外,传感器在读取后大约有5或6秒的“重置”时间。在此期间,它将不会检测到任何运动。
在基于HC-SR501设计系统时,您需要考虑这些延迟时间。
您的电子邮箱地址不会被公开。 必填项已用 * 标注
评论 *
显示名称 *
电子邮箱地址 *
网站
在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。