每个疯狂科学家的实验室,或者青少年的密室都需要先进的安保措施,以防止流氓特工或小伙伴的入侵。如果您正好是这种情况,应该考虑购买被动红外 (PIR) 传感器。PIR传感器可以让您检测到是否有人在未经允许的情况下进入您的房间。
虽然它看起来像是间谍电影中的东西,但您可能每天都在接触PIR传感器。这种传感器与大多数现代安全系统、自动灯开关、车库门开启器和类似应用中的传感器相同,在这些应用中,某些电气设备只有在有人在场的情况下才需要操作。
PIR运动传感器如何工作? 如果您不知道,所有温度高于绝对零度 (0 开尔文 / -273.15 °C) 的物体都会以红外线辐射的形式发出热能,包括人体。物体越热,它发出的辐射就越多。
PIR传感器专门设计用于检测这种红外辐射。它主要由两个部分组成:热释电传感器和称为菲涅耳透镜的特殊透镜,它将红外信号聚焦到热释电传感器上。
热释电传感器(Pyroelectric Sensor)实际上有两个矩形槽,由允许红外辐射通过的材料制成。在这些之后,是两个独立的红外传感器电极,一个负责产生正输出,另一个负责产生负输出。原因是我们正在寻找IR值而不是环境IR值的变化。两个电极连接起来,使它们相互抵消。如果看到的红外辐射一半比另一半多或少,则输出将摆动高或低。
当传感器空闲时,即传感器周围没有运动;两个插槽都检测到相同数量的红外辐射,从而产生零输出信号。
但是当像人或动物这样温暖的身体经过时;它首先拦截PIR传感器的一半,这会导致两半之间的正差分变化。当温暖的身体离开感应区域时,会发生相反的情况,从而传感器产生负微分变化。相应的信号脉冲导致传感器将其输出引脚设置为高电平。
HC-SR501PIR运动探测器 对于大多数需要检测人员何时离开或进入该区域或已接近的Arduino项目,HC-SR501 PIR传感器是一个不错的选择。它们功耗低、成本低、坚固耐用、镜头范围广、易于连接,在爱好者中非常受欢迎。
HC-SR501 PIR传感器具有三个输出引脚VCC、输出和接地,如下图所示。它有一个内置的稳压器,因此它可以由4.5到12 伏的任何直流电压供电,通常使用5V。除此之外,PIR还有几个选项。让我们检查一下。
板上有两个电位器来调整几个参数: ● 灵敏度 - 设置可以检测到运动的最大距离。它的范围从3米到大约7米。您房间的拓扑结构会影响您实现的实际范围。 ● 时间 - 设置检测后输出保持高电平的时间。最短为3秒,最长为300秒或5分钟。
最后,电路板有一个跳线(在某些型号上,跳线没有焊接)。它有两个设置: ● H - 这是保持/重复/重新触发在此位置,只要HC-SR501继续检测到运动,它就会继续输出高电平信号。
● L - 这是间歇或无重复/非重新触发在此位置,输出将在TIME电位器调整设置的时间段内保持高电平。
使HC-SR501 PIR传感器更加通用 HC-SR501电路板有两个附加组件的焊盘。这些通常被标记为“RT”和“RL”。请注意,在某些板上,标签可能被组件相对一侧的“圆顶”透镜覆盖。
● RT - 这适用于热敏电阻或热敏电阻。加上这一点,HC-SR501 可以在极端温度下使用,它也在一定程度上提高了探测器的准确度。 ● RL - 此连接用于光敏电阻 (LDR) 或光敏电阻。通过添加此组件,HC-SR501将仅在黑暗中运行,这是运动敏感照明系统的常见应用。
附加组件可以直接焊接到电路板上或使用电线和连接器扩展到远程位置。
HC-SR501 PIR传感器引脚 HC-SR501有一个3针连接器,可将其与外界连接。连接如下:
VCC 是HC-SR501 PIR传感器的电源,我们连接Arduino的5V引脚。 OUT 引脚为3.3V TTL逻辑输出。 LOW 表示未检测到运动,HIGH表示已检测到一些运动。 GND 连接到Arduino的GND。
将PIR传感器用作独立单元 HC-SR501 PIR传感器非常受欢迎的原因之一是HC-SR501是一款非常通用的传感器,其功能非常强大。通过将其连接到Arduino等微控制器,您可以进一步扩展其多功能性。对于我们的第一个实验,我们将单独使用HC-SR501来说明它本身的用途。
这个实验的接线非常简单。电池跨接在传感器的VCC和GND上,一个小的红色LED通过220Ω限流电阻连接到输出引脚。
现在,当PIR检测到运动时,输出引脚将变为高电平并点亮LED。
请注意,在接通电路电源后,您需要等待30-60秒,让PIR适应房间内的红外能量。在此期间,LED可能会闪烁一点。等到LED熄灭,然后在它前面移动,挥手等,会看到LED亮起!
将PIR传感器连接到Arduino UNO开发板 现在我们已经完全了解了PIR传感器的工作原理,我们可以开始将它连接到Arduino!
将PIR传感器连接到微控制器非常简单。PIR充当数字输出,因此您需要做的就是监听输出引脚翻转为高电平(检测到运动)或低电平(未检测到)。用5V为PIR供电并将地线连接到Arudino的GND。然后将输出连接到数字引脚#2。
您需要将HC-SR501上的跳线设置为H(重新触发)位置才能正常工作。您还需要将TIME设置为至少3秒,将TIME电位器逆时针旋转到底。将灵敏度设置在您喜欢的任何位置,如果您不确定,请将其设置为中点。
Arduino代码 代码非常简单,基本上只是跟踪引脚#2的输入是高电平还是低电平。 - 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的应用程序之前要考虑的事项 与大多数PIR传感器一样,HC-SR501需要一些时间来适应房间内的红外能量。当传感器首次通电时,这需要30到60秒。
此外,传感器在读取后有大约5或6秒的复位时间。在此期间,它不会检测到任何运动。在设计基于HC-SR501的系统时,您需要考虑这些延迟时间。 |