基于51单片机的烟雾探测器报告 本文关键词:探测器,单片机,烟雾,报告
基于51单片机的烟雾探测器报告 本文简介:西华大学课程设计说明书1前言烟雾浓度测试仪,也以根据工程的要求同各种灭火设施和通讯装置联动,以形成中心控制系统。即由自动报警、自动灭火、安全疏散诱导、系统过程显示、消防档案管理等组成一个完整的消防控制系统。火灾探测器是探测火灾的仪器,由于在火灾发生的阶段,将伴随产生烟雾、高温和火光。这些烟、热和光可
基于51单片机的烟雾探测器报告 本文内容:
西华大学课程设计说明书
1
前言
烟雾浓度测试仪,也以根据工程的要求同各种灭火设施和通讯装置联动,以形成中心控制系统。即由自动报警、自动灭火、安全疏散诱导、系统过程显示、消防档案管理等组成一个完整的消防控制系统。
火灾探测器是探测火灾的仪器,由于在火灾发生的阶段,将伴随产生烟雾、高温和火光。这些烟、热和光可以通过探测器转变为电信号报警或使自动灭火系统启动,及时扑灭火灾。
1.1烟雾探测器工作原理
1.1.1
烟雾探测器种类
目前常用的有三种步进电动机:
(1)
离子感烟式探测。它是在电离室内含有少量放射性物质,可使电离室内空气成为导体,允许一定电流在两个电极之间的空气中通过,射线使局部空气成电离状态,经电压作用形成离子流,这就给电离室一个有效的导电性。
(2)
光电感烟探测器。它是利用起火时产生的烟雾能够改变光的传播特性这一基本性质而研制的。
(3)
红外光束感烟探测器。它是对警戒范围内某一线状窄条周围烟气参数响应的火灾探测器。
1.1.2
工作原理
烟雾探测器就是通过监测烟雾的浓度来实现火灾防范的,烟雾探测器内部采用离子式烟雾传感,离子式烟雾传感器是一种技术先进,工作稳定可靠的传感器,被广泛运用到各种消防报警系统中,性能远优于气敏电阻类的火灾报警器。
它在内外电离室里面有放射源镅241,电离产生的正、负离子,在电场的作用下各自向正负电极移动。在正常的情况下,内外电离室的电流、电压都是稳定的。一旦有烟雾窜逃外电离室。干扰了带电粒子的正常运动,电流,电压就会有所改变,破坏了内外电离室之间的平衡,于是无线发射器发出无线报警信号,通知远方的接收主机,将报警信息传递出去。
2
总体方案
2.1
方案比较
方案一:
采用通用的低成本单片机作为下位机的主控制器,外加ADC0832采集烟雾传感器的模拟信号,经过单片机的运算处理过后,把数据通过外加的USB模块传到PC机,PC机上用VC++软件上位机对烟雾信号实时监控,若达到阈值,则报警。
图2.1
方案一
方案二:
采用飞思卡尔公司具有低功耗的内核设计为ARM
COTEX
M4的32bit高性能单片机Kinetis60作为下位机的主控制器
,该单片机内置高性能的16bit
ADC,USB2.0模块,省去很多处部电路。烟雾模拟信号经过单片机的运算处理过后,通过USB2.0直接传到PC机,PC机上用LabVIEW软件上位机对烟雾信号实时监控,若达到阈值,则报警。
图2.2
方案二
2.2
方案论证和选择
方案论证:方案一使用价格低廉的8位单片机,另外增加了ADC芯片和USB模块芯片,电路相对比较复杂,上位机软件选用微软公司的VC++,它具有十分优秀的灵活性,便于开发人员的灵活设计,但程序设计相对复杂。方案二使用高性能的单片机Kinetis60,它片内外设丰富,方便设计,但是价格相对较高,上位机软件选用NI公司的图形化编程软件LabVIEW,它编程方便,开发十分方便,但灵活性相对VC++差一些.
方案选择:根据设计的设计难易程度和可操作性,由于本设计更多偏向于设计的便捷性和较强开放性,经过和指导老师商量,采用飞思卡尔公司具有低功耗的内核设计为ARM
COTEX
M4的32bit高性能单片机Kinetis60作为下位机的主控制器,它片内外设丰富能省去很多处部电路,PC机上用LabVIEW软件上位机对烟雾信号实时监控,编程方便和开发十分方便,所以我最终选择方案二来进行课程设计。
3
单元模块设计
本论文中的烟雾浓度测试仪以K60单片机为控制核心,采用MQ-2型电阻式半导体传感器采集烟雾信息。
首先,传感器送来的烟雾浓度对应的微小的电压信号经过放大,转化成较大的电压信号送入片内
A/D转换、然后送入单片机进行浓度比较,并判断浓度值是否超出报警限,当浓度处于正常状态绿灯长亮,当烟雾浓度超出设定的限定值时,发出声音报警并伴随红灯闪亮。另外由于烟雾传感器需要在加热状态下工作,温度越高,反应越
快,响应时间和恢复时间就越快。为提高响应时间,保证传感器准确地、
稳定地工作,报警器需要向烟雾传感器持续输出一个5V的电压。
3.1
各单元模块功能介绍及电路设计
3.1.1
单片机引脚图
图3.1
单片机引脚图
上图为单片机的引脚图,该单片机共有28个引脚,其片内外设相当丰富,主频最高可达100M。单片机要求用3.3V电压供电,我选用LM1117为其供电,输出通过LRC滤波网络滤除纹波;单片机需要晶振才能正常工作,考虑其性能,我选用50MHZ的有源晶振作为时钟输入;其调试接口采用方便的JTAG协议,方便设计和在线调试,是快速高效地完成课题设计的有力保证。
3.1.2
感烟传感器电路
本设计中采用的MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。当处于200~300°C温度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒受
到该烟雾的调制而变化,就会引起表而电导率的变化。利用这一点就可以获得这种烟雾存在的信息。
图3.
2
烟雾传感器电路
烟雾传感器在最佳工作条件下,接触同一种烟雾,其电阻值RS随气
体浓度变化的特性称之为灵敏度特性,用K表示。
K=RS
/
R0
,式中,R0为烟雾传感器洁净空气条件下的电阻值,RS为烟雾传感器在一定浓度的检测烟雾中的电阻值。
虽然对于不同的烟雾,器件灵敏度特性K的值也会各有差异,但是它们都遵循同一规律,
log
RS
=
m
logC
+
n
式中,m为器件相对烟雾浓度变化的敏感性,又称烟雾分离能,对于
烟雾,m值为1/2~1/3;C为检测烟雾的浓度。n为与检测烟雾,器件材料有关,并随测试温度和材料中有无增感剂而有所不同。
3.1.3
LED电路
本设计安装有四个LED灯,当检测的烟雾浓度很低时,绿灯亮;当检测到烟雾的浓度到达一定的值时,黄灯这,作提示作用;当检测的浓度达到危险值时,两个红灯则交替地闪烁。
图3.
3
LED电路
3.1.4
报警电路
图3.
4
报警电路
当烟雾浓度达到临界值时,则需要报警,在电路上连接一个蜂鸣器电路,当浓度过高时,PTE0脚输出高电平,驱动蜂鸣器鸣叫,达到报警的目的。该电路稳定、可靠。
3.2电路参数的计算及元器件的选择
3.2.1
MQ-2型烟雾传感器
半导体烟雾传感器包括用氧化物半导体陶瓷材料作为敏感体制作的烟雾传感器以及用单晶半导体器件制作的烟雾传感器。按敏感机理分类,可分为电阻型和非电阻型。半导体气敏元件也有N型和P型之分。N型在检测时阻值随烟雾浓度的增大而减小;P型阻值随烟雾浓度的增大而增大。半导体气敏传感器的分类如表3.1所示。
表3.1
半导体气敏传感器分类
类型
所利用的特性
工作温度
代表性被检测气体
电阻型
电阻
表面电阻控制器
300~450°C
可燃性气体
体电阻控制器
300~450°C
乙醇、可燃性气体
非电阻型
二极管整流特性
室温~200°C
H2、CO、乙醇
晶体管特性
150°C
H2、H2S
本设计中采用的MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。当处于200~300°C温度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,
从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒受
到该烟雾的调制而变化,就会引起表而电导率的变化。利用这一点就可以
获得这种烟雾存在的信息。
遇到可燃烟雾(如CH4等)时,原来吸附的氧脱附,而由可燃烟雾以正离子状态吸附在二氧化锡半导体表面;氧脱附放出电子,烟雾以正离子状态吸附也要放出电子,从而使二氧化锡半导体导带电子密度增加,电阻值下降。而当空气中没有烟雾时,二氧化锡半导体又会自
动恢复氧的负离子吸附,使电阻值升高到初始状态。这就是MQ-2型燃性烟雾传感器检测可燃烟雾的基本原理。
图3.5
MQ-2型传感器的外观
3.2.2
K60N512VMD144
Kinetis系列微控器是飞思卡尔公司于2010年下半年推出的,是业内首款基于ARM
Cortex-M4内核的微控制器,Kinetis是一个新造词,具有“快速”寓意。Kinetis系列微控制器采用了飞思卡尔90nm薄膜存储器(Thin
Film
Storage,TFS)闪存技术和Flex存储器功能(可配置的内嵌EEPROM),支持超过1000万次的擦写,整合了最新的低功耗革新技术,具有高性能、高精度的混合信号处理能力、宽广的互连性、人机接口和安全外设。
Kinetis系列微控制器的第一阶段产品由一个微控制器系列组成,分另为K10、K20、K30、K40、K60系列。具体芯片型号超过两百个品种,在引脚、外设和软件上可兼容。每个系列提供了不同的性能、存储器配置和外设特性。通过通用外设、存储器映射和封装的一致性来实现系列内和各系列间的便捷移植。
K60的ADC模块的时钟频率最高可配置为50MHz,最快采样周期为4个时钟,所以采样速率最高可达12.5MHz。K60有2个ADC模块,每个ADC模块包含27个寄存器。ADC模块由于使用了线性残次逼近算法,所以具有最高可达16位的分辨率。同时ADC具有差分输入和单端输入两种采集模式。
K60的USB模块连接比较简单,只要将USB模块的两个引脚USB_DP和USB_DM分别接33欧的电阻连接到USB接口的D+和D-即可。K60有一个USB双模式(主机或从机模式)控制器,即使用K60作为主控制器的USB设备既可被定义为单一的主机或从机模式,也可以在主机和从机模式之间进行切换。该USB模块支持USB2.0协议中定义的全速和低速模式及OTG(ON-The+-Go)协议,并通过状态控制寄存器及存储的数据结构与处理器进行通信。K60的USB模块具有如下特性:
1、支持USB1.2和2.0协议的全速设备控制器;
2、16个双向端点;
3、DMA或FIFO数据流接口;
4、低功耗;
5、支持OTG协议。
3.3.3
LM324
LM324系列器件带有差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。
4
软件测试
4.1工作流程图
4.1.1主程序流程详解
(1)初始化系统
在程序中,首先对系统进行初始化编程。包括单片机系统时钟的初始化、定时器的初使化、GPIO的初使化、USB模块的初使化、ADC模块初使化等等,使单片机达到合适的环境。
(2)AD采样
通过单片机自带ADC采样模拟信号。
(3)数据处理
采样来的数据,通过处理过后,和设定的阈值做比较,得出一个结果。
(4)采样到的数据和得出的结果都通过USB发送到PC机。
主程序的程序流程图如图4.1所示。
图
4.1
主程序流程图
4.1.2
定时器中断
本设计使用了K60的一个内部定时器,定时器第隔1S设置一次标志位,通过设置此标志位来周期性地进行AD采样,以提高程序的执行效率。
定时器中断的程序流程图如图4.2所示。
图4.2
定时器中断流程图
4.1.3
中断子程序
模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是否合理的标准。坚持模块的独立性,一般认为是获得良好设计的关键。独立性可以从两个方面来度量,即模块本身的内聚和模块之间的耦合。前者指模块内部各个成分之间的联系,所以也称块内联系或模块强度;后者指一个模块与其它模块之间的联系,所以又称为块间联系。模块的独立性愈高,则块内联系越强,块间联系越弱。
USB数据的接收和发送都是通过中断的方式进行,若接收到数据,则触发接收中断,并在中断服务程序里面执行简单的处理程序;若要发送数据,则把待发送的数据填入发送缓冲区中,通过软件触发发送中断,进行数据的发送。
USB中断的程序流程图如下:
图4.3
USB中断流程图
5
系统调试
5.1
软件系统调试
设计软件部分出现这种错误的现象:
1.当以断点或连续方式运行时,目标系统没有按规定的功能进行操作或什么结果也没有,这是由于程序转移到意外之处活在某处死循环所造成的。
解决方法:这类错误的原因是程序中转移地址计算错误、堆栈溢出、工作寄存器冲突等。在采用实时多任务操作系统时,错误可能在操作系统中,没有完成正确的任务调度操作,也可能在高优先级任务程序中,该任务不释放处理器,使CPU在该任务中死循环。通过对错误程序的修改使其实现预期的功能。
2.不响应中断
错误的原因有:中断控制寄存器(IE,IP)的初值设置不正确,使CPU没有开放中断或不许某个中断源请求;或者对片内的定时器、串行口等特殊功能寄存器和扩展的I/O口编程有错误,造成中断没有被激活;或者某一中断服务程序不是以RETI指令作为返回主程序的指令,CPU虽已返回到主程序但内部中断状态寄存器没有被清除,从而不响应中断;或由于外部中断源的硬件故障使外部中断请求无效。
解决方法:修改中断控制寄存器(IE,IP)的初值设置。
3.上位机通信数据时有时无,显示效果不大理想运行效果不是太理想
错误原因有:USB通讯过程中出现硬件连接不好,下位机向上位机传输数据
的时候,主程序中发送数据部完全;或者上位机接收数据的时候,接收数据没有接收完全;或者上位机显示数据的时候,没有完全从缓冲器中取出数据。
解决方法:下位机发送数据的时候将数据发两次保证数据能够充分发送,同时上位机接收数据的时候时间延长。
5.2系统硬件调试
1.元器件损坏:由于对元器件使用要求的不熟悉及制作调试过程中操作不当致使器件损坏。
解决方法:在设计过程中要明确各元器件的工作条件,严格按照制作要求进行操作,损坏的元器件要及时更换,以免损坏其他元件或影响电路功能的实现。
2.电源故障:设计中存在电源故障,即上电后将造成元器件损坏、无法正常供电,电路不能正常工作。电源的故障包括:电压值不符和设计要求,电源引出线和插座不对应,各档电源之间的短路,变压器功率不足,内阻大,负载能力差等。
解决方法:电源必须单独调试好以后才能加到系统的各个部件中,本设计中就出现电源故将经过多次对电源的调换才使其正常工作。
3.错线、开路、短路:由于设计错误和加工过程中的工艺性错误所造成的错线、开路、短路等故障。
解决方法:在画原理图时仔细检查、校正即可解决。
5.3系统精度误差分析及解决方案
造成系统精度误差的主要原因有以下几点:
1.核心处理器的AD处理器分辨率不是太高。
2.核心处理器的AD处理器精度不够。
3.核心处理器选用的AD参考电压不稳点,稍微有波动。
4.烟雾传感器的输出精度不是很高。
5.烟囱传感器有一定的输出温漂。
解决方案有:
1.采用高精度AD传感器。
2.采用位数高的核心处理器。
3.选用精度非常高的电源芯片做AD参考电压。
4.选用品质更好的烟雾传感器。
6
设计总结
通过2周的实战,我掌握了课本外的实际知识,将书本上理论的知识。除了完成了老师给的设计任务,我们收获更多的是一个完成设计后的满足感,真的很感谢学校和老师在期末给我们这么好的实习机会,所以每次我都十分珍惜这些机会,这次也不例外。所以我非常感谢学校和老师给我们这么好的学习机会,在项目中我们也体会到一位优秀的教师为我们这次项目的付出,在老师的精心组织下,我们班顺利完成了规定任务。课程设计是短暂的,但它让我们在学校里学到了我们平常在书本上没能学到的动手方面的实践,那也是我们毕业前与社会工作的接触,它让我们感受集体的力量,感受了与社会类似的工作。为我们毕业后的社会工作做好准备。
7
致谢
在这次课程设计的撰写过程中,我得到了许多人的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把本次课程设计做得更加完善,王老师多次帮助我分析思路,开拓视角,在我遇到困难想放弃的时候给予我最大的支持和鼓励,本课题在选题及研究过程中得到了王波老师的悉心指导,王老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。王老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。王老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,虽只历时两周,却给以终生受益无穷之道。对王老师的感激之情是无法用言语表达的。感谢王老师对我的教育培养。他们细心指导我的学习与研究,在此,我要向王老师深深地鞠上一躬。再多华丽的言语也显苍白。在此,谨向王老师致以诚挚的谢意和崇高的敬意。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢学院为我提供良好的做课程设计的环境。再一次感谢所有在设计中曾经帮助过我的良师益友和同学们。本论文的完成远非终点,文中的不足和浅显之处则是我新的征程上一个个新的起点。我将继续前行!
8
参考文献
[1]
魏立峰.单片机原理与应用技术[M].北京:北京大学出版社,2006
[2]
谢维成.微机原理与接口技术[M].武汉:华中科技大学出版社,2009
[3]
康华光.电子技术基础[M].第五版.北京:高等教育出版社,2006
[4]
张毅刚.单片机控制步进电机.单片机之路.2009
[5]
刘福太.电子电路461例[M].北京:科学出版社,2007
[6]
李瀚荪.电路分析基础[M].第四版.高等教育出版社,2006
[7]
燕庆明.信号与系统教程[M].第二版.北京:高等教育出版社,2007
附录
#include
“MK60N512VMD100.h“void
PIT_INIT_MS(TIMERn
timern,uint32
time)
{
uint32
pit_clk=50000;
SIM_SCGC6
|=SIM_SCGC6_PIT_MASK;
//打开时间
PIT_MCR
=
0x00;
//打开PIT
PIT_TCTRL(timern)
|=
PIT_TCTRL_TIE_MASK;
//打开定时中断
PIT_LDVAL(timern)=(uint32)pit_clk*time-1;
//PIT_LDVAL=time*10^(-3)*50*10^6
PIT_TCTRL(timern)
|=
PIT_TCTRL_TEN_MASK;
//打开定时器
NVIC_IP(68)=NVIC_IP_PRI68(0X10);
//降低优先级
}
void
delay(uint
z)
{
uint
x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void
writecom(uchar
com)
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void
writedate(uchar
date)
{
lcdrs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void
init()
{
addres_c=1;
addres_b=1;
addres_a=1;
write=0;
writecom(0x38);
//设置显示模式
必须的
writecom(0x0c);
//00001DCB
D=1开显示
D=0关显示
C=1显示光标
C=0不
B=1光标闪烁
B=0光标不显示
writecom(0x06);
//000001NS
N=1地址加1光标加1
N=0地址减1光标减1
S=1写一个字符后整屏左右移动1
S=0不移动
writecom(0x01);
//清屏幕
writecom(0x80);
//第一行的首地址
for(num=0;num<16;num++)
{
writedate(table17[num]);
}
writecom(0x90);
//第二行首地址
for(num=0;num<16;num++)
{
writedate(table18[num]);
}
writecom(0x88);
//第三行首地址
for(num=0;num<16;num++)
{
writedate(table19[num]);
}
writecom(0x98);
//第四行首地址
for(num=0;num<16;num++)
{
writedate(table20[num]);
}
}
/*******************************************************************************
函数名称:
PIT_ISR
功能说明:
PIT中断服务程序
函数输入:
None
函数输出:
None
返
回
值:
None
标
签:
None******************************************************************************/
void
PIT_ISR(void)
{
uint32
pulse;
PIT_TFLG0
|=PIT_TFLG_TIF_MASK;
//清标志
pulse=GET_PULSE();
CLEAR_PULSE_CNT();
Motor_Control(pulse);
}
void
main(void)
{
uint16
i,j,k,flagdelaystop,time,runtime,stoptime;
flagstartline=0;time=0;stoptime=0;runtime=0;flagdelaystop=0;//常量初始化
pll_init(PLL100);
//设置总线频率
IO_Init();
//初始化IO方向
LED_init();
//初始化小灯IO方向
PIT_INIT_MS(0,10);
Motor_Init();
USB_Init();
//初始化USB
Strategy_Select();
enable_irq
(87);
for(;;)
{
if(send_flag)
{
send_flag=0;
Image_Recover();
}
}
}
第20页