Arduino 使用人体红外感应模块 HC-SR501

0.52字数 779阅读 6650

通过这篇文章,可以了解到以下内容:

  • HC-SR501 传感器的基本信息及接线方法
  • HC-SR501 跳线选择的两种时间模式
  • HC-SR501 简单功能实验

HC-SR501 传感器的基本信息及接线方法

HC-SR501 是一款基于热释电效应的人体热释运动传感器,能检测到人体或者动物上发出的红外线。这个传感器模块可以通过两个旋钮调节检测 3 ~ 7 米的范围,5秒至5分钟的延迟时间,还可以通过跳线来选择单次触发以及重复触发模式

HC-SR501 针脚以及控制

HC-SR501 针脚以及调节的细节参考下表,资料来源于 henrysbench.capnfatz.com,由本文作者翻译。

HC-SR501-Motion-Detector-Pin-Outs_zh.png
针脚以及控制 功能
时间延迟调节 用于调节在检测到移动后,维持高电平输出的时间长短,可以调节范围 5秒 ~ 5分钟
感应距离调节 用于调节检测范围,可调节范围 3米 ~ 7米
检测模式条件 可选择单次检测模式和连续检测模式
GND 接地针脚
VCC 接电源针脚
输出针脚 没有检测到移动为低电平,检测到移动输出高电平

时间延迟、距离调节方法

时间延迟调节
将菲涅尔透镜朝上,左边旋钮调节时间延迟,顺时针方向增加延迟时间,逆时针方向减少延迟时间。

HC-SR501-Time-Delay-Adjustment.png

距离调节
将菲涅尔透镜朝上,右边旋钮调节感应距离长短,顺时针方向减少距离,逆时针方向增加距离。

HC-SR501-Sensitivity-Adjust.png

检测模式跳线调节

HC-SR501-Trigger-Mode-Selection.png

如上图,旋钮旁边三针脚为检测模式选择跳线,将跳线帽插在如图上方两针脚,即为单次检测模式,下方两针脚为连续检测模式。

单次检测模式
传感器检测到移动,输出高电平后,延迟时间段一结束,输出自动从高电平变成低电平。
连续检测模式
传感器检测到移动,输出高电平后,如果人体继续在检测范围内移动,传感器一直保持高电平,知道人离开后才延迟将高电平变为低电平。
区别
两种检测模式的区别,就在检测移动触发后,人体若继续移动,是否持续输出高电平。

HC-SR501 简单功能实验

接下来,我们将尝试完成一个简单的实验来使用这个传感器。
首先我们需要以下原件:

名称 数量
Arduino UNO 1
HC-SR501 1
导线 若干

然后,将 Arduino 与 传感器按如下图连接:

HC-SR501-Arduino-Tutorial-Hook-Up.png

接下来,将以下程序编译上传到 Arduino 上。

int ledPin = 13;
int pirPin = 7;

int pirValue;
int sec = 0;

void setup()
{
    pinMode(ledPin, OUTPUT);
    pinMode(pirPin, INPUT);

    digitalWrite(ledPin, LOW);
    Serial.begin(9600);
}

void loop()
{
    pirValue = digitalRead(pirPin);
    digitalWrite(ledPin, pirValue);
        // 以下注释可以观察传感器输出状态
    // sec += 1;
    // Serial.print("Second: ");
    // Serial.print(sec);
    // Serial.print("PIR value: ");
    // Serial.print(pirValue);
    // Serial.print('\n');
    // delay(1000);
}

完成以上步骤后,将 Arduino 通电,如果一切正常,那么在传感器前移动时,Arduino 上的 LED 等会亮,然后可以通过更改跳线接法体验不同检测模式的区别。

小结

这篇文章我们了解了 HC-SR501 人体移动感应传感器的用法及调节接线方法,然后分析并了解了两种不同的检测模式的区别,最后完成了一个小实验体验使用人体移动感应传感器的功能。

参考资料

Arduino HC-SR501 Motion Sensor Tutorial
完整版HC-SR501人体感应模块

推荐阅读更多精彩内容