智能家居设计报告(DOC)

智能家居设计报告(DOC)
智能家居设计报告(DOC)

|

南通大学

传感器与检测课程设计报告书。

学院:电气工程学院

班级:电122

姓名:陈晨

学号:50

[

目录

一.智能家居监控系统设计 (1)

设计目的及要求 (1)

智能家居——温度检测 (1)

DS18B20的简介 (1)

设计思想 (2)

Proteus仿真 (3)

智能家居——外人闯入 (3)

干簧管简介 (3)

设计思想 (4)

Proteus仿真 (4)

智能家居——气体泄漏/火灾检测 (4)

MQ-2/MQ-7气体传感器 (4)

设计思想 (6)

proteus仿真 (7)

参考文献: (7)

附件 (8)

一.智能家居监控系统设计

设计目的及要求

虽然视频监控系统在20世纪90年代末就在中国市场兴起,有很多公司推出了自己的智能家居系统,但是现在仍未得到普及,而且目前智能家居的国际标准尚未成热,因此智能家居监控系统存在广阔的发展空间。利用所学的传感器与检测技术知识,实现家居温度、煤气泄漏、外人闯入、火灾(烟雾)的检测(以上检测项目必做。在此基础上增加检测项目并具有可行性,加分。除环境监测项目外,也可增加人体信号检测等。)。各检测节点可通过无线方式连接到主机,检测到危险信号后,主机可采用声光报警或远程报警。

要求(1)用Protel画出设计原理图;

(2)采用Quaters II、Maxplus II、multisim(EWB)、pspice、Proteus 中的一种或几种软件,完成系统电路图部分或全部仿真,在设计说明书中体现仿真结果;

(3)写设计说明书;

(4)每位同学必做;

智能家居——温度检测

1.2.1 DS18B20的简介

DS18B20是典型的单总线数字式温度传感器,工作电压为3~5v,测量结果以9~12位数字量方式串行传送,在使用中不需要任何外围元件。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

DS18B20产品的特点

只要求一个端口即可实现通信。

在DS18B20中的每个器件上都有独一无二的序列号。

实际应用中不需要外部任何元器件即可实现测温。

测量温度范围在-到+之间。

数字温度计的分辨率用户可以从9位到12位选择。

内部有温度上、下限告警设置。

TO-92封装的DS18B20的引脚排列见右图,其引脚功能描述见表

序号名称引脚功能描述

1GND地信号

2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,

可向电源提供电源

3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地

表DS18B20详细引脚功能描述

DS18B20 的温度操作是使用16 位,也就是说分辨率是。BIT15~BIT11 是符号位,为了就是表示转换的值是正数还是负数。

1.2.2 设计思想

由于考虑到家居室内的环境比较良好,且不需要相当精确的检测,于是采用集成温度传感器来检测室内温度。该系统由集成温度传感器DS18B20 发光二极管(灯光报警) led显示单片机组成。在led上显示温度值当室内温度低于某个数值或者高于某个数值时,发光二极管将发出报警信息。程序见附录。

1.2.3 Proteus仿真

智能家居——外人闯入

1.3.1干簧管简介

干簧管通常有两个软磁性材料做成的、无磁时断开的金属簧片触点,有的还有第三个作为常闭触点的簧片。这些簧片触点被封装在充有惰性气体(如氮、氦等)或真空的玻璃管里,玻璃管内平行封装的簧片端部重叠,并留有一定间隙或相互接触以构成开关的常开或常闭触点。干簧管比一般机械开关结构简单、体积小、速度高、工作寿命长;而与电子开关相比,它又有抗负载冲击能力强等特点,工作可靠性很高。

干簧管的工作原理非常简单,两片端点处重叠的可磁化的簧片、密封于一玻璃管中,两簧片分隔的距离仅约几个微米,玻璃管中装填有高纯度的惰性气体,在尚未操作时,两片簧片并未接触、外加的磁场使两片簧片端点位置附近产生不同的极性,结果两片不同极性的簧片将互相吸引并闭合。依此技术可做成非常小尺寸体积的切

换组件,并且切换速度非常快速、且具有非常优异的信赖性。永久磁铁的方位和方向确定何时以及多少次开关打开和关闭。

如此形成一个转换开关:当永久磁铁靠近干簧管或绕在干簧管上的线圈通电形成的磁场使簧片磁化时,簧片的触点部分就会被磁力吸引,当吸引力大于簧片的弹力时,常开接点就会吸合;当磁力减小到一定程度时,接点被簧片的弹力打开。

1.3.2 设计思想

以干簧管作为传感器,在主人进入家门前需要先按下一个小开关,干簧管动作但是不会产生警报。在有外人闯入时,因为不知道有开关的存在,干簧管动作,小灯闪烁,蜂鸣器报警。起到防止外人进入的作用。

1.3.3 Proteus仿真

智能家居——气体泄漏/火灾检测

1.4.1 MQ-2/MQ-7气体传感器

MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体

浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。 MQ-2气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。这种传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。

由于转换电路所输出的模拟电压随着环境中气体浓度的不同而不同,所以根据技术参数表可知,我所选取的分压电阻为20k,供电电压为5v (见右图)。当环境中气体浓度很高时,MQ-2的等效电阻很小,所以输出电压近似5v,符合A/D转换芯片是ADC0809模拟输入电压的要求。

MQ-7气体传感器的气敏材料,是用在清洁空气中电导率低的二氧化锡(SnO2)。采用高低温循环检测方式低温(加热)检测一氧化碳,传感器的电导率随空气中一氧化碳气体浓度增加而增大,高温(加热)清洗低温时吸附的杂散气体。使用简单的电路即可将电导率的变化,转换为与该气体浓度相对应的输出信号。 MQ-7传感器对一氧化碳的灵敏度高,这种传感器可检测多种含一氧化碳的气体,是一款适合多种应用的低成本传感器。

MQ-2基本电路

1.4.2 设计思想

利用MQ-2测量烟雾浓度,MQ-7测量可燃气体浓度,输入ADC0809中,分别进行AD 转换,将数字信息送入单片机中,当浓度超标时,相应的报警装置会动作,用黄灯闪加蜂鸣器间隔发声表示烟雾超标,用红灯加蜂鸣器长发声表示可燃气体超标。程序见附录。

1.4.3 proteus仿真

参考文献:

[1]. 张毅刚. 基于Proteus的单片机课程的基础实验与课程设计.人民邮电出版社2012

[2].施湧潮. 传感器检测技术. 国防工业出版社2007

[3].张毅刚. 单片机原理及应用. 北京:高等教育出版社2008

[4].赵勇. 传感器敏感材料与器件. 清华大学出版社2012

[5].张洪润. 传感器应用电路200例. 北京航空航天大学出版社2006

[6].张宪. 传感器与测控电路. 化学工业出版社2011

[7].徐湘元. 传感器及信号调理技术. 机械工业出版社2012

[8]周坚. 单片机轻松入门[M]. 北京:北京航空航天出版社 2002

[9]孙育才. MCS-51系列单片微型计算机及其应用[M]. 南京:东南大学出版社2004

[10]公孙茂,马宝匍,孙晨.单片机入口接口实例集[M]. 北京:北京航空航天出版社 2002

[11]求是科技. PIC单片机典型模块设计和实例导航[M]. 北京:人民邮电出版社2005

[12]龙泽明,顾立志,王桂莲,陈光军. MCS-51单片机原理及工程应用[M]. 北京:

国防工业出版社 2005.

[13]胡辉.王晓,戴永成. 单片机原理及应用设计[M]. 北京:中国水利水电出版社2005

[14]蔡菲娜. 单片微型计算机原理和应用[M]. 杭州:浙江大学出版社 2003

[15].李广第等. 单片机基础. 北京航天航空大学出版

[16].吴国敬等.单片机应用和技术. 中国电力出版

[17]. 王卫星等.单片机原理与应用开发技术. 中国水利水电出版社

附件1. 温度检测

#include<>

#include ""

sbit DQ = P2^0;//DQ端

sbit p3_2 = P3^2;

sbit p3_5 = P3^5;

unsigned char temp1;//高位

unsigned char temp0;//低位

unsigned char f;

unsigned char

duan[10]={0xC0,0x0F9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

float tem;

void delay_18B20(int i)

{

while(i--);

return;

}

void delay(unsigned int count)

{

unsigned int i;

while(count)

{

i=200;

while(i>0)i--;

count--;

}

}

void Delay_us(unsigned char n)

{

unsigned char i;

i=0;

while(i

{i++;}

return;

}

void wr_ds18_1(char dat)//温度传感器写操作设置{

signed char idata i=0;

unsigned char idata j;

bit testb;

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_();

}

}

}

