红外二极管感应报警电路分析与制作.docx
《红外二极管感应报警电路分析与制作.docx》由会员分享,可在线阅读,更多相关《红外二极管感应报警电路分析与制作.docx(22页珍藏版)》请在冰豆网上搜索。
![红外二极管感应报警电路分析与制作.docx](https://file1.bdocx.com/fileroot1/2023-1/8/e9434373-3489-4eb2-a789-84c43930821d/e9434373-3489-4eb2-a789-84c43930821d1.gif)
红外二极管感应报警电路分析与制作
传感器检测技术课程设计
红外二极管感应报警电路分析与制作
2016年6月
目录
一.设计要求2
二.原理3
三.硬件电路设计4
四.软件设计9
五.调试过程与结果分析12
六.结论15
七.总结16
八.附录17
九.参考文献.........................................................21
十.实物图................................................................24
家庭防盗报警系统设计报告
一、设计要求
1、当安全状态下,绿灯亮,表示安全;
2.有人入室盗窃时候,感应器(本设计用开关K0代替,合上为有人入室盗窃)自动感应,并向单片机输入信号。
3、当检测到有人入室盗窃的信号输入,显示入室盗窃的指示灯,并响起扬声器通知,一定时间后自动恢复安全状态。
4、当人为手动停止(用开关K1代替),则恢复安全状态。
二、基本原理
基本原理;由发射端主动发射红外线,由接收端接收红外线,形成红外线的网状。
这种探测器能够对入侵物进行主动的防范,不会因为小宠物的穿越或气候的影响而产生误报警情,从而最大限度地降低了误报率。
红外发射器发射一束或多束经过调制过的红外光线投向红外接收器。
发射器与接收器之间没有遮挡物时,探测器不会报警。
有物体遮挡时,接收器输出信号发生变化,探测器报警。
被动红外探测器工作原理:
被动红外探测器是依靠被动的吸收热能动物活动时身体散发出的红外热能进行报警的,也称热释红外探头,其探测器本身不发射红外线的。
被动红外探测器中有2个关键性元件,一个是菲涅耳透镜,另一个是热释电传感器。
自然界中任何高于绝对零度的物体都会产生红外辐射,不同温度的物体释放的红外能量波长也不同。
人体有恒定的体温,与周围环境温度存在差别。
当人体移动时,这种差别的变化通过菲涅耳透镜被热释电传感器检测到,从而输出报警信号,具有手动停止报警器和报警灯,然后恢复正常状态的功能
三、硬件电路设计
1、系统概述
本家庭防盗报警系统设计包括硬件设计与软件设计两部分。
硬件设计部分主要由一片AT89C51单片机芯片与三个功能子电路共同构成,三个功能子电路分别为:
1)晶振输入电路,2)安全状态显示及自动检测电路,3)报警响应及手动复位电路,与软件一起作用,实现家庭防盗的自动检测与报警功能。
工作原理:
2、单元电路设计
热释电红外线(PIR)传感器是80年代发展起来的一种新型高灵敏度探测元件。
是一种能检测人体发射的红外线而输出电信号的传感器,它能组成防入侵报警器或各种自动化节能装置。
它能以非接触形式检测出人体辐射的红外线能量的变化,并将其转换成电压信号输出。
将这个电压信号加以放大,便可驱动各种控制电路[2]。
如图1示为热释电红外传感器的内部电路框图。
图1热释电红外传感器的内部电路框图
AT89C51单片机的基本组成功能方块图。
由图可见,在这一块芯片上,集成了一台微型计算机的主要组成部分,其中包括CPU、存储器、可编程I/O口、定时器/计数器、串行口等,各部分通过内部总线相连。
下面介绍几个主要部分。
AT89C51管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入1后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
P3口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0(外部中断0)
P3.3INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/
:
当访问外部存储器时,地址锁存允许端的输出电平用于锁存地址的地址字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
PSEN:
外部程序存储器的选通信号端。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/VP:
当
保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,
将内部锁定为RESET;当
端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
反向振荡器的输出,如采用外部时钟源驱动器件,应不接。
本设计所用的热释感器就采用这种双探测元的结构。
其工作电路原理及设计电路如图4所示,在VCC电源端利用C1和R2来稳定工作电压,同样输出端也多加了稳压元件稳定信号。
当检测到人体移动信号时,电荷信号经过FET放大后,经过C2,R1的稳压后使输出变为高电位,再经过NPN的转化,输出OUT为低电平。
放大电路的设计
如图5所示为最基本的放大电路,Vi是输入电压信号,Vo是输出放大的电压信号。
图5放大电路图
时钟电路的设计
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us,故而一个机器周期为1us[5]。
如图6所示为时钟电路。
图6时钟电路图
复位电路的设计
复位方法一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET端持续给出2个机器周期的高电平时就可以完成复位操作[6]。
例如使用晶振频率为12MHz时,则复位信号持续时间应不小于2us[7]。
本设计采用的是外部手动按键复位电路。
如图7示为复位电路。
图7复位电路图
发光二极管报警电路的设计
由4个发光二极管接上电阻后连上单片的RXD的引脚,外接VCC,当单片机的RXD引脚被置低电平后,发光二极管被点亮,起到报警作用[8]。
图8所示为发光二极管报警电路。
图8发光二极管报警电路图
声音报警电路的设计
如下图所示,用一个Speaker和三极管、电阻接到单片机的TXD引脚上,构成声音报警电路,如图9示为声音报警电路。
图9声音报警电路图
系统硬件电路的选择及说明
从以上的分析可知在本设计中要用到如下器件:
AT89C51、热释电红外传感器、LED、按键、反相器74LS04、蜂鸣器等一些单片机外围应用电路,以及单片机的手工复位电路等。
其中D1为电源工作指示灯,D2是正常工作指示灯,D3—D6是起报警指示作用,当RXD脚被置低电平时,D3—D6亮红灯开始报警,同样,TXD脚置高电平时声音报警电路开始工作。
电路设有2个按键,S1键作为倒计时的暂停键,S2键作为作为电路复位键。
本家庭防盗报警系统主要由一片AT89C51单片机和三个子电路组成,共同与软件设计配合完成对家庭防盗并且自动报警的智能控制。
其中三个子电路设计如下:
图1—1晶振输入电路
上图1—1所示为晶振输入电路,图中19与18引脚分别为XTAL1、XTAL2,他们分别接晶振的输入与输出。
因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期。
本设计选择晶振频率为12MHz,输入芯片震荡周期为1/12μs,一个机器周期为1μs。
2)安全状态显示及自动检测电路
安全状态显示及自动检测电路
上图所示为家庭防盗报警系统的安全状态显示电路与自动检测电路,如图所示,安全状态显示电路由安全指示灯绿灯D1和电阻R1组成,为使D1正常工作,R1选择220Ω,与D1串联;自动检测及报警电路由开关K0组成,它们分别接管脚P1.0和P1.1,P1口初始状态为高电平;在安全状态下,将P1.0被设置为低电平,安全指示灯绿灯D1被点亮,指示此时为安全状态。
当遇到盗窃情况(本设计用开关K0表示,开关合上表示遇窃,打开表示安全)时,管脚P1.1输入低电平,系统检测到低电平信号输入,立即将P1.1置为高电平,安全指示灯绿灯D1灭,并自动转到报警响应电路进行报警。
3)报警响应及手动复位电路
图1—3报警响应及手动复位电路
上图1—3所示为家庭防盗报警系统的报警响应电路及手动恢复电路;报警电路由报警指示灯D2,电阻R2和扬声器LS2组成,为使D2正常工作,R2选择220Ω,与D2串联;它们分解接管脚P2.3和P2.4;手动复位电路由开关K1组成,接管脚P3.2;当自动检测子电路检测到遇窃信号后,报警电路立即响应,P2.3立即置为低电平,遇窃指示灯红灯D2被点亮,同时P2.4立即置为高电平,扬声器工作。
在报警期间,如果检测到K1合上,P3.2接收都信号,立即停止报警响应,遇窃指示灯红灯D2灭,同时扬声器停止工作,转到安全状态,安全指示灯绿灯D1点亮;如果没有检测到P3.2的低电平信号,则报警响应持续10秒,10秒后自动恢复安全状态,安全指示灯绿灯D1点亮。
3、软件程序设计
根据上述工作原理及硬件结构分析可得程序设计工作流程图如下图1—4所示:
四.软件设计
图程序设计工作流程图
如流程图所示,本程序实现的功能是:
初始化单片机工作在安全状态下,当P1.1引脚无低电平信号输入时,不断循环检测;当单片机检测到从P1.1引脚传来的低电平信号,表示遇窃,从而经过单片机内部程序处理后,驱动报警电路开始报警,自动延时10S后恢复初始化,当在延时时间未到10S时有手动停止(P3.2)的信号输入,则在接收到信号后恢复初始化状态(安全状态)。
程序设计软件用KeiluVision4设计编译,仿真软件用Proteus7.5,采用c语言。
仿真过程用到的主程序与相关子程序。
见附录二
//宏定义
#defineucharunsignedchar
#defineuintunsignedint
//头函数
#include
ucharMode=1,t;
sbits1=P1^2;
sbits2=P1^3;
sbits3=P1^4;
bitalarm=1,kai=1;
//LED
sbitLR=P0^0;
sbitLY=P0^1;
sbitLG=P0^2;
//蜂鸣器
sbitFeng=P2^7;
//人体热释电传感器
sbitHR=P2^4;
voiddelay(uintx)//毫秒级延时函数
{
uinti,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
voiddi()
{
Feng=0;
delay(100);
Feng=1;
}
voidmain()
{
LR=1;
LG=1;
LY=1;
while
(1)
{
if(s1==0)//紧急手动报警
{
delay(5);
if(s1==0)//紧急手动报警
{
delay(5);
while(!
s1);
di();
//开启指示灯报警红灯
kai=0;
LR=0;
LY=1;
LG=1;
alarm=0;
delay(200);
}
}
if(s3==0)//取消报警
{
delay(5);
if(s3==0)
{
delay(5);
while(!
s3);
di();
//关闭模式
//Mode=1;
LR=1;
alarm=1;
delay(200);
}
}
if(s2==0)//布防
{
delay(5);
if(s2==0)
{
delay(5);
while(!
s2);
di();
//延时30秒左右设防
for(t=0;t<100;t++)
{
LY=~LY;
delay(200);
}
//开启指示灯布防黄灯
LR=1;
LY=0;
LG=1;
Mode=0;
kai=1;
}
}
if(alarm==0)
{
//报警
di();
delay(100);
di();
delay(100);
}
//判断红外状态
if(HR==1&&Mode==0)
{
LR=0;//报警红灯
alarm=0;
}
else
{
if(kai)
{
alarm=1;
LR=1;
}
}
if(HR==1)
{
LG=0;
delay(200);
}
else
{
LG=1;
}
}
}
五程序调试与过程分析
1.创建工程
在项目开发中,并不是仅有一个用户源程序就够了,还要为这个项目选择CPU型号、设置编译和调试参数。
有一些项目还会有多个文件组成。
因此将这些参数设置和所需要的所有文件统称为一个工程,存放于专门的工程文件夹下。
这里先建立一个工程文件夹如F:
\exam.①创建新工程。
鼠标左键单击主菜单Project一>NewProject.弹出。
CreateNewProject"对话框,用鼠标选择你要保存工程的文件夹(如FAexam),输入新工程名(如"exam")。
单击"保存"按键。
②在随后弹出的CPU型号设置对话框中选择单片机的型号(如"AT89C51"),单击"确定"完成。
2.建立源程序文件并加入工程①鼠标左键单击菜单。
File一>New新建文件。
弹出图1窗口。
自动进入编辑工作模式。
③单击菜单。
File一>Saveas.弹出文件保存对话框,选择工程文件夹("F:
\exam")。
输入源程序文件名(如"exam.asm"),点击"保存"按钮。
注意汇编源程序的扩展名必须为asrn,C51源程序扩展名必须为*.C.
④将源程序加入工程。
用鼠标点击图标"Target1"前的"+"号,展开后右键单击SourceGroup弹出快捷菜单,点击"AddFiletoGroup'SourceGroup1"项弹出源程序加入工程对话框。
选择刚保存的用户源程序exam.asm,点击ADD按钮加入工程,点击Close关闭对话框。
3.工程参数设置
用鼠标左键单击主菜单Project一>OptionsforTarget'Targetl弹出工程参数设置对话框。
关于工程参数设置的内容很多,篇幅所限,这里仅介绍通常需要设置的三个参数:
2设置CPU型号。
前面已经进行了设置。
②在设置对话框的"Target"标签下"Xtal(Mhz)"处输入单片机的晶振(如"12")如图2.
结果分析
调整TORCH_LDR上的“+”符号,可以看到LED报警灯亮起,扬声器开始报警。
由于TORCH_LDR调整到“+”值时,相当于传感器能持续检测到侵入信号,所以声光报警系统会一直工作下去。
按TORCH_LED上的“-”到最小值,声光报警系统响10S后就会自动停止工作。
当不到10S时,按中断按钮,声光报警系统也会停止工作。
无侵入信号时候绿的保持工作。
六、结论
本设计研究了一种基于单片机技术的家庭防盗智能报警器。
该防盗报警器通过以AT89C51单片机为工作处理器核心,设计家庭防盗报警系统的硬件实现,通过与软件程序设计的共同作用下,硬件实现完成一系列自动检测盗窃信号(设计中设置为K0信号),接收到盗窃信号后自动报警并在延时一段时间后自动恢复的功能。
本次设计指示只简单实现一个功能描述,在实验中采用,在现实生活应用中,该放到报警器跟传感器联系起来应用,会使该防盗报警器更加的智能,应用性强,在家庭中应用能够让用户感受到其操作简单、易懂、灵活的特点,且安装方便、智能性高、误报率低。
随着现代人们安全意识的增强以及科学技术的快速发展,相信报警器必将在更广阔的领域得到更深层次的应用。
七、总结
通过本次的单片机课程设计,我们不仅掌握了硬件电路设计的基本步骤和方法,还认真的回顾了汇编语言编程方面的知识。
将我们所学的知识应用于生活实践中。
真正的做到了学以致用的效果。
同时也锻炼了我们小组每位成员的动手能力,加强了团队合作的意识和能力。
大家都是受益匪浅,在利用proteus软件仿真过程中,出现了很多的问题,初次接触这个软件,一点都不熟悉,很多知识都是用的时候在网上找的,或者查资料得出的。
对于器件库中的元件的性能不熟悉,不如说是最常用的电容器就有好多种,并不了解我们需要的是哪一个,而且电容的种类那么多,很难一次性选择正确。
电路图画好之后就是装入程序进行仿真。
我们的程序也有一些问题,开始时运行编译时总是达不到想要的要求,如延时问题,自动检测信号问题,还有智能化控制的问题,在经过自己的摸索与同学的讨论请教中,最终问题还是解决了。
用Keil软件编译好程序后载入,满足设计的要求,我们小组充分感受到团队合作重要性和自主克服困难的喜悦。
八、附录
1元器件明细表
名称
数量
属性
AT89C51芯片
1
晶振
1
12MHz
电容
2
30pF
电阻
2
220Ω
LED-GREEN
1
LED-RED
1
开关
2
扬声器
1
2附录二
//宏定义
#defineucharunsignedchar
#defineuintunsignedint
//头函数
#include
ucharMode=1,t;
sbits1=P1^2;
sbits2=P1^3;
sbits3=P1^4;
bitalarm=1,kai=1;
//LED
sbitLR=P0^0;
sbitLY=P0^1;
sbitLG=P0^2;
//蜂鸣器
sbitFeng=P2^7;
//人体热释电传感器
sbitHR=P2^4;
voiddelay(uintx)//毫秒级延时函数
{
uinti,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
voiddi()
{
Feng=0;
delay(100);
Feng=1;
}
voidmain()
{
LR=1;
LG=1;
LY=1;
while
(1)
{
if(s1==0)//紧急手动报警
{
delay(5);
if(s1==0)//紧急手动报警
{
delay(5);
while(!
s1);
di();
//开启指示灯报警红灯
kai=0;
LR=0;
LY=1;
LG=1;
alarm=0;
delay(200);
}
}
if(s3==0)//取消报警
{
delay(5);
if(s3==0)
{
delay(5);
while(!
s3);
di();
//关闭模式
//Mode=1;
LR=1;
alarm=1;
delay(200);
}
}
if(s2==0)//布防
{
delay(5);
if(s2==0)
{
delay(5);
while(!
s2);
di();
//延时30秒左右设防
for(t=0;t<100;t++)
{
LY=~LY;
delay(200);
}
//开启指示灯布防黄灯
LR=1;
LY=0;
LG=1;
Mode=0;
kai=1;
}
}
if(alarm==0)
{
//报警
di();
delay(100);
di();
delay(100);
}
//判断红外状态
if(HR==1&&Mode==0)
{
LR=0;//报警红灯
alarm=0;
}
else
{
if(kai)
{
alarm=1;
LR=1;
}
}
if(HR==1)
{
LG=0;
delay(200);
}