人体感应模块stm32驱动

热释电效应

在某些绝缘物质中,由于温度的变化引起极化状态改变的现象称为热释电效应。能实现热释电效应的物质被称为热电体。热电体物质有硫酸三甘肽(TGS)、铁电钛酸钡、电气石和蔗糖等。这一现象早在2300年前就被人们发现了,但对它的研究则始于18世纪。现在它成为固体物理中最活跃的研究领域之一。因为铁电体的热释电系数比一般热电体大得多,故成为应用广泛的热电体材料,除TGS及其衍生物外,铁电陶瓷(如PZT、PLZT等)成为易于通过组份改变控制性能、适于批量生产、价廉的实用型热电材料。

热释电效应在近10年被用于热释电红外探测器中,广泛地用于辐射和非接触式温度测量、红外光谱测量、激光参数测量、工业自动控制、空间技术、红外摄像中。我国利用ATGSAS晶体制成的红外摄像管已开始出口国外。其温度响应率达到4~5μA/℃,温度分辨率小于0.2℃,信号灵敏度高,图像清晰度和抗强光干扰能力也明显地提高,且滞后较小。此外,由于生物体中也存在热释电现象,故可预期热释电效应将在生物,乃至生命过程中有重要的应用。在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
热释电红外传感器在结构上引入场效应管,其目的在于完成阻抗变换。由于热电元输出的是电荷信号,并不能直接使用,因而需要用电阻将其转换为电压形式。故引入的N沟道结型场效应管应接成共漏形式来完成阻抗变换。热释电红外传感器由传感探测元、干涉滤光片和场效应管匹配器三部分组成。设计时应将高热电材料制成一定厚度的薄片,并在它的两面镀上金属电极,然后加电对其进行极化,这样便制成了热释电探测元。在这里插入图片描述
在这里插入图片描述
菲涅尔透镜利用透镜的特殊光学原理,在探测器前方产生一个交替变化的“盲区”和“高灵敏区”,以提高它的探测接收灵敏度。当有人从透镜前走过时,人体发出的红外线就不断地交替从“盲区”进入“高灵敏区”,这样就使接收到的红外信号以忽强忽弱的脉冲形式输入,从而强化其能量幅度。

人体辐射的红外线中心波长为910–um,而探测元件的波长灵敏度在0.220–um范围内几乎稳定不变。在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为7~10–um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。

在这里插入图片描述
热释电人体红外传感器的特点是,它只在由于外界的辐射而引起本身温度变化时,才给出一个相应的电信号,当温度的变化趋于稳定后,就不再有信号输出。所以,热释电信号与它本身的温度变化率成正比,即热释电传感器只对运动的人体敏感。通常,敏感单元材料阻抗非常高,因此要用场效应管进行阻抗变换后才能实际使用。电路中高阻值电阻Rg 的作用是释放栅极电荷,使场效应管正常工作;采用源极输出时,要外接源极电阻Rs,源极电压约为0.4 ~ l.0V。制成敏感单元的PZT( 锆钛酸铅) 是一种光谱材料,能探测各种波长辐射。为了使传感器对人体最敏感,而对太阳、电灯光等有抗干扰性,传感器采用了滤光片做窗口。滤光片使人体辐射的红外线最强的波长正好落在滤光窗相应波长的中心处,所以滤光窗能有效地让人体所辐射的红外线通过,而阻止太阳光、灯光等可见光中的红外线通过,以免引起干扰。为提高传感器的灵敏度,可在传感器前1 ~ 5cm处放置菲涅尔透镜,使探测距离从一般的2m 提高到10 至20m。在实验室试验时,可不加菲涅尔透镜。在实际应用中,传感器往往需要预热,这是由传感器本身决定的。一般被动红外探测器需要一分钟左右的预热时间。

技术参数
1.工作电压:DC 2.7-12V;
2.静态功耗:<0.1mA;
3.延时时间:2秒;
4.封锁时间:2秒;
5.触发方式:可重复;
6.感应范围:≤100度锥角,3-5米;(需根据具体的透镜)
7.工作温度:-20 - +60℃
8.PCB外形尺寸:10mm*8mm
9.模块透镜:小透镜