void Init_18B20(void)

{

DQ=0;

delay_18B20(103);

DQ=1;

delay_18B20(4);

delay(1);

wr_ds18_1(0xcc);

wr_ds18_1(0x44);}

unsigned char ReadByte(void)//温度传感器读操作{

unsigned char i,k;

i=8;

k=0;

while(i--)

{

DQ=1;

_nop_();

_nop_();

DQ=0;

k=k>>1;

DQ=1;

if(DQ) k|= 0x80;

Delay_us(60);

}

return(k);

}

void tempture(void)

{

DQ=0;

delay_18B20(103);

DQ=1;

delay_18B20(4);

delay(1);

wr_ds18_1(0xcc);

wr_ds18_1(0xbe);

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;

}

void main()

{

p3_2=1;

while(1)

{

int h,l;

Init_18B20(); //18B20初始化// lcd_clear();

tempture(); //使用该函数获得温度

if(tem>34||tem<18) {p3_2=0;}//不正常温度声音报警else {p3_2=1;}

h=(int)tem/10;

l=(int)tem%10;

P1=duan[l];

P0=duan[h];

delay_18B20(20000); //等待转换结束 delay_18B20(20000);

}

}

2.外人闯入

#include<>

sbit P2_7=P2^7;

sbit P1_0=P1^0;

