HC-SR501人体红外传感器

本文介绍如何使用STM32F030芯片配置GPIO寄存器来驱动HC-SR501人体红外传感器,并通过蜂鸣器反馈检测结果。HC-SR501模块采用LHI778探头,具备高灵敏度及可靠性,适用于自动感应设备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

了解人体红外传感器HC-SR501的驱动原理,通过配置STM32F030芯片GPIO相关寄存器,让人体红外传感器识别到人体时使蜂鸣器响起的基础实验。

1、HC-SR501是基于红外线HC-SR501是基于红外线技术的自动控制模块 ,采用德国原装进口LHI778 探头设计,灵敏度高,可靠性强,超低电压工作模式 ,广泛应用于各类自动感应电器设备 ,尤其是干电池供电的自动控制产品。

2、模块为全自动感应,当人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。传感器有两种触发方式(可通过跳线进行选择):第一种不可重复触发方式,即感应输出高电平后,延时一段时间结束,输出将自动从高电平变成低电平。第二种可重复触发方式,即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)

3、具有感应封锁时间(默认设置:2.5S 封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。感应模块通电后有一分钟左右的初始化时间,在此期间模块会间隔地输出0-3 次,一分钟后进入待机状态。

下面是传感器的调节方法:

 

注:a)调节延时电位器顺时针旋转,感应延时加长(约300S),反之,感应延时减短(约 0.5S)。b)调节距离电位器顺时针旋转,感应距离增大(约 7 米),反之,感应距离减小(约 3 米)。

 

 8、在Sensor_human.c文件中定义传感器读取引脚初始化函数

 // 引脚初始化
void HC_SR501_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct; // 定义结构体变量
	EXTI_InitTypeDef EXTI_InitStruct; // 定义外部中断结构体变量
	NVIC_InitTypeDef NVIC_InitStruct;
	
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); // 初始化 GPIO时钟
	
	GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // 设置为推挽输出
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; // 设置引脚为输入模式
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; // 引脚为 PA0
	GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; // 浮空
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3; // 50MHz
	GPIO_Init(GPIOA, &GPIO_InitStruct);  // 初始化函数 
	
	SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0); // 选择用作EXTI线的GPIO引脚
	
	EXTI_InitStruct.EXTI_Line = EXTI_Line0; // 选择中断线0
	EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt; // 选择中断触发
	EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling; // 选择双边沿触发
	EXTI_InitStruct.EXTI_LineCmd = ENABLE; // 使能中断线
	EXTI_Init(&EXTI_InitStruct); // 初始化外部中断
	
	// 配置中断
	NVIC_InitStruct.NVIC_IRQChannel = EXTI0_1_IRQn; // 选择中断通道
	NVIC_InitStruct.NVIC_IRQChannelPriority = 2; // 选择中断优先级
	NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; // 使能中断通道
	NVIC_Init(&NVIC_InitStruct);
}

9、配置中断服务函数

 // 配置中断服务函数
void EXTI0_1_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line0))
    {
	EXTI_ClearITPendingBit(EXTI_Line0); // 清除中断标志位
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0))
	{
	   BUZZER_ON; // 蜂鸣器开	
	}
	else
	{
	   BUZZER_ON; // 蜂鸣器开	
	}
    }
}

10、在Sensor_human.h文件中进行声明

#ifndef _SENSOR_HUMAN_H_
#define _SENSOR_HUMAN_H_

#include "stm32f0xx.h"

void HC_SR501_Init(void);

#endif

11、在main.c文件中的main()函数中调用函数。

int main()
{
    Buzzer_Init();  // 蜂鸣器初始化
    HC_SR501_Init(); // 传感器读取引脚初始化
    while(1)
    {                                                                                                                                                                                                                                                                                                                                                                                                  
    }
}

12、编译整个工程并且下载程序到开发板

     将程序下载到开发板中后,等待传感器初始化后,当人从传感器经过则可以听到开发板上的蜂鸣器响起。

 

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
### HC-SR501人体红外传感器的技术参数与使用方法 #### 技术参数 HC-SR501是一款基于热释电效应的人体红外运动检测模块,具有较高的灵敏度和可靠性。以下是该传感器的主要技术参数: - **供电电压**:DC 4.5V 至 20V[^1]。 - **静态电流**:<60uA,表明其功耗较低,适合电池供电的应用场景。 - **感应角度**:约110°锥形范围内的广角探测能力[^1]。 - **感应距离**:可通过电位器调节,最大可达7米[^2]。 - **输出形式**:TTL电平信号输出(高/低电平),便于与其他数字电路接口。 - **延迟时间调整**:通过板载电位器可设置触发后的持续时间,范围约为3秒至5分钟。 - **封锁时间配置**:每次触发后进入一段不可重新触发的时间窗口,默认为2.5秒,用于防止频繁误触或干扰[^2]。 --- #### 使用方法 为了正确使用HC-SR501人体红外传感器并将其集成到实际项目中,需遵循以下指导原则: ##### 硬件连接 1. 连接电源线:将传感器的正极(VCC)接到系统的直流电源端子上,负极(GND)接地。 2. 数据通信线路:把OUT引脚接入微控制器或其他逻辑设备的一个输入管脚来读取状态变化情况。 示例代码展示如何利用STM32单片机读取来自HC-SR501的状态更新信息: ```c #include "stm32f1xx_hal.h" void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ if(GPIO_Pin == SENSOR_PIN){ // Replace with your actual pin definition. if(HAL_GPIO_ReadPin(SENSOR_PORT, SENSOR_PIN)){ /* Human detected */ }else{ /* No human or sensor reset after delay period */ } } } ``` 注意以上片段仅作为框架示意,请依据具体开发环境补充必要的初始化过程及相关定义等内容。 ##### 软件处理建议 当采用中断方式监测外部事件时,应考虑加入去抖动机制以提高稳定性;另外还需合理安排响应动作执行时机以免影响整体性能表现。 --- #### 注意事项 - 安装位置的选择至关重要,避免直射阳光或者强光源照射到镜头表面从而引起不必要的报警现象发生。 - 如果周围温度接近人体正常体温,则可能降低探测精度甚至失效,因此要尽量避开这些条件下的部署场合[^1]。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值