传感器课程设计智能家居电子称设计.docx
《传感器课程设计智能家居电子称设计.docx》由会员分享,可在线阅读,更多相关《传感器课程设计智能家居电子称设计.docx(45页珍藏版)》请在冰豆网上搜索。
传感器课程设计智能家居电子称设计
智能家居监控系统设计
设计目的:
随着智能分析技术、网络技术的迅速发展以及人民生活水平的提高,人们开始更加注重家居环境的安全,伴随着人们需求的提高,基于智能化的实时监控系统应运面生。
目前,视频监控系统经历了模拟监控、数字监控和网络监控3个阶段。
虽然视频监控系统在20世纪90年代末就在中国市场兴起,有很多公司推出了自己的智能家居系统,但是现在仍未得到普及,而且目前智能家居的国际标准尚未成热,因此智能家居监控系统存在广阔的发展空间。
本次课题研究智能家居监控系统设计的四个部分,实现家居温度,煤气泄漏,外人闯入,火灾烟雾的检测!
设计要求:
1用Protel画出设计原理图。
2采用Protuse进行仿真,完成系统电路图的部分和全部仿真,在设计说明书中体现仿真结果。
3写设计说明书。
总体设计方案:
本系统采用四个模块单独实现,设计简单,可靠!
各个模块的设计
一室内环境温度的检测
由于考虑到家居室内的环境比较良好,且不需要相当精确的检测,于是采用集成温度传感器来检测室内温度
硬件该系统由集成温度传感器DS18B20发光二极管(灯光报警)led显示单片机组成
工作环境在lcd上显示温度值当室内温度低于某个数值或者高于某个数值是,发光二极管将发出报警信息
检测电路
该系统用集成温度传感器DS18B20检测环境温度。
DS18B20是典型的单总线数字式温度传感器,工作电压为3~5v,测量结果以9~12位数字量方式串行传送,在使用中不需要任何外围元件。
DS18B20的工作原理
在该检测系统中,单片机AT89S51作为主机,DS18B20作为从机,由于DS18B20采用的是主从结构,只有主机呼叫从机,从机才能应答。
因此,访问器件时必须严格遵循单总线命令序列,以及初始化,ROM,命令功能的命令。
单总线器件采用严格的通讯协议来保证数据的完整性。
通讯协议包括:
复位脉冲,应答脉冲,写0,写1,读0,读1,所有这些信号都是以先低位,后高位的方式发送的。
DS18B20的一些指令
软件设计
DS18B20的初始化
(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)
(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60微妙时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20的写操作
(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上
(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
DS18B20的读操作
(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时3微秒。
(5)将数据线拉高“1”。
(6)延时5微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时60微秒。
显示电路
显示电路由lcd1602和上拉电阻组成。
LCD1602简介LCD1602是工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
管脚功能
1602采用标准的16脚接口,其中:
第1脚:
VSS为电源地
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
时序
写操作时序
写指令:
RS=0;R/W=1;E=1;
写数据:
RS=1;R/W=0;E=1;
读操作时序
读状态:
RS=0;R/W=1;E=1;
读数据:
RS=1;R/W=1;E=1;
Protuse仿真图
仿真结果:
当温度传感器检测到室内温度达到某一设定值时,发出声光报警!
程序如下
#include
#include"INTRINS.H"
sbitDQ=P2^0;
sbitp3_2=P3^2;
sbitp3_5=P3^5;
sbitrs=P2^1;
sbitrw=P2^2;
sbiten=P2^3;
unsignedchartemp1;//温度值高位
unsignedchartemp0;//温度值低位
unsignedcharidataTMP;
unsignedcharidataTMP_d;
unsignedcharf;
unsignedcharcodeChar[]="tmepture:
";
unsignedcharcodewendu[]="0123456789";
floattem;
voiddelay_18B20(inti)
{
while(i--);
return;
}
voiddelay(unsignedintcount)
{
unsignedinti;
while(count)
{
i=200;
while(i>0)i--;
count--;
}
}
voidDelay_us(unsignedcharn)
{
unsignedchari;
i=0;
while(i{i++;}
return;
}
voidwr_ds18_1(chardat)
{
signedcharidatai=0;
unsignedcharidataj;
bittestb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)//写一
{
DQ=0;
_nop_();
_nop_();
DQ=1;
delay_18B20(8);
}
else//写0
{
DQ=0;
delay_18B20(8);
DQ=1;
_nop_();
_nop_();
}
}
}
voidInit_18B20(void)
{
//unsignedcharx;
DQ=0;
delay_18B20(103);
DQ=1;
delay_18B20(4);
delay
(1);
//x=DQ;
//DQ=0;
//delay_18B20(480);
//DQ=1;
wr_ds18_1(0xcc);
//wr_ds18_1(0xbe);
wr_ds18_1(0x44);
}
unsignedcharReadByte(void)
{
unsignedchari,k;
i=8;
k=0;
while(i--)
{
DQ=1;
//Delay_us
(1);
_nop_();
_nop_();
DQ=0;
k=k>>1;
DQ=1;
//Delay_us(60);
//_nop_();
if(DQ)k|=0x80;
Delay_us(60);
}
return(k);
}
voidtempture(void)
{
//delay_18B20(12);
//Init_18B20();
//wr_ds18_1(0xcc);
//wr_ds18_1(0x44);
//delay_18B20(12);
//Init_18B20();
DQ=0;
delay_18B20(103);
DQ=1;
delay_18B20(4);
delay
(1);
wr_ds18_1(0xcc);
wr_ds18_1(0xbe);
//delay_18B20(12);
temp0=ReadByte();//diwei
temp1=ReadByte();//gaowei
f=temp1&0xf8;
if(f)
{
temp1=~temp1;
if(temp0==0)temp1++;
temp0=~temp0+1;
}
tem=(temp1*256+temp0)/16;
}
/********************lcd*****************************/
voidwrite_忽略(unsignedchar忽略)
{
rs=0;
rw=0;
P0=忽略;
Delay_us(550);
en=1;
Delay_us(550);
en=0;
}
voidwrite_data(unsignedchardat)
{
rs=1;
rw=0;
P0=dat;
Delay_us(550);
en=1;
Delay_us(550);
en=0;
}
voidinit1602()
{
rw=0;
en=0;
write_忽略(0x3c);
write_忽略(0x0c);
write_忽略(0x06);
write_忽略(0x01);
write_忽略(0x80);
}
voidlcd_clear()
{
inti,j;
for(i=0;i<32;i++){write_data(0);}
}
voidmain()
{
p3_2=1;
while
(1)
{
unsignedchari,j;
inth,l;
init1602();//lcd初始化
Init_18B20();//18B20初始化
//lcd_clear();
tempture();//使用该函数获得温
if(tem>28||tem<22){p3_2=0;}
else{p3_2=1;}
h=(int)tem/10;
l=(int)tem%10;
for(i=0;i<10;i++)
{
write_data(Char[i]);
}
write_忽略(0x80+0x40);
write_data(wendu[h]);
write_data(wendu[l]);
delay_18B20(20000);//等待转换结束,不然转换结果会不稳定
delay_18B20(20000);
}
}
二煤气泄漏的检测
煤气泄漏报警器的系统电路组成
系统以多机方式与前端机通信。
本机采用主从工作模式。
单片机控制系统由于系统对实时性、精确性和可靠性要求非常高,系统采用单片机作为现场控制器,完成对煤气浓度信号采集、运算、控制和以及及时发出报警信息。
本系统采用多点采集,通过屏幕显示室内环境气体的浓度,当气体浓度大于某一具体的数值时,系统会自动报警!
所需硬件:
单片机,气体传感器,信号调理电路,A/D转换电路,声光报警电路.
系统原理:
监控系统的工作原理是利用半导体气敏传感器将煤气浓度变换为模拟电压信号,此模拟电压送到A/D转换器,变换成数字量送CPU进行数据分析。
并将数据通过数码管显示,当空气中的煤气浓度达到设定值时,报警启动。
用protuse仿真时,根据气敏电阻的特性,用滑动变阻器代替气敏电阻!
系统框图如下:
1.单片机采用AT89S51,这里不在详细介绍。
2.气体传感器
气体传感器是指对气体量敏感,并能将其转换成电信号,而电参数值随感受气体的浓度变化而变化的敏感元器件。
气体传感器的种类很多,但任何一个气体传感器应当具备以下特点:
选择性的检测某种单一气体,对共存的其他气体不响应或低响应;
对被测气体有较高的灵敏度,能有效检测允许范围内的气体浓度;
③对检测信号响应速度快;
④稳定性好;
⑤使用寿命长;
⑥成本低、使用与维护方便。
气体传感器是本设计检测系统的数据采集单元。
传感器(transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息按一定规律变换成电信号或其他所需形式的信息输出,以满足信息的输出、处理、存储和控制等要求。
传感器一般由敏感元件(sensingelement)、转换元件(transductionelement)和基本转换电路三部分组成
如图所示传感器工作原理图
我所选用的气体传感器是MQ-2传感器
MQ-2/MQ-2S气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。
当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。
使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。
MQ-2/MQ-2S气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。
这种传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。
MQ-2/MQ-2S气敏元件的结构和外形如图2-3-1所示(结构A或B),由微型Al2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。
封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。
基本电路如图2-3-2。
图2-3-1结构和外形
图2-3-2MQ-2基本电路
主要技术参数
3转换电路
由于转换电路所输出的模拟电压随着环境中气体浓度的不同而不同,所以根据技术参数表可知,我所选取的分压电阻为20k,供电电压为5v(见右图)。
当环境中气体浓度很高时,MQ-2的等效电阻很小,所以输出电压近似5v,符合A/D转换芯片是ADC0809模拟输入电压的要求。
4A/D转换电路
我所选用的A/D转换芯片是ADC0809,ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
是目前国内应用最广泛的8位通用A/D芯片,如下图
主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
引脚功能
ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。
下面说明各引脚功能。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地。
5声光报警电路
如右图(AltiumDesignger仿真图),当输入端(单片机I/O口)有触发信号(高电平)时,三极管导通,蜂鸣器和发光二极管亮,报警启动!
6LED显示电路
本系统采用数码管的动态显示,逐一位选(P2口),逐一显示(P0口)。
程序设计
Protuse软件仿真:
仿真结果:
用滑动变阻器的电阻变化代替气体传感器检测的气体浓度的变化,经A/D转化到单片机内进行处理,采到的数据送LED显示!
如果气体浓度大于某一数值,将发出声光报警!
程序如下:
/******************************************************************************/
#include
#defineucharunsignedchar
sbitdula=P2^0;
sbitwela=P2^1;
sbitp1_7=P1^7;
sbitCLK=P1^3;
sbitST=P1^2;
sbitOE=P1^0;
sbitEOC=P1^1;
sbitwei1=P2^1;
sbitwei2=P2^2;
sbitwei3=P2^3;
sbitwei4=P2^5;
sbitwei5=P2^6;
sbitwei6=P2^7;
ucharcodedulatab[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x40};//数字编码0-9
ucharcodewelatab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位控制字
ucharcount;
voiddelay(uchartime)//延时
{
uchari,j;
for(i=0;i