打印
[开发板与模块]

【HC-SR501人体红外传感器】

[复制链接]
2080|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 eltonchang2001 于 2022-5-25 14:26 编辑

HC-SR501人体红外传感器

今天分享的是HC-SR501人体红外传感器的使用,下面我会结合stm32以及正在做的合泰HT32这两个型号的芯片进行例程讲解。

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

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

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


HC-SR501在使用的时候我们只需要接三根线就可以了,VCC GND OUT(输出引脚)中间的那根是信号线也就是我们的OUT输出引脚。我们从该模块的背后可以看出有一端上面有H L 的跳帽,靠近这个的引脚为GND 剩下的一个就是VCC。

该模块在使用的时候我们需要接5v直流进行驱动

并且我们可以通过下面这两个电位器进行延时和

距离的调节

顺时针转动延时调节的时候,感应延时加长反之减短

顺时针转动距离调节的时候,感应距离变长反之变短


进入正题,HC-SR501的具体使用


1.stm32驱动HC-SR501
/*==================infrared.h===============*/
#ifndef _INFRARED_H_
#define _INFRARED_H_
#include "stm32f10x.h"


/*-----大家可以根据自己进行引脚端口等的修改---------*/
#define PORT GPIOB
#define PIN GPIO_Pin_4
#define GPIOB_RCC RCC_APB2Periph_GPIOB


#define Read_STATE() GPIO_ReadInputDataBit(PORT,PIN)//读取人体红外的值


void Infrared_Init(void);
void  infrared_test(void);
#endif
/*=================infrared.c=================*/
#include "infrared.h"
#include "led.h"
#include "usart.h"






//红外引脚初始化
void Infrared_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量   
    RCC_APB2PeriphClockCmd(GPIOB_RCC,ENABLE);        
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Pin  = PIN ;
        GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
        GPIO_Init(PORT ,&GPIO_InitStructure);
}




//红外人体感应功能测试
//感应到人体输出高电平,离开感应区域输出低电平
//下面的判断语句中根据自己的功能来进行修改
void  infrared_test(void)
{
        if( Read_STATE() == RESET)
        {
                printf("NO People\n");
                close_led();        
        }
        else
        {
                printf("People\n");
                open_led();
        }
}
/*===================main.c==================*/
#include "stm32f10x.h"
#include "usart.h"
#include "stdio.h"
#include "led.h"
#include "infrared.h"




void Delay(unsigned int t)
{
        unsigned int i,j;
        for(i = 0;i < t;i++)
        {
                for(j = 0;j< 12000;j++);
        }
}


