一、简介
HC-SR501是基于红外线技术的自动控制模块,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。
二、规格
工作电压范围
直流电压 4.5-20V
静态电流 <50uA
电平输出 高 3.3V/低 0V
触发方式 L 不可重复触发/H 重复触发
延时时间 0.5-200S(可调)可制作范围零点几秒-几十分钟
封锁时间 2.5S(默认)可制作范围零点几秒-几十秒
感应角度 <100 度锥角
工作温度 -15-+70 度
三、功能特点
1、全自动感应:人进入其感应范围则输出高电平, 人离开感应范围则自动延时关闭高电平,输出低电平。
2、光敏控制(可选择,出厂时未设)可设置光敏控制,白天或光线强时不感应。
3、温度补偿(可选择,出厂时未设):在夏天当环境温度升高至 30~32℃,探测距离稍变短,温度补偿可作一定的性能补偿。
4、 两种触发方式:(可跳线选择)
a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;
b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
5、具有感应封锁时间(默认设置:2.5S 封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。
6、 工作电压范围宽:默认工作电压 DC4.5V-20V。
7、 微功耗:静态电流<50 微安,特别适合干电池供电的自动控制产品。
8、 输出高电平信号:可方便与各类电路实现对接。
9、 感应模块通电后有一分钟左右的初始化时间,在此期间模块会间隔地输出
0-3 次,一分钟后进入待机状态。
四、连接
将VCC和GND连接在开发板对应的引脚上(此处选择普中STM32F103开发板),信号输出线接在PD3上
五、代码
老师给了寄存器开发的代码,自己简单修改成库函数开发
在pir.h 文件中,我们先进行宏定义,方便移植
#define pir_PORT GPIOD
#define pir_PIN GPIO_Pin_3
#define pir_RCC RCC_APB2Periph_GPIOD
#define pir_STATE() GPIO_ReadInputDataBit(pir_PORT,pir_PIN)//读取人体红外的值
定义完了之后,再对pir.c文件中的PD3接收引脚进行初始化
//对人体红外模块引脚进行初始化
void pir_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
RCC_APB2PeriphClockCmd(pir_RCC,ENABLE);
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin =pir_PIN ;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(pir_PORT ,&GPIO_InitStructure);
}
最后,在main.c函数里面进行情况选择
int main()
{
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
USART1_Init(115200);
pir_INIT();
while(1)
{
if(GPIO_ReadInputDataBit(pir_PORT,pir_PIN)==0)
{
LED1=1;
LED2=1;
printf("附近没人!rn");
}
else
{
LED2=0;
LED1=0;
printf("附近有人!rn");
}
}
}