锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2022-08-29 13:00:01 传感器pr9268201传感器要接地吗模块进口传感器05n感应传感器n红外线传感器红外电红外传感器

HC-SR501人体红外传感器

今天分享的是HC-SR使用501人体红外传感器,下面我将结合stm32和正在做的合泰HT例程解释了这两种芯片

HC-SR501介绍

在这里插入图片描述

1、HC-SR基于红外线的501HC-SR基于红外线的501技术的自动控制模块 ,德国原装进口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 的用法基本一致,只是相应的函数名称和初始化上有点区别。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章