功能特点
a、 超小体积,灵敏度高,可靠性强,超低电压工作模式。
b、抗干扰性增强,内部采用数字信号处理,直接高低电平输出。
c、 全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
d、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后延时,才变为低电平(即:感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。

模块的VOUT脚输出的是开关量,有人接近感应模块时,输出高电平,人离开后恢复成低电平。所以,可接单片机的任何一个IO脚都行,可采用查询法,查询所接引脚的状态,就知道VOUT脚是高电,还是低电平,从而判是否有人接近了。在这里插入图片描述

程序

main函数

#include "stm32f10x.h"   // Ï൱ÓÚ51µ¥Æ¬»úÖÐµÄ  #include <reg51.h>
#include "usart.h"
#include "bsp_hc_sr501.h"
#include "bsp_led.h" 
#include "bsp_systick.h"


//¶¨ÒåÒ»¸öÈ«¾Ö±äÁ¿a£¬½«#include "stm32f10x_it.h"ÖеIJÎÊý´«Èë
extern int a;

int main(void)
{
	
	// À´µ½ÕâÀïµÄʱºò£¬ÏµÍ³µÄʱÖÓÒѾ­±»ÅäÖóÉ72M¡£
 USART_Config();		
 LED_GPIO_Config();
	EXTI_SR501_Config();
	
printf("»¶Ó­Ê¹ÓÃÈËÌå¸ÐӦģ¿é\n");	
	

while(1)
{
	
printf("³É¹¦\n");
	SysTick_Delay_ms(1000);

}

	
	
	
	
}

.c

#include "bsp_hc_sr501.h"
#include "usart.h"




static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
  /* ÅäÖÃNVICΪÓÅÏȼ¶×é1 */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  
  /* ÅäÖÃÖжÏÔ´£º°´¼ü1 */
  NVIC_InitStructure.NVIC_IRQChannel = SR501_OUT_EXTI_IRQ;
  /* ÅäÖÃÇÀÕ¼ÓÅÏȼ¶ */
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  /* ÅäÖÃ×ÓÓÅÏȼ¶ */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  /* ʹÄÜÖжÏͨµÀ */
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  
}


void EXTI_SR501_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 
	EXTI_InitTypeDef EXTI_InitStructure;

	/*¿ªÆô°´¼üGPIO¿ÚµÄʱÖÓ*/
	RCC_APB2PeriphClockCmd(SR501_OUT_GPIO_CLK,ENABLE);
												
	/* ÅäÖà NVIC ÖжÏ*/
	NVIC_Configuration();
	
/*--------------------------GPIOÅäÖÃ-----------------------------*/
	/* Ñ¡Ôñ°´¼üÓõ½µÄGPIO */	
  GPIO_InitStructure.GPIO_Pin = SR501_OUT_GPIO_PIN;
  /* ÅäÖÃΪ¸¡¿ÕÊäÈë */	
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD ;
  GPIO_Init(SR501_OUT_GPIO_PORT, &GPIO_InitStructure);

	/* Ñ¡ÔñEXTIµÄÐźÅÔ´ */
  GPIO_EXTILineConfig(SR501_OUT_EXTI_PORTSOURCE, SR501_OUT_EXTI_PINSOURCE);
  EXTI_InitStructure.EXTI_Line = SR501_OUT_EXTI_LINE;
	
	/* EXTIΪÖжÏģʽ */
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
	/* ÉÏÉýÑØÖÐ¶Ï */
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  /* ʹÄÜÖÐ¶Ï */	
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
}


.h文件

#ifndef __BSPHC_SR501_H
#define __BSPHC_SR501_H
#include "stm32f10x.h" 


//Òý½Å¶¨Òå
#define SR501_OUT_GPIO_PORT         GPIOA
#define SR501_OUT_GPIO_CLK          (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO)
#define SR501_OUT_GPIO_PIN          GPIO_Pin_4

#define SR501_OUT_EXTI_PORTSOURCE   GPIO_PortSourceGPIOA
#define SR501_OUT_EXTI_PINSOURCE    GPIO_PinSource4
#define SR501_OUT_EXTI_LINE         EXTI_Line4
#define SR501_OUT_EXTI_IRQ          EXTI4_IRQn

#define SR501_IRQHandler            EXTI4_IRQHandler

 

void EXTI_SR501_Config(void);
void HC_SR_GPIO_Config(void); 
void HC_SR_RECEIVE(void);	
#endif /*__BSP_HC_SR501_H*/

在这里插入图片描述

发布了176 篇原创文章 · 获赞 662 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/qq_45172832/article/details/105522035