void delay(char time)

{

char i,j;

for(i=0;i

{

for(j=0;j<110;j++;

}

}

void main()

{

EA=1;

P2_7=0;

while(1)

{

if(P1_0==0)EX0=0;

else EX0=1;

}

}

void in() interrupt 0

{

P2_7=1;

delay(100);

P2_7=0;

delay(100);

}

3.气体泄漏/火灾检测

#include <>

#define uchar unsigned char

sbit p1_7=P1^7;

sbit CLK=P1^3;

sbit ST=P1^2;

sbit OE=P1^0;

sbit EOC=P1^1;

sbit P1_6=P1^6;

sbit P2_0=P2^0;

uchar count;

void delay(uchar time) //延时

{

uchar i,j;

for(i=0;i

{

for(j=0;j<110;j++)

;

}

}

void init()

{

P2=0xff;

EA = 1;

TMOD = 0x02; //T0方式2

TH0=216; //T0中断产生CLK信号 TL0=216;

TR0=1;

ET0=1;

ST=0;

OE=0;

}

uchar adin1()

{

uchar value;

OE=0;

EOC=1;

ST=0;

delay(10);

ST=1;

delay(10);

ST=0;

while(!EOC);

delay(10);

OE=1;

delay(1);

value=P3;

OE=0;

return value; }

void main()

{

uchar in0,in1;

init();

P2=0;

while(1)

{

P2_0=0;

in1=adin1();

if(in1<150) //设定的报警值

{p1_7=0;

delay(100);

p1_7=1;

delay(100);

}

else

{p1_7=0;}

P2_0=1;

in0=adin1();

if(in0<100)

{

P1_6=1;

}

else P1_6=0;

}

}

void timer0(void) interrupt 1

{

CLK=~CLK;

})

相关主题
相关文档
最新文档