文档视界 最新最全的文档下载
当前位置:文档视界 › 智能环境监测及报警系统的设计

智能环境监测及报警系统的设计

智能环境监测及报警系统的设计
智能环境监测及报警系统的设计

摘要

本设计采用单片机ATmage16作为运算、控制核心,应用了NRF905作为信息的远程无线传送,用LCD显示出现场的相关信息(温度湿度,有害气体,烟雾浓度)并进行报警信息等;同时控制放音电路达到报警有关信息。本系统具有一定的智能化程度和人性化,精度较高,还可在此基础上进行其他功能和应用的扩展。

Abstract

This design uses the monolithic ATmage16 as control core operations, and the application of information NRF905 as remote wireless transmission . The scene use LCD to display the related information (temperature, humidity, harmful gases, smoke concentration) and alarm information, etc.This system has certain level of intelligence and humanization, high precision, and can also be based on other functions and application extension.

Keywords: Single-chip Microcomputer In System Programmable Lattice SPI

第1章前言

烟雾报警器有离子式烟雾报警器、光电式烟雾报警器、对射式烟雾报警器(红外对射、激光对射)等。烟雾无线报警装置世界各国均有大量的产品。其特点有:

1.网络化火灾自动报警系统网络化是用计算机技术将控制器之间、探测器之间、系统内部、各个系统之间以及城市“ll9”报警中心等通过一定的网络协议进行相互连接,实现远程数据的调用,对火灾自动报警系统实行网络监控管理,使各个独立的系统组成一个大的网络,实现网络内部各系统之间的资源和信息共享,使城市“ll9”报警中心的人员能及时、准确掌握各单位的有关信息,对各系统进行宏观管理,对各系统出现的问题能及时发现并及时责成有关单位进行处理,从而弥补现在部分火灾自动报警系统擅自停用,值班管理人员责任心不强、业务素质低、对出现的问题处置不及时、不果断等方面的不足。

2 智能化火灾自动报警系统智能化是使探测系统能模仿人的思维,主动采集环境温度、湿度、灰尘、光波等数据模拟量并充分采用模糊逻辑和人工神经网络技术等进行计算处理,对各项环境数据进行对比判断,从而准确地预报和探测火灾,避免误报和漏报现象。发生火灾时,能依据探测到的各种信息对火场的范围、火势的大小、烟的浓度以及火的蔓延方向等给出详细的描述,甚至可配合电子地图进行形象提示、对出动力量和扑救方法等给出合理化建议,以实现各方面快速准确反应联动,最大限度地降低人员伤亡和财产损失,而且火灾中探测到的各种数据可作为准确判定起火原因、调查火灾事故责任的科学依据。

3 多样化

(1)火灾探探测技术的多样化。我国目前应用的火灾探测器按其响应和工作原理基本可分为感烟、感温、火焰、可燃气体探测器以及两种或几种探测器的组合等,其中,感烟探测器一枝独秀,但光纤线性感温探测技术、火焰自动探测技术、气体探测技术、静电探测技术、燃烧声波探测技术、复合式探测技术代表了火灾探测技术发展和开发应用研究的方向。此外,利用纳米粒子化学活性强、化学反应选择性好的特性,将纳米材料制成气体探测器或离子感烟探测器,用来探测有毒气体、易燃易爆气体、蒸气及烟雾的浓度并进行预警,具有反应快、准确性高的特点,目前已列为我国消防科研工作者的重点研究开发课题。

(2)设备连接方式的多样化。随着无线通信技术的成熟、完善和新型有线通信材料的研制,设备间、系统间可根据具体的环境、场所的不同而选择方便可靠的通信方式和技术,设备间可以用无线技术进行连接,形成有线、无线互补,同时新型通信材料的研制开发可弥补铜线连接存在的缺陷。而且各探测器之间也可进行数据信息传递和交流,使探测器的设置从枝状变成网状,探测器不再是各自独立的,使系统间、设备间的信息传递更方便、更可靠。

