人体红外传感器_人体红外传感器原理 - CSDN
精华内容
参与话题
  • HC-SR501人体红外传感器

    千次阅读 2019-08-26 08:58:22
    了解人体红外传感器HC-SR501的驱动原理,通过配置STM32F030芯片GPIO相关寄存器,让人体红外传感器识别到人体时使蜂鸣器响起的基础实验。 1、HC-SR501是基于红外线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、编译整个工程并且下载程序到开发板

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

     

    展开全文
  • 这是一个使用arduino以及人体红外传感器实现的人体感应灯,详细细节如下: 1. 实验元件 UNO 实验套装(arduino控制板、USB数据线、面包板、跳线) 人体红外传感器1个 led灯1个 电阻(220欧,1个) 2. 实现...

    这是一个使用arduino以及人体红外传感器实现的人体感应灯,详细细节如下:

     

    1. 实验元件

    • UNO 实验套装(arduino控制板、USB数据线、面包板、跳线)
    • 人体红外传感器1个
    • led灯1个
    • 电阻(220欧,1个)

     2. 实现连接图

    如图,这是测试实现前连接的实物图

    实现效果时的图如下:

    3. 实现代码

    在Arduino上编写代码,如下:

    const int sensorPin = A0; //定义人体红外传感器的引脚
    const int ledPin = 10;    //定义LED灯的引脚
    int sensorValue = 0;      //声明传感器数据变量
    
    void setup()
    {
      Serial.begin(9600);
      pinMode(ledPin, OUTPUT);
      digitalWrite(ledPin,LOW);  
      pinMode(sensorPin, INPUT);  
    }
    
    void loop()
    {
      sensorValue = analogRead(sensorPin);   //读取传感器数据
      if(sensorValue > 300){                 //判断是否有人接近
          digitalWrite(ledPin,HIGH);         //点亮LED灯
          delay(30000);                      //延时30秒
          digitalWrite(ledPin,LOW);          //关闭LED灯
      }
    }

    将上述代码编译(点击左上角的有“√”的图案),编译成功后(如下图)即可上传到实验板上。

    4. 实现结果

    观察效果:手放置在传感器上,LED灯亮。

    实验结果视频:基于Arduino实现的人体感应灯(人体红外传感器+LED灯)

    5. 总结

    这是一个比较简单的arduino实验,所用到的传感器只有一个,只要接线的时候细心认真一点便可,把程序代码上传到实验板上便能运行,希望对看官有所帮助,大家一起加油!

    展开全文
  • 人体红外线传感器

    2020-03-13 16:02:40
    基于Arduino的人体红外线传感器 ...2.基于人体红外传感器,设计人体感应灯光控制系统,通过继电器控制开发板上的发光二极管点亮或熄灭, 当有人出现时,人体红外线传感器感测到后,将信号输入继...

    基于Arduino的人体红外线传感器

    目的:
    1.红外线模组与arduino结合,利用当有人进入感应范围内则输入高电平,人离开感应范围则自动关闭高电平,输出低电平的原理,采集到人身体上的红外信号,显示于 PC 串行端口监控窗口和 LED 灯闪烁报警
    2.基于人体红外传感器,设计人体感应灯光控制系统,通过继电器控制开发板上的发光二极管点亮或熄灭, 当有人出现时,人体红外线传感器感测到后,将信号输入继电器的IN脚位,继电器COM脚位从NC连到NO,LED被点亮。
    原理图
    在这里插入图片描述接线图
    在这里插入图片描述串口显示:
    在这里插入图片描述在这里插入图片描述流程图
    在这里插入图片描述代码
    #define SWITCHPIN 3 //Digital IO PIN3
    #define LEDPIN 13 // The onboard LED
    int switch_state;
    void setup()
    {
    Serial.begin(9600);
    pinMode(LEDPIN, OUTPUT);
    }
    void loop()
    {
    switch_state = digitalRead(SWITCHPIN);
    if (switch_state == HIGH)
    {
    Serial.println(switch_state);
    digitalWrite(LEDPIN, HIGH);
    }
    else
    {
    Serial.println(switch_state);
    digitalWrite(LEDPIN, LOW);
    }}
    基于红外传感器,构建红外信号感应LED亮灯报警系统,根据是否有人经过,采集到人身体上的红外信号,感应到时,输出高电平,人离开感应范围则自动关闭高电平,输出低电平的原理 ,进而控制LED灯的亮灭
    (下一篇文章将介绍继电器+红外传感器控制)

    展开全文
  • 人体红外传感器HC-SR501

    万次阅读 多人点赞 2018-01-16 16:47:39
    在学习STM32系列的芯片时,算是第一次和开发板打交道,所以很多时候不知道如何查看引脚和相关功能,虽然只是借助外设进行一些实验,但开始的时候还是感到很困难。 而且学习的过程中越来越感受到知识的积累是一个...

    在学习STM32系列的芯片时,算是第一次和开发板打交道,所以很多时候不知道如何查看引脚和相关功能,虽然只是借助外设进行一些实验,但开始的时候还是感到很困难。
    而且学习的过程中越来越感受到知识的积累是一个十分漫长的过程,可能只是一些很简单的知识点,可是如果不加以归纳总结,自己日后还是会忘记,所以希望自己每学一点内容都可以记录下来,可能刚开始都只能是转载和整合其他人的内容,但在不断的积累中,也自然会有自己的改变,希望这些点点滴滴可以让我的知识大厦越来越高。

    除代码部分
    转载自:http://www.arduino.cn/thread-2851-1-1.html
    (若有侵权,请联系博主删除本文,谢谢!)

    工作原理

    人体都有恒定的体温,一般在37度,所以会发出特定波长10UM左右的红外线,被动式红外探头就是靠探测人体发射的10UM左右的红外线而进行工作的。人体发射的10UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。
    红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。

    热释电效应:

    当一些晶体受热时,在晶体两端将会产生数量相等而符号相反的电荷。这种由于热变化而产生的电极化现象称为热释电效应。

    菲涅耳透镜:

    根据菲涅耳原理制成,菲涅耳透镜分为折射式和反射式两种形式,其作用一是聚焦作用,将热释的红外信号折射(反射)在PIR上;二是将检测区内分为若干个明区和暗区,使进入检测区的移动物体能以温度变化的形式在PIR上产生变化热释红外信号,这样PIR就能产生变化电信号。使热释电人体红外传感器(PIR)灵敏度大大增加。
    这里写图片描述

    模块参数:

    1. 工作电压:DC5V至20V
    2. 静态功耗:65微安
    3. 电平输出:高3.3V,低0V
    4. 延时时间:可调(0.3秒~18秒)
    5. 封锁时间:0.2秒
    6. 触发方式:L不可重复,H可重复,默认值为H(跳帽选择)
    7. 感应范围:小于120度锥角,7米以内
    8. 工作温度:-15~+70度

    模块特性:

    1、这种探头是以探测人体辐射为目标的。所以热释电元件对波长为10UM左右的红外辐射必须非常敏感。
    2、为了仅仅对人体的红外辐射敏感,在它的辐射照面通常覆盖有特殊的菲泥尔滤光片,使环境的干扰受到明显的控制作用。
    3、被动红外探头,其传感器包含两个互相串联或并联的热释电元。而且制成的两个电极化方向正好相反,环境背景辐射对两个热释元件几乎具有相同的作用,使其产生释电效应相互抵消,于是探测器无信号输出。
    4、一旦人侵入探测区域内,人体红外辐射通过部分镜面聚焦,并被热释电元接收,但是两片热释电元接收到的热量不同,热释电也不同,不能抵消,经信号处理而报警。
    5、菲泥尔滤光片根据性能要求不同,具有不同的焦距(感应距离),从而产生不同的监控视场,视场越多,控制越严密。

    触发方式:

    L不可重复,H可重复。可跳线选择,默认为H。
    A. 不可重复触发方式:即感应输出高电平后,延时时间一结束,输出将自动从高电平变为低电平。
    B. 重复触发方式: 即感应输出高电平后,在延时时间段内,如果有人体在其感应范围内活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
    这里写图片描述

    可调封锁时间及检测距离调节:

    1、 调节检测距离
    2、 封锁时间:感应模块在每一次感应输出后(高电平变为低电平),可以紧跟着设置一个封锁时间,在此时间段内感应器不接收任何感应信号。此功能可以实现(感应输出时间和封锁时间)两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(默认封锁时间2.5S)

    注:
    1、调节距离电位器顺时针旋转,感应距离增大(约 7 米),反之,感应距离减小(约 3 米)。
    2、调节延时电位器顺时针旋转,感应延时加长(约300S),反之,感应延时减短(约 0.5S)。
    这里写图片描述

    光敏控制:

    模块预留有位置,可设置光敏控制,白天或光线强时不感应。光敏控制为可选功能,出厂时未安装光敏电阻。
    这里写图片描述

    模块优缺点:

    优点:
    本身不发任何类型的辐射,器件功耗很小,隐蔽性好。价格低廉。

    缺点:
    容易受各种热源、光源干扰
    被动红外穿透力差,人体的红外辐射容易被遮挡,不易被探头接收。
    易受射频辐射的干扰。
    环境温度和人体温度接近时,探测和灵敏度明显下降,有时造成短时失灵。

    模块抗干扰:

    1、 防小动物干扰
    2、 防电磁干扰
    3、 防强灯光干扰

    安装:

    红外线热释电人体传感器只能安装在室内,其误报率与安装的位置和方式有极大的关系,正确的安装应满足下列条件:
    1. 红外线热释电传感器应离地面2.0-2.2米。
    2. 红外线热释电传感器远离空调, 冰箱,火炉等空气温度变化敏感的地方。
    3. 红外线热释电传感器探测范围内不得隔屏、家具、大型盆景或其他隔离物。
    4. 红外线热释电传感器不要直对窗口,否则窗外的热气流扰动和人员走动会引起误报,有条件的最好把窗帘拉上。红外线热释电传感器也不要安装在有强气流活动的地方。
    红外线热释电传感器对人体的敏感程度还和人的运动方向关系很大。热释电红外传感器对于径向移动反应最不敏感, 而对于横切方向 (即与半径垂直的方向)移动则最为敏感. 在现场选择合适的安装位置是避免红外探头误报、求得最佳检测灵敏度极为重要的一环。

    STMF103RCT6 实例代码

    **main.c关键代码**
    if(GPIO_ReadInputDataBit(HC_GPIO_PORT,HC_GPIO_PIN))
    {   
        SysTick_Delay_ms(3000);  //为了观察实验现象时有一个间隔时间
        if(GPIO_ReadInputDataBit(HC_GPIO_PORT,HC_GPIO_PIN))
        {
            BEEP(BEEP_ON);
            LED2_TOGGLE;
            SysTick_Delay_ms(3000);
            BEEP(BEEP_OFF);  
            LED2_TOGGLE;
        }
    }
    
    **bsp_HCSR501.h**
    #ifndef __BSP_HCSR501_H
    #define __BSP_HCSR501_H
    
    #include "stm32f10x.h"
    
    #define HC_GPIO_CLK      RCC_APB2Periph_GPIOA
    #define HC_GPIO_PORT     GPIOA
    #define HC_GPIO_PIN      GPIO_Pin_2
    
    #define HC_ON    1
    #define HC_OFF   0
    
    #define HC_REV 
    PIO_WriteBit(HC_GPIO_PORT,HC_GPIO_PIN,(BitAction)(1-GPIO_ReadOutputDataBit(HC_GPIO_PORT, HC_GPIO_PIN))))
    
    void HC_GPIO_Config(void);
    
    #endif  /* __BSP_HC-SR501_H */
    
    **bsp_HCSR501.h**
    #ifndef __BSP_HCSR501_H
    #define __BSP_HCSR501_H
    
    #include "stm32f10x.h"
    
    #define HC_GPIO_CLK      RCC_APB2Periph_GPIOA
    #define HC_GPIO_PORT     GPIOA
    #define HC_GPIO_PIN      GPIO_Pin_2
    
    #define HC_ON    1
    #define HC_OFF   0
    
    #define HC_REV 
    PIO_WriteBit(HC_GPIO_PORT,HC_GPIO_PIN,(BitAction)(1-GPIO_ReadOutputDataBit(HC_GPIO_PORT, HC_GPIO_PIN))))
    
    void HC_GPIO_Config(void);
    #endif  /* __BSP_HC-SR501_H */
    
    展开全文
  • HC-SR501 人体红外感应模块

    万次阅读 多人点赞 2018-08-29 15:51:45
    完美版HC-SR501是基于红外线技术的自动控制模块,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。  电气参数 ...
  • 【Linux】树莓派控制人体红外传感器

    千次阅读 2020-04-16 15:07:49
    1.人体红外传感器说明 2.程序解读 3.前期准备(放在最后一部分,供小白查阅借鉴,包括本文需要用到的wiringPi库函数) 一、人体红外传感器说明 1.本文所用到的红外传感器型号为 HC-SR501 电源加接 VCC,电源...
  • 人体红外传感器:   BOM表 Arduino Uno *1 人体红外传感器(HC_SR051) *1 跳线(公对母)若干   接线方式 Arduino Uno HC_SR051 5V <--...
  • 人体红外模块非常简单,就是普通的三针(VCC,GND,DATA),高电平为有活动人体被检测到,低电平为没有检测到活动人体。需要注意的是模块上有几个可以设置的地方:一、触发方式: L不可重复,H可重复。可跳线选择...
  • Arduino 使用人体红外感应模块 HC-SR501

    万次阅读 2017-09-22 10:40:26
    HC-SR501 传感器的基本信息及接线方法HC-SR501 是一款基于热释电效应的人体热释运动传感器,能检测到人体或者动物上发出的红外线。这个传感器模块可以通过两个旋钮调节检测 3 ~ 7 米的范围,5秒至5分钟的延迟时间,...
  • Arduino使用人体红外传感器

    万次阅读 2017-11-12 19:55:55
    通过人体红外传感器可以检测传感器周围是否有人在运动.本示例程序意在验证如何使用人体红外传感器。连线图如下:实物连接图如下: 程序代码如下:int Sensor_pin = 3;int ledpin = 11;void setup(){ pinMode...
  • 平台:ARTIK 053(电源接口3.3V),人体红外传感器 5V ,光敏传感器 3.3V 问题:人体红外传感器和光敏传感器检测值不准确,  人体红外传感器检测不到人物的移动  光敏传感器pwr指示灯正常,adc值不正常 解决...
  • 人体红外传感器人体红外传感器模块是十分简单,只有三个引脚需要你连接从左到右依次为地线(接GND);输出引脚(接数字引脚);和VCC(接5V)。然后是引脚正对面有两个旋钮可以调节传感器的灵敏度和接收距离。(该...
  • Arduino简单实例之一_人体传感器

    万次阅读 2017-02-20 12:48:43
    人体红外感应模块是基于红外线技术的自动控制产品。附近有人时,对应引脚高电平,反之为低平台。 5米内有效。可用螺丝(下图中橙色部分)调节灵敏度和延时。 2) 硬件 HC-SR501 人体红外感应模块,Arduinouno,...
  • 这次实验使用的模块是人体红外传感器(HC_SR051),配上Arduino Uno 实现人体感应灯的实现。 先看看这模块(点击查看大图) 实验效果 开始灯还没有亮,手伸过去LED灯就亮了。 模块自带延时,在人离开后,...
  • 人体红外报警实验

    千次阅读 2017-03-26 23:51:05
    人体红外传感器基本原理是检测人或者动物发出的红外线并用经过菲泥尔滤光片增强后聚集到红外感应源上,将感应的红外信号转化为电信号。本实验利用人体红外传感器检测人或者动物运动发出的红外线,发出警报。   ...
  • 51单片机——人体红外感应报警

    千次阅读 2019-01-13 13:15:38
    //模块感应到信号后,输出高电平,此时LED的D7灯点亮,蜂鸣器报警。没有信号后,D8灯亮,蜂鸣器停止。 #include <reg52.h> #define uchar unsigned char #define uint unsigned int ...
  • 热释电红外传感器原理和应用

    千次阅读 2017-03-02 16:29:08
    随着社会的发展,各种方便于生活的自动控制系统开始进入了人们的生活,以热释电红外传感器为核心的自动门系统就是其中之一。热释电红外传感器是基于热电效应原理的热电型红外传感器。其内部的热电元由高热电系数的铁...
  • 处理思路:由于人体是有一定的温度,人体可辐射出中心波长为9~10μm的红外线,因此,只要是对这种波长敏感的传感器,就可以作为检测人体用的的红外线传感器。也就是说,当红外线遇到探测元件时,探测元件的表面温度...
  • 一、需求 1)检测鱼塘水位;水位过高闸门开启放水,水位过低关闭闸门。 2)检测是否有人靠近鱼塘,...4)热释电红外传感器:HC-SR501 5)电机:5V电机 6)短信模块:SIM800C 7)水位传感器:光电式水位传感器...
  • 实现代码如下 int buzzer = 11; int frequency = 900; int PIR_sensor = A5; int val = 0; void setup() { pinMode(buzzer,OUTPUT); pinMode(PIR_sensor, INPUT); ...
1 2 3 4 5 ... 20
收藏数 2,098
精华内容 839
关键字:

人体红外传感器