HC-SR501人体红外传感器

了解人体红外传感器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、编译整个工程并且下载程序到开发板

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

 

  • 34
    点赞
  • 342
    收藏
    觉得还不错? 一键收藏
  • 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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值