int main(void)
{
        Usart_Init();
        Led_Init();
        Infrared_Init();
        USART_SendStr(USART1,"STM32 Infrared Test\n");
        while(1)
        {
                infrared_test();        
        }

2.合泰HT32驱动HC-SR501
/*=================infrared.h================*/
#ifndef _INFRARED_H_
#define _INFRARED_H_


#include "ht32f5xxxx_ckcu.h"
#include "ht32f5xxxx_gpio.h"
#include "ht32f5xxxx_01.h"


//端口号定义
#define HT_GPIO_PORT_infrared HT_GPIOA


//引脚定义
#define infrared_GPIO_PIN  GPIO_PIN_15
#define Read_STATE() GPIO_ReadInBit(HT_GPIO_PORT_infrared,infrared_GPIO_PIN)   
void Infrared_Init(void);
void  infrared_test(void);
#endif
/*================infrared.c=============*/
#include "infrared.h"
#include "led.h"
#include "uart.h"


void Infrared_Init(void)
{
        CKCU_PeripClockConfig_TypeDef CKCUClock_infrared= {{0}};
        CKCUClock_infrared.Bit.PA = 1;  //开启GPIOB时钟
        CKCU_PeripClockConfig(CKCUClock_infrared, ENABLE);
        GPIO_DirectionConfig(HT_GPIO_PORT_infrared,infrared_GPIO_PIN,GPIO_DIR_IN);
        GPIO_InputConfig(HT_GPIO_PORT_infrared, infrared_GPIO_PIN, ENABLE);
          GPIO_PullResistorConfig(HT_GPIO_PORT_infrared, infrared_GPIO_PIN, GPIO_PR_DOWN);
}




//红外人体感应功能测试
//感应到人体输出高电平,离开感应区域输出低电平
void  infrared_test(void)
{
        if( Read_STATE() == RESET)
        {
                printf("NO  People\n");
                LED1_OFF();        
        }
        else
        {
                printf("People\n");
                LED1_ON();
        }
}
/*==================main.c==================*/
#include "ht32.h"
#include "ht32_board.h"
#include "led.h"
#include "delay.h"
#include "uart.h"
#include "infrared.h"


/**********************TH32 红外人体感应**********************
Author:小殷


Date:2022-5-4
******************************************************/
int main()
{
        Led_Init();
        USARTx_Init();
        Infrared_Init();
        printf("HT32 INFRARED TEST\n");
        while(1)
        {
                infrared_test();
                delay_ms(1000);
        }
}

总的来说,HC-SR501这款人体感应测试还挺好用的,上述两个Demo 的用法基本一致,只是相应的函数名称和初始化上有点区别。








使用特权

评论回复

相关帖子

沙发
antusheng| | 2022-5-21 21:03 | 只看该作者
这是和泰的模块吗,高级啊,多少钱一个啊,弄个玩玩。

使用特权

评论回复
板凳
麻花油条| | 2022-5-23 10:06 | 只看该作者
这模块是全自动感应的了,感觉还蛮有含量的

使用特权

评论回复
地板
eltonchang2001| | 2022-5-25 14:20 | 只看该作者
本帖最后由 eltonchang2001 于 2022-5-25 16:51 编辑

HC-SR501 体积大(还看得到电解电容),耗电流大,延时设定及灵敏度必需用电位器调整,误动作机率大,采用较便宜的双门探头,它的好处是便宜。

合泰开发的数字型PIR传感器模块:
1. 此PIR传感器模块为「数字型」,针对商用产品而设计开发,型号 BM22S4221-1。即使你买来学习、做实验、做创客、做DEMO都相当适合。
2. 优点是体积小,待机电流(<=10uA)及工作电流(<=1.2mA)小,内部采用最佳性能等级的四门探头。
3. 可透过 UART和主控MCU通讯,去设定延持时间及灵敏度调整,引脚5支。也可只用3支脚,VDD、VSS、STATUS (H/L输出)。
4. 若有使能数据输出,开机预热完成工作後,BM22S4221-1 以每秒一次输出内部数据给外部主控MCU,数据如:报警检测时计数、报警输出延迟、报警输出延时计数、预热时间、生产日期 (年/月/日)......。
5. 另外有提供参数平台及蓝牙转接板。
欲进一步了解,请联系合泰各代理商、或 业务联系邮箱:holtek.sales@holtek.com.cn淘宝电商还在准备中,需再等一下下才会上架。






使用特权

评论回复
5
loutin| | 2022-8-19 22:54 | 只看该作者
可重复触发方式,不好用呢。   

使用特权

评论回复
6
lzbf| | 2022-8-20 13:07 | 只看该作者
红外的应用还是比较多的。   

使用特权

评论回复
7
benjaminka| | 2022-8-20 14:26 | 只看该作者
探测范围是多大呢?   

使用特权

评论回复
8
pl202| | 2022-8-20 16:41 | 只看该作者
为什么调节电阻器不起作用呢   

使用特权

评论回复
9
pklong| | 2022-8-20 19:35 | 只看该作者
HC-SR501的精度怎么样

使用特权

评论回复
10
mattlincoln| | 2022-8-20 20:28 | 只看该作者
供电可以是3.3V吗  

使用特权

评论回复
11
juliestephen| | 2022-9-3 17:50 | 只看该作者
如何设置hc sr501高电平的封锁时间段和延时时间

使用特权

评论回复
12
earlmax| | 2022-9-3 18:47 | 只看该作者
有HC-SR501人体红外感应模块电路原理图吗

使用特权

评论回复
13
232321122| | 2022-9-3 19:07 | 只看该作者
hc-sr501如何使用?

使用特权

评论回复
14
averyleigh| | 2022-9-4 22:00 | 只看该作者
HC-SR501怎样被单片机读到

使用特权

评论回复
15
juliestephen| | 2022-9-5 16:06 | 只看该作者
驱动HC-SR501传感器?

使用特权

评论回复
16
suzhanhua| | 2022-9-5 17:14 | 只看该作者
HC-SR501模块接哪个型号的光敏电阻

使用特权

评论回复
17
caigang13| | 2022-9-6 23:43 | 只看该作者
这个是合泰的?

使用特权

评论回复
18
AloneKaven| | 2022-11-4 20:57 | 只看该作者
HC-SR501的精度怎么样?

使用特权

评论回复
19
sheflynn| | 2022-12-2 21:49 | 只看该作者
HC-SR501模块接哪个型号的光敏电阻

使用特权

评论回复
20
gygp| | 2022-12-2 21:58 | 只看该作者
如何设置hc sr501高电平的封锁时间段和延时时间

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

124

帖子

0

粉丝