37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验六十六:HC-SR501人体红外热释感应模块 热释电传感器 人走动感应探头板
二、HC-SR501热释电传感器模块
1、模块技术参数
(1)工作电压:DC5V至20V
(2)静态功耗:小于60微安
(3)电平输出:高3.3V,低0V
(4)延时时间:可调(0.3秒~18秒)
(5)封锁时间:2.5秒
(6)触发方式:L不可重复,H可重复,默认值为H
(7)感应范围:小于120度锥角,7米以内
(8)工作温度:-15~+70度
(9)使用芯片:最稳定的 PIR 控制器BISS0001
(10)PCB外形尺寸:32*24mm,螺丝孔距28mm,螺丝孔径2mm
(11)感应透镜尺寸:(直径)23mm(默认)
HC-SR501热释电传感器模块的实验环境
一、HC-SR501热释电传感器模块实验所需硬件清单
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
IIC/I2C 1602 LCD液晶屏模块X1
高电平触发有源蜂鸣器模块X1
HC-SR501热释电传感器模块X2
LED发光二极管(绿、蓝色)X2
高电平触发单路5V继电器模块X1
Proto Shield 原型扩展板(带mini面包板)X1
二、传感器模块实验所需软件平台
代码编程 Arduino IDE (版本1.8.19)
仿真编程 Linkboy (版本V4.6.3)
图形编程 Mind+ (版本 V1.7.0 RC2.0)
以及编玩边学(线上平台https://ide.codepku.com/?type=Arduino)
三、实验接线示意图
四、实验注意事项
1、直流工作电压必须符合要求的数值,过高和过低都会影响模块性能,而且要求电源必须经过良好的稳压滤波,例如电脑USB电源、手机充电器电源、比较旧的9V的层叠电池都无法满足模块工作要求,建议客户用变压器的电源并经过三端稳压芯片稳压后再通过220UF和0.1UF的电容滤波后供电。
2、调试时人体尽量远离感应区域,有时虽然人体不在模块的正前方,但是人体离模块太近时模块也能感应到造成一直有输出,还有调试时人体不要触摸电路部分也会影响模块工作,比较科学的办法是将输出端接一个LED或者是万用表,把模块用报纸盖住,人离开这个房间,等2分钟后看看模块是否还是一直有输出?
3、模块不接负载时能正常工作,接上负载后工作紊乱,一种原因是因为电源容量很小负载比较耗电,负载工作时引起的电压波动导致模块误动作,另一种原因是负载得电工作时会产生干扰,例如继电器或者电磁铁等感性负载会产生反向电动势,315M发射板工作时会有电磁辐射等都会影响模块。解决办法如下:A、电源部分加电感滤波。B、采用负载和模块使用不同的电压的方法,例如:负载使用24V工作电压,模块使用12V工作电压,其间用三端稳压器隔离。C: 使用更大容量的电源。
4、人体感应模块只能工作在室内并且工作环境应该避免阳光、强烈灯光直接照射,如果工作环境有强大的射频干扰,可以采用屏蔽措施。若遇有强烈气流干扰,关闭门窗或阻止对流。感应区尽量避免正对着发热电器和物体以及容易被风吹动的杂物和衣物。
5、人体感应模块建议安装在密封的盒里,否则可能一直会有输出信号。
6、如果要求人体感应模块的探测角度小于90度时,可以用不透明胶纸遮挡镜片或裁剪缩小镜片来实现。
7、人体感应模块采用双元探头,人体的手脚和头部运动方向与感应灵敏度有着密切的联系,而且红外模块的特性决定了无法精确控制感应距离。
8、模块中的探头(PIR)可以装焊在电路板的另一面。也可将探头用双芯屏蔽线延长,长度应在20厘米以内为好。
HC-SR501热释电传感器模块的几个实验
1、程序一:简单测试模块串口输出与波形
(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序一:简单测试模块串口输出与波形
*/
void setup() {
Serial.begin(9600); // 设置串口波特率为9600
pinMode(A0, INPUT); // 模块连接引脚A0,并设置为输入模式
}
void loop() {
//将读取的A0模拟值输出到串口监视器
Serial.println(analogRead(A0));
delay(500); // 延时500毫秒
}
(2)实验串口返回情况
(3)打开Arduino IDE——工具——串口绘图器,查看实验波形
(4)实验串口绘图器返回情况
(5)实验场景图
2、程序二:串口打印SR501模块探测编号与PIR值,控制LED
(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序二:串口打印SR501模块探测编号与PIR值,控制LED
*/
int pirPin = 2;//定义D2接SR501模块
int ledPin = 13;//定义D13接LED
int pirValue;
int sec = 0;
void setup(){
pinMode(ledPin, OUTPUT);//设定为输出
pinMode(pirPin, INPUT);//设定为输入
digitalWrite(ledPin, LOW);
Serial.begin(9600);//设置串口波特率为9600
}
void loop(){
pirValue = digitalRead(pirPin);//读取SR501输出的值
digitalWrite(ledPin, pirValue);
sec += 1;
Serial.print("探测序列: ");//打印探测序列编号
Serial.print(sec );
Serial.print(" PIR值: ");//打印PIR值
Serial.print(pirValue);
Serial.println('\n');
delay(1000);//延时1000毫秒
}
(2)实验串口返回情况
(3)实验场景图
3、程序三:SR501热释电人体感应控制LED灯
实验开源仿真编程(Linkboy V4.63)