红外报警监控系统设计报告文档格式.docx
《红外报警监控系统设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《红外报警监控系统设计报告文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
当物体射出的红外线通过菲涅耳透镜后,传到热释电红外探测器,这时热释电红外探测器将输出脉冲信号,脉冲信号经放大和滤波后,由电压比较器将其与基准值进行比较,当输出信号达到一定值时,报警电路发出警报。
被动式热释电红外探头的优点是本身不发生各种类型的辐射,器件的功耗小、隐蔽性好、价格低。
缺点是具有容易受各种热源、光源及射频辐射的干扰;
被动红外穿透力差,人体的红外辐射容易被遮挡,不易被探头接收;
当环境温度和人体温度接近时,探测和灵敏度下降,有时还会短时失灵。
目前市场上经常采用P288型热释电红外传感器作为敏感元件,能以非接触方式检测出人体辐射出的红外能量,并将其转化为电信号输出。
该传感器外接12V电源,内部装有菲涅耳透镜,检测区域为球形,有效警戒距离为12~15m,方向角为85度。
当红外警戒区内无移动物体时,传感器无输出信号,报警电路不工作;
当有人闯入警戒区时,只要人体移动,其辐射出的红外线便会被热释电红外传感器所接收,并输出微弱的电信号。
该信号经运算放大器A1和A2放大后,会输出一个较强的电信号。
再输送给由A3和A4组成的双限电压比较器。
具体电路如图2所示:
图2热释电传感器检测电路
4、DYP-ME003人体感应传感器
图2所示电路比较繁琐,调试难度也较大。
目前市场上有集成红外人体感应传感器,将热释电传感器、菲涅耳透镜和调理电路集成在一个模块上,可以实现5伏电压供电,性能稳定,使用方便。
DYP-ME003人体感应传感器就是这样一款基于红外线技术的自动控制产品,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品中。
其功能特点:
●全自动感应:
人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
●光敏控制(可选择,出厂时未设):
可设置光敏控制,白天或光线强时不感应。
●温度补偿(可选择,出厂时未设):
在夏天当环境温度升高至30~32℃,探测距离稍变短,温度补偿可作一定的性能补偿。
●两种触发方式:
a.不可重复触发方式:
即感应输出高电平后,延时时间段一结束,输出将自动从高电平变为低电平;
b.可重复触发方式:
即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
●具有感应封锁时间(默认设置:
2.5S封锁时间):
感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。
●工作电压范围宽:
默认工作电压DC4.5V-20V。
●微功耗:
静态电流<
50微安,特别适合干电池供电的自动控制产品。
●输出高电平信号:
可方便与各类电路实现对接。
DYP-ME003人体感应传感器的感应范围如图3所示:
图3DYP-ME003人体感应传感器的感应范围
DYP-ME003人体感应传感器的电气参数如表1所示:
表1DYP-ME003人体感应传感器的电气参数
电气参数
DYP-ME003人体感应模块
工作电压范围
DC4.5-20V
静态电流
<
50uA
电平输出
高3.3V/低0V
触发方式
L不可重复触发/H重复触发
延时时间
5-200S(可调)可制作范围零点几秒-几十分钟
封锁时间
2.5S(默认)可制作范围零点几秒-几十秒
电路板外形尺寸
32mm*24mm
感应角度
100度锥角
感应距离
7米以内
工作温度
-15-+70度
感应透镜尺寸
直径:
23mm(默认)
其外型如图4所示:
图4DYP-ME003人体感应传感器外型图
四、硬件设计
本研究设计的温湿度控制器框图如图5所示。
图5红外报警监控系统方框图
图中STC89C52单片机随时监控DYP-ME003红外人体传感器送来的报警信号。
当报警功能打开并且传感器检测到有人侵入时,单片机通过声(蜂鸣器)光(LED发光管)报警,同时将入侵时间记录在外部存储芯片AT24C04中。
系统还可以即时显示当前环境温湿度值。
单片机每2秒钟从DHT11温湿度传感器中读入温度和湿度,在液晶屏上即时显示。
系统通过DS1302时钟电路获得并显示当前时间。
该时间初始值可以通过设置键、上调键和下调键设定,由于具有后备电池,主控系统断电后时钟仍然继续运行。
系统通过四键键盘切换开、关报警状态,设定时钟初始值,查询报警时间等。
系统各单元电路介绍如下。
1、单片机电路
本设计选用宏晶公司高性能单片机STC89C52采用主控芯片,其管脚如图6所示。
图6STC89C52单片机管脚图
该芯片为52内核8位单片机,兼容Intel等52内核单片机,支持ISP下载,适用于常用检测控制电路。
由STC89C52组成的单片机系统原理图如图6所示。
图7单片机系统电路
图中ALERT引脚输入DYP-ME003红外人体传感器信号,该信号为高电平时有人入侵,为低电平时表示没有检测到人。
DATA引脚为温湿度传感器单总线引脚。
2402_SCL和2402_SDA为外存芯片AT24C04通信引脚,该芯片为IIC接口芯片,通过时钟线和数据线二线接口通信。
K1、K2、K3、K4为四只按键,分别为设置键、上调键、下调键和查询键。
L2为报警LED发光管。
P0.0—P0.7为LCD数据线,P2.5—P2.7为LCD控制线。
系统采用11.0572MHz外部晶振电路。
2、红外热释电报警传感器电路
图8DYP-ME003红外人体传感器电路
传感器使用DYP-ME003红外人体传感器,图中ALERT引脚输出信号,该信号为高电平时有人入侵,为低电平时表示无人入侵。
R17电阻为下拉电阻,防止管脚误报。
3、温湿度传感器器及检测电路
图9DHT11温湿度传感器外型及管脚
DHT11温湿度传感器外型及管脚如图9所示。
其中电源引脚的供电电压为3.5--5.5V。
传感器上电后,要等待1s以越过不稳定状态在此期间不要发送任何指令。
电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。
DHT11典型应用电路如图9所示,其连接电路简单,只需要占用控制器一个I/O口即可完成上下位的连接。
建议连接线长度短于20时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。
图10DHT11典型应用电路
DHT11数字湿温度传感器采用单总线数据格式,即单个数据引脚端口完成输入输出双向传输。
其数据包由5Byte(40Bit)组成。
一次通讯时间最大3ms,数据分小数部分和整数部分。
一次完整的数据传输为40bit,高位先出。
数据格式如表2:
表2DHT11数据格式
3、DS1302实时时钟电路
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。
实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息。
每月的天数和闰年的天数可自动调整。
时钟操作可通过AM/PM指示决定采用24或12小时格式。
其芯片管脚如图11所示。
图11DS1302管脚图
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口:
线1-RES复位,2-I/O数据线和3-SCLK串行时钟。
时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信,DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。
DS1302是由DS1202改进而来,增加了以下的特性,双电源管脚用于主电源和备份电源,供应Vcc1为可编程涓流充电电源,附加七个字节存储器。
它广泛应用于电话、传真、便携式仪器以及电池供电的仪器仪表等。
●实时时钟具有能计算2100年之前的秒分时日日期星期月年的能力还有闰年调整的能力;
●31*8位暂存数据存储RAM;
●串行I/O口方式使得管脚数量最少;
●宽范围工作电压2.0--5.5V;
●工作电流:
2.0V时,小于300nA;
●读/写时钟或RAM数据时有两种传送方式:
单字节传送和多字节传送字符组方式;
●8脚DIP封装或可选的8脚SOIC封装,根据表面装配;
●简单3线接口;
●与TTL兼容,Vcc=5V;
●可选工业级温度范围-40--+85;
●与DS1202兼容;
●双电源管用于主电源和备份电源供应,备份电源管脚可由电池或大容量电容输入;
●附加的7字节暂存存储器。
DS1302与单片机系统连接电路如图12所示。
图12DS1302电路连接图
如图11所示,DS1302的SCLK、I/O和RST三个引脚通过上拉电阻连接单片机的P1.4、P1.5和P1.6。
4、LCD显示电路
显示部分采用SMC1602液晶屏进行数据显示,其主要技术参数为:
表3液晶屏技术指标
接口信号说明如表4所示。
表4液晶屏接口信号说明
与单片机接口电路如图13所示。
其中P0.0—P0.7接LCD数据线,P2.5—P2.7接LCD控制线。
图13LCD与单片机接口电路
5、EEPROM存储器电路
红外报警监控系统的报警时间存储在EEPROM芯片AT24C04中,并可以通过查询按键查看。
AT24C04是IIC芯片,其管脚连接如图14所示,与单片机连接电路如图15所示。
图14AT24C04管脚图图15与单片机连接图
6、键盘电路
本设计采用四键键盘,电路如图16所示。
图16四键键盘电路
按键直接接单片机P3.2—P3.5,程序采用查询方式获取按键状态。
1、软件流程图
本设计软件主程序流程图如图18所示。
图18软件流程图
2、主程序
下面介绍main.c主程序编写,其他程序略。
(1)头文件和一些宏定义
#include<
reg52.h>
math.h>
#include"
1602.h"
dht.h"
2402.h"
DS1302.h"
(2)管脚定义
sbitLed_Alert=P3^6;
//报警灯
sbitIn_Alert=P2^1;
//报警信号输入
sbitBeep=P2^0;
//蜂鸣器
sbitKey_Up=P3^2;
sbitKey_Down=P3^5;
sbitKey_Set=P3^3;
sbitKey_Review=P3^4;
(3)常量、变量定义和函数声明
//定义标识
volatilebitFlagStartRH=0;
//开始温湿度转换标志
volatilebitFlagKeyPress=0;
//有键按下标志
volatilebitFlagAlert=0;
//报警状态标志
volatilebitFlagReview=0;
//查询标志
//定义温湿度传感器用外部变量
externU8U8FLAG,k;
externU8U8count,U8temp;
externU8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
externU8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
externU8U8comdata;
externU8count,count_r;
//温湿度传感器用变量
U16temp;
S16temperature,humidity;
U16RHCounter;
//按键响应用变量
U8keyvalue,keyUp,keyDown,keySet,keyReview;
U8FlagSet;
//DS1302时钟用变量
SYSTEMTIMECurrentTime;
ucharyear,month,day,hour,minute,second;
//报警及存储用变量
//char*pSave;
//字符串显示用变量
ucharstr1[6]="
"
;
ucharAlertDate[9]="
00-00-00"
AlertTime[9]="
00:
00"
ucharhide;
//函数声明
voidint2str(intx,char*str);
voidDelay1ms(unsignedintcount);
voidData_Init();
voidTimer0_Init();
voidTimer0_ISR();
voidSaveAlert();
voidLoadAlert();
voidKeyProcess(uintnum);
(4)各子程序
//整型转字符串的函数,转换范围0--65536
voidint2str(intx,char*str)
{
inti=1;
inttmp=10;
while(x/tmp!
=0)
{
i++;
tmp*=10;
}
tmp=x;
str[i]='
\0'
while(i>
1)
str[--i]='
0'
+(tmp%10);
tmp/=10;
str[0]=tmp+'
}
voidDelay1ms(unsignedintcount)
{
unsignedinti,j;
for(i=0;
i<
count;
i++)
for(j=0;
j<
120;
j++);
}
//数据初始化
voidData_Init()
RHCounter=0;
Led_Alert=1;
keyvalue=0;
keyUp=1;
keyDown=1;
keySet=1;
keyReview=1;
FlagSet=0;
hide=0;
AlertDate[8]='
AlertTime[8]='
//定时器0初始化
voidTimer0_Init()
ET0=1;
//允许定时器0中断
TMOD=1;
//定时器工作方式选择
TL0=0x06;
TH0=0xf8;
//定时器赋予初值
TR0=1;
//启动定时器
//定时器0中断
voidTimer0_ISR(void)interrupt1using0
//每2秒钟启动一次温湿度转换
RHCounter++;
if(RHCounter>
=450)
{
FlagStartRH=1;
//设定闪烁标志
if(hide==1)hide=0;
elsehide=1;
}
//存入报警日期时间
voidSaveAlert()
wrteeprom(0,year);
DELAY(1500);
wrteeprom(1,month);
wrteeprom(2,day);
wrteeprom(3,hour);
wrteeprom(4,minute);
wrteeprom(5,second);
//载入报警日期时间
voidLoadAlert()
ucharvalue;
value=rdeeprom(0);
AlertDate[0]=value/10+48;
AlertDate[1]=value%10+48;
value=rdeeprom
(1);
AlertDate[3]=value/10+48;
AlertDate[4]=value%10+48;
value=rdeeprom
(2);
AlertDate[6]=value/10+48;
AlertDate[7]=value%10+48;
value=rdeeprom(3);
AlertTime[0]=value/10+48;
AlertTime[1]=value%10+48;
value=rdeeprom(4);
AlertTime[3]=value/10+48;
AlertTime[4]=value%10+48;
value=rdeeprom(5);
AlertTime[6]=value/10+48;
AlertTime[7]=value%10+48;
voidKeyProcess(uintnum)
switch(num)
case1:
//Up键被按下
switch(FlagSet)
{
case0:
case1:
break;
case2:
//年
if(year<
99)year++;
Write1302(0x8e,0x00);
//写入允许
DS1302_SetTime(DS1302_YEAR,year);
Write1302(0x8e,0x80);
//禁止写入
case3:
//月
if(month<
12)month++;
DS1302_SetTime(DS1302_MONTH,month);
case4:
//日
if(day<
31)day++;
DS1302_SetTime(DS1302_DAY,day);
case5:
//时
if(hour<
23)hour++;
DS1302_SetTime(DS1302_HOUR,hour);
case6:
//分