HC-SR501人体红外传感器详解(STM32)

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

一、引言

在现代智能控制系统中,人体检测是一项重要的功能。HC - SR501人体红外传感器凭借其成本低、灵敏度高、易于使用等特点,被广泛应用于安防监控、智能照明、自动门控制等领域。本文将详细介绍HC - SR501人体红外传感器的工作原理、硬件连接以及如何基于STM32微控制器对其进行编程控制。

二、HC - SR501人体红外传感器工作原理

2.1 基本原理

HC - SR501基于热释电效应工作。热释电材料在受到红外辐射的热变化时,会产生电极化现象,导致表面电荷的积累和释放,从而产生电信号。人体会发出特定波长(约 10μm)的红外线,当人体在传感器的检测范围内移动时,会引起传感器所在空间的红外辐射发生变化,热释电元件将这种变化转化为电信号,经过内部电路的处理和放大后,输出一个高电平信号。

2.2 模块组成与功能

HC - SR501模块主要由热释电红外传感器、菲涅尔透镜、信号处理电路和调节电位器组成。

  • 菲涅尔透镜:其作用是将人体发出的红外线聚焦到热释电传感器上,同时将检测区域划分为多个明暗相间的区域,当人体在检测区域内移动时,会使传感器接收到的红外信号发生周期性变化,从而提高检测灵敏度。
  • 调节电位器:模块上通常有两个调节电位器,一个用于调节感应延时时间(Delay Time),另一个用于调节感应距离(Sensitivity)。

三、硬件连接

3.1 引脚说明

HC - SR501模块有三个引脚:VCC(电源正极)、GND(电源负极)和OUT(信号输出)。

3.2 与STM32的连接

以STM32F103C8T6为例,将HC - SR501的VCC引脚连接到STM32的3.3V或5V电源引脚,GND引脚连接到STM32的地引脚,OUT引脚连接到STM32的一个GPIO输入引脚(例如PA0)。

四、软件编程(基于STM32 HAL库)

以下是基于STM32 HAL库实现对HC - SR501人体红外传感器进行检测的代码:

#include "stm32f1xx_hal.h"

// 定义HC - SR501传感器连接的GPIO引脚
#define PIR_SENSOR_PIN GPIO_PIN_0
#define PIR_SENSOR_PORT GPIOA

// 初始化GPIO
void GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIOA_CLK_ENABLE();

    // 配置PIR传感器引脚为输入模式
    GPIO_InitStruct.Pin = PIR_SENSOR_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(PIR_SENSOR_PORT, &GPIO_InitStruct);
}

// 主函数
int main(void)
{
    HAL_Init();
    GPIO_Init();

    while (1)
    {
        // 读取PIR传感器的输出状态
        GPIO_PinState pir_state = HAL_GPIO_ReadPin(PIR_SENSOR_PORT, PIR_SENSOR_PIN);

        if (pir_state == GPIO_PIN_SET)
        {
            // 检测到人体活动,可在此添加相应的处理代码
            // 例如点亮LED灯
            // HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
            printf("检测到人体活动!\n");
        }
        else
        {
            // 未检测到人体活动,可在此添加相应的处理代码
            // 例如熄灭LED灯
            // HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
            printf("未检测到人体活动。\n");
        }

        // 适当延时,避免频繁读取
        HAL_Delay(100);
    }
}

五、代码解释

5.1 GPIO初始化

GPIO_Init函数中,首先使能GPIOA的时钟,然后将PA0引脚配置为输入模式,并且不使用上拉或下拉电阻。

5.2 主函数

main函数中,先调用HAL_Init进行HAL库的初始化,再调用GPIO_Init进行GPIO引脚的初始化。然后进入一个无限循环,在循环中不断读取HC - SR501传感器的输出状态。如果检测到高电平(即检测到人体活动),则输出相应的提示信息;如果检测到低电平(即未检测到人体活动),也输出相应的提示信息。为了避免频繁读取传感器状态,使用HAL_Delay函数进行适当的延时。

六、注意事项

6.1 上电初始化时间

HC - SR501模块在上电后需要一定的时间(约 60 - 120 秒)进行初始化,在初始化期间可能会有不稳定的输出,因此在使用前需要等待模块稳定。

6.2 环境干扰

传感器对环境温度、光照等因素比较敏感,在使用过程中应尽量避免阳光直射和高温环境,以减少误触发的可能性。

6.3 调节电位器的使用

通过调节感应延时时间和感应距离的电位器,可以根据实际需求调整传感器的性能。例如,在需要快速响应的场合,可以将感应延时时间调短;在需要检测更远距离的场合,可以将感应距离调大。

七、应用拓展

7.1 智能照明系统

将HC - SR501传感器与LED灯结合使用,当检测到人体活动时,自动点亮LED灯;当人体离开检测区域一段时间后,自动熄灭LED灯,从而实现节能的目的。

7.2 安防监控系统

将传感器安装在需要监控的区域,当检测到人体活动时,触发报警装置或记录相关信息,实现安防监控功能。

八、总结

HC - SR501人体红外传感器是一种简单易用、性能可靠的人体检测设备。通过本文的介绍,你了解了其工作原理、硬件连接和基于STM32的编程实现方法。在实际应用中,你可以根据具体需求对代码进行扩展和优化,以实现更多的功能。

HC-SR501是基于红外线技术的自动控制模块,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。 电气参数 产品型号HC--SR501人体感应模块 工作电压范围直流电压4.5-20V 静态电流<50uA 电平输出高3.3 V /低0V 触发方式L不可重复触发/H重复触发(默认重复触发) 延时时间5-200S(可调)可制作范围零点几秒-几十分钟 封锁时间2.5S(默认)可制作范围零点几秒-几十秒 电路板外形尺寸32mm*24mm 感应角度<100度锥角 工作温度-15-+70度 感应透镜尺寸直径:23mm(默认) 功能特点: 1、全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。 2、光敏控制(可选择,出厂时未设)可设置光敏控制,白天或光线强时不感应。 3、温度补偿(可选择,出厂时未设):在夏天当环境温度升高至30~32℃,探测距离稍变短,温度补偿可作一定的性能补偿。 4、两种触发方式:(可跳线选择) a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平; b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。 5、具有感应封锁时间(默认设置:2.5S封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。 6、工作电压范围宽:默认工作电压DC4.5V-20V。 7、微功耗:静态电流<50微安,特别适合干电池供电的自动控制产品。 8、输出高电平信号:可方便与各类电路实现对接。 实物购买链接:https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-981744861.13.F4vK7o&id=10566272393
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值