此环境监控系统功能是检测小范围(特别是小室内、需要特定保护的物体,如保险箱等)的温度和有害气体的,根据有害气体的特性,用有害气体传感器和温度传感器对现场气体和温度进行实时检测,传感器采集数据送到单片机,单片机对数据进行处理分析,再通过控制无线发射模块将数据发射出去,无线接收模块接收到数据将数据传输到单片机,单片机进行读取和判断,输出不同的状态显示到液晶屏上,若发生火灾蜂鸣器还将发出报警声音。本系统具有自动恢复功能,如果由于偶然的原因产生自我报警,系统将在满足条件的情况下回复系统的正常运行,如:当有害气体泄露(乙烷)时,系统将恢复正常运行。进行报警等。

第2章硬件及各部分电路介绍

此系统主要用了ATmega16单片机作为控制芯片,用NRF905芯片组成的无线传输模块,DS18B20温度传感器,MQ6有害器体传感器OCM12864液晶显示器等。

2.1 ATmega16单片机的介绍

图2.1 ATmega16引脚图

ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。

ATmega16 AVR 内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算术逻辑单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10倍的数据吞吐率。

ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512 字节EEPROM,1K 字节SRAM,32个通用I/O 口线,32个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的

灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。

工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声;Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。

本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(Application Flash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内, ATmega16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。ATmega16 具有一整套的编程与系统开发工具,包括:C 语言编译器、宏汇编、程序调试器/ 软件仿真器、仿真器及评估板。

2.2 nRF905的介绍

图2.2 nRF905引脚及应用图

2.2.1 nRF905概述

nRF905是挪威Nordic公司推出的单片射频发射器芯片,工作电压为

1.9-3.6V,32引脚QFN封装(5mm×5mm),工作于433/868/915MHz3个ISM频道(可以免费使用)。nRF905可以自动完成处理字头和CRC(循环冗余码校验)的工作,可由片内硬件自动完成曼彻斯特编码/解码,使用SPI接口与微控制器通信,配置非常方便,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,在接收模式时电流为1

2.5mA。 nRF905单片无线收发器工作由一个完全集成的频率调制器,一个带解调器的接收器,一个功率放大器,一个晶体震荡器和一个调节器组成。ShockBurst工作模式的特点是自动产生前导码和CRC,可以很容易通过SPI接口进行编程配置。

2.2.2 nRF90的工作模式

nRF905采用Nordic公司的VLSI ShockBurst技术。ShockBurst技术使nRF905能够提供高速的数据传输,而不需要昂贵的高速MCU来进行数据处理/时钟覆盖。通过将与RF协议有关的高速信号处理放到芯片内,nRF905提供给应用的微控制器一个SPI接口,速率由微控制器自己设定的接口速度决定。nRF905通过ShockBurst 工作模式在RF以最大速率进行连接时降低数字应用部分的速度来降低在应用中的

平均电流消耗。在ShockBurst RX模式中,地址匹配AM和数据准备就绪DR信号

通知MCU一个有效的地址和数据包已经各自接收完成。在ShockBurst TX模式中,nRF905自动产生前导码和CRC校验码,数据准备就绪DR信号通知MCU数据传输已经完成。总之,这意味着降低MCU的存储器需求也就是说降低MCU成本,又同时缩短软件开发时间。

2.2.3 nRF905的配置

nRF905的所有配置都通过SPI接口进行。SPI接口由5个寄存器组成,一条SPI指令用来决定进行什么操作。SPI接口只有在掉电模式和Standby模式是激活的。

1、状态寄存器(Status-Register)

寄存器包含数据就绪DR和地址匹配AM状态。

2、RF配置寄存器(RF-Configuration Register)

寄存器包含收发器的频率、输出功率等配置信息。

3、发送地址(TX-Address)

寄存器包含目标器件地址,字节长度由配置寄存器设置。

4、发送有效数据(TX-Payload)

寄存器包含发送的有效ShockBurst数据包数据,字节长度由配置寄存器设置。

5、接收有效数据(TX-Payload)

寄存器包含接收到的有效ShockBurst数据包数据,字节长度由配置寄存器设置。在寄存器中的有效数据由数据准备就绪DR指示。

2.2.4 nRF905的接口

1、模式控制接口:

该接口由 PWR 、TRX_CE、TX_EN组成控制由nRF905组成的高频头的四种工作模式:掉电和 SPI 编程模式;待机和SPI编程模式;发射模式;接收模式。

2、SPI接口:

SPI 接口由 CSN、SCK、MOSI以及MISO组成。在配置模式下单片机通过SPI 接口配置高频头的工作参数;在发射/接收模式下单片机SPI接口发送和接收数据。

3、状态输出接口:

提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。

3.2.5 外围的RF信息

1、晶体规格

为了实现晶体振荡器低功耗和快速启动时间的解决方案,推荐使用低值晶体

负载电容。指定CL=12pF是可以接受的。但是,也可能增大到16pF。指定一个晶体并行相等电容,Co=1.5pF也是很好的,但这样一来会增加晶体自身成本。典型的设定晶体电容Co=1.5pF,指定Co_max=7.0pF。

2、外部参考时钟

一个外部参考时钟如MCU时钟,可以用来代替晶体震荡器。这个时钟信号应该直接连接到XC1引脚,XC2引脚为高阻态。当使用外部时钟代替晶体时钟工作时,始终必须工作在Standby模式以降低电流消耗。如果器件被设置成Standby模式而没有使用外部时钟或晶体时钟,则电流消耗最大可达1mA。

3、微处理器输出时钟

在默认情况下,微处理器提供输出时钟。在Standby模式下提供输出时钟将增加电流消耗。在Standby模式电流消耗取决于频率和外部晶体负载、输出时钟的频率和提供输出时钟的电容负载。

4、天线输出

ANT1和ANT2输出脚给天线提供稳定的RF输出。这两个脚必须有连接到VDD_PA 的直流通路,通过RF扼流圈,或者通过天线双极的中心点。在ANT1和ANT2之间的负载阻抗应该在200-700Ω范围内,通过简单的匹配网络或RF变压器(不平衡变压器)可以获得较低的阻抗。

2.3 DS-18B20的介绍

图2.3 DS18B20引脚图

2.3.1技术性能描述

1、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

2、测温范围-55℃~+125℃,固有测温分辨率0.5℃。

3、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温。

4、工作电源: 3~5V的直流电压。

5、在使用中不需要任何外围元件。

6、测量结果以9~12位数字量方式串行传送。

3.3.2应用范围

1、该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域。

2、轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。

3、汽车空调、冰箱、冷柜、以及中低温干燥箱等。

4、供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制。

2.3.3接线说明

DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。主要首先提供以下功能命令之一:1、读ROM, 2、ROM匹配, 3、搜索ROM, 4、跳过ROM, 5、报警检查。这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有多少,什么样的设备。

若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH 和TL都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH,TL指令以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。所有数据的读、写都是从最低位开始。

2.3.4内部ROM结构

64位光刻ROM的前8位是DS18B20的自身代码,接下来的48位为连续的数字代码,最后的8位是对前56位的CRC校验。64-位的光刻ROM又包括5个ROM的功能命令:读ROM,匹配ROM,跳跃ROM,查找ROM和报警查找。64-位光刻ROM的结构图如图4.7所示。

2.3.5温度的读取

DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以0.0625便为所测的温度,还需要判断正负。前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。16位数字摆放是从低位到高位。

2.4 MQ6的介绍

图2.4 MQ6引脚及应用图

2.4.1传感器结构

MQ-6传感器由气体敏感层、电极、测量电极引线、加热器、陶瓷管、防爆网、卡环、基座、针状管脚构成。

工作原理

上电加热器开始加热,加热到一定程度时若遇到有害气体AB间的电阻会减小,此时RL的负载电压会升高,读取RL的负载电压完成信号的采集。

2.5 OCM1284的介绍

OCM12864是汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192 个中文汉字(16X16 点阵)、128个字符(8X16 点阵)及64X256 点阵显示RAM(GDRAM)。供电电压为3.3V-5V。

可以调节 LED 背光和多种软件功能:光标显示、画面移位、自定义字符、睡

眠模式等。OCM12864具有两种工作方式:串行和并行。串行可以节省单片机的I/O 口,但是数据传输速度慢;并行占的单片机I/O口要多一些,但是数据传输速度快。

2.5 各部分电路图

2.5.1电源模块

图2.5电源电路原理图

电源模块使用7805提供5V电压,ASM11173.3提供3.3V电压。其为单片机、LCD和nRF905提供电压,nRF905的工作电压是3.3V,单片机和LCD的工作电压是5V。电容C11、C12、C13和C16起滤波作用,滤除电路中的高频部分。电容C9、C10、C14和C15是减小纹波,防止电路的负载过大影响电压的稳定,如图2.5所示。

2.5.2主控模块

图2.6主控部分电路图

主控模块采用采用ATmega16单片机其包含了复位电路,外部震荡电路和ISP 下载接口。D1、D2和D3构成LED指示模块,方便程序的调试。AN1、AN2、AN3、AN4、AN5和AN6构成按键模块,是整个系统的预留资源,方便程序的调试及测试。如图2.6所示

2.5.3 LCD显示模块

图2.7 LCD电路图

LCD显示模块采用的是并口数据传输方式,但是也可以使用串口。R2是用来调节背光使LCD能正常显示,如图2.7所示

2.5.4 蜂鸣器驱动模块

图2.8 报警电路图

采用9013 PNP型三极管驱动蜂鸣器,蜂鸣器加到集电极。当P2连通Q1的基极为高电平时蜂鸣器就被驱动发声,当Q1基极为低电平时三极管截止,蜂鸣器停止发声,如图2.8所示。

第3章软件介绍

3.1 ICCAVR简介

ICCAVR 是一种使用ANSI 标准C 语言来开发微控制器(MCU)程序的一个工具,它是一个综合了编辑器和工程管理器的集成工作环境(IDE)。源文件全部被组织到工程之中,文件的编辑和工程(project)的构筑也在IDE 的环境中完成。编译错误在状态窗口中显示,用鼠标单击编译错误时,光标会自动跳转到出错行。这个工程管理器还能直接产生INTEL HEX格式的烧写文件和可以在AVR Studio 中调试的COFF 格式的调试文件。ICCAVR的应用构筑向导,在Tools 栏中选择“ApplicationBiulder”或者直接点击快捷工具栏中的“Application Biulder”图标,就可以打开应用构筑向导对话框,可以根据需要设定芯片种类,各个端口初始值,是否使用定时器,中断,UART等,选好以后单击“OK”就可以得到所需的硬件初始化程序段,非常可靠而且方便。

创建并编译一个工程文件的简要步骤:

1、新建一个源文件

从file 菜单中选择new,创建一个新文件,在改文件中输入源程序并进行编辑和修改,然后存盘,在存盘时必须指定文件类型,如命名为:try.c 。写一个新文件的步骤:首先用Biulder 初始化需要用到的硬件资源,生成初始化程序,然后再写需要的代码实现所要的功能。

2、新建一个project

从projrct 菜单中选择new 命令,IDE 会弹出一个对话框,在对话框中用户可以指定工程存放的文件夹和工程的名称。在建立一个新工程之后,在工程管理器的窗口会出现三个子目录,Files, Headers, Documents,这时就可以将要编译的文件添加到project 中了。

3、把文件添加到工程中可以在project-files 里单击右键,选择需要添加的文件;也可以在编辑窗口中单击右键选择弹出窗口的“Add To Project”命令。

4、编译源文件

在编译之前特别要注意在Project Options 中选择与硬件相应的芯片。在project 中选择make project,也可以直接单击快捷键F9,这时要是有错则会弹出出错信息,修改调试正确以后单击快捷键ISP 就可以烧写到硬件中去了。

3.2 Altium Designer Winter 09 介绍

Altium Designer Winter 09 提供了唯一一款统一的应用方案,和综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer Winter 09 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能。

创新电子设计平台

Altium 创新电子设计平台集成了广受好评的 Altium Designer Winter 09 一体化电子设计软件和 Altium 可重构硬件平台 NanoBoard 系列。该方法将器件智能置于设计流程的核心。由此形成了一个完整的一体化电子设计环境,以全新的方式创建和推出智能型关联电子产品。

板级设计

Altium Designer Winter 09的板级设计功能可完全定义并实现设计中的物理元素。强大的规则驱动设计、版图和编辑环境可在直观高效的环境中完全控制设计中的各个方面。

管理库

Altium Designer Winter 09 提供综合的器件数据管理和库资源,无论您组织的大小或需求是什么,均可控制部件的使用。

设计制造

Altium Designer Winter 09 起到设计和制造间的桥梁作用,可管理所有制造数据的生成和验证。

第4章程序设计

4.1发射部分

程序流程图:

图4.1 发送部分流程图

发射部分是先对nRF905进行初始化设置,并设置为发射。程序通过定时器隔一段时间对各点的温度和有害气体的值进行采样,将采集转换的值存到一个数组里最后通过nRF905进行数据的发射,如图4.1所示。

4.2接收部分

程序流程图:

图4.2 接收部分流程图

接收部分首先是对nRF905和液晶显示进行初始化,然后尽心载波的检测,若检测到载波就对LCD进行屏幕的显示设置,继续检测是否接收数据成功,若成功就读取数据,判断数据是否包含火灾信息,若包含就发出火灾报警,没有就显示状态数据。在此若检测到载波但是没有接收到数据,超过一定的时间就发出断开连接信息,如图4.2所示。

第5章系统测试

5.1系统测试

程序写好后进行整个系统的测试,主要是对系统的反应速度、自恢复性和稳定性进行测试。

当外部条件发生变化时,系统能进行快速的反应。在测试中使DS18B20的温度升高和用烟头熏有害气体传感器,看系统的显示状态。当撤去外部条件时看系统是否能正常恢复。另外断开发射部分的电源,看接收部分的状态,然后再连上发射部分的电源,观察接收部分是否能够连接成功,恢复到系统的正常运行状态。当反应速度和自恢复能力都没问题时,接下来就对系统的稳定新进行测试,使系统连续运行一段时间看系统能否保持设定的程序运行,有没有跑飞和死机的情况。

在整个系统的测试过程中,经过多次的程序修改后系统能及时反应状态的变化,能自动恢复到各个状态,且系统能稳定运行。

5.2系统的性能指标

系统可对烟雾和预设温度进行检测并进行无线传送和主机报警、显示。检测点数可以多达255个;环境报警温度为50度(温度可根据环境修改范围为-55℃~+125℃),其工作电压为3V-5V (直流)。测量结果以9~12位数字量方式串行传送。MQ-6有害气体传感器其工作电压为5V;适用气体:液化气、异丁烷、丙烷;探测范围:300~10000ppm;灵敏度( R in air/R in typical) gas≥5

1.系统检测发射模块的部分程序源代码。

#include

#include

uchar zh12 = 0;

void delay(uint ms)

{

uint x;

uchar y;

for(x = ms;x > 0;x--)

for(y = 110;y > 0;y--);

}

//--------------------------------SPI写函数void SpiWrite(unsigned char send)

{

unsigned char i;

DATA_BUF=send;

for (i=0;i<8;i++)

{

if (DATA7)

MOSI_1;

else

MOSI_0;

SCK_1;

DATA_BUF=DATA_BUF<<1;

SCK_0;

}

}

//-------------------------初始化寄存器

void Config905(void)

CSN_0;

SpiWrite(WC);

for (i=0;i<10;i++)

{

SpiWrite(RFConf[i]);

}

CSN_1;}

////////////////初始化nRF905/////////////////// void nRF905Init(void)

{

DDRC = 0X40;

PORTC = 0X60;

DDRB = 0XFF;

PORTB = 0XFF;

CSN_1;

SCK_0;

PWR_1;

TRX_CE_0;

TXEN_0;

}

/////////////发送数据

uchar TxAddress[] = {0xBB,0XBB,0XBB,0XBB};

void TxPacket(uchar *TxRxBuf)

{

uchar i;

CSN_0;

SpiWrite(WTA);

for (i=0;i<4;i++)

{ SpiWrite(TxAddress[i]);}

CSN_1;

Delay(1);

CSN_0;

SpiWrite(WTP);

for (i=0;i<8;i++)

{

SpiWrite(TxRxBuf[i]);

}

CSN_1;

TRX_CE_1;

Delay(1);

TRX_CE_0; } void SetTxMode(void)

{

TRX_CE_0;

TXEN_1;

Delay(1); }

void w_order(uchar cmd)

{

uchar i;

DDRA |= BIT(0);

for(i=0;i<8;i++)

{

if(cmd&(0x01<

{

CLRPA0;

SETPA0;

delay1(60); } else { CLRPA0;

相关文档
相关文档 最新文档