火灾自动报警系统设计
5.2主程序初始化流程图
主程序初始化流程图如图5.2所示。给传感器预热后,程序开始执行初始化子程序,这部分实现的功能包括各种I/O口输入输出状态的设定、 寄存器初始化、中断使能等。首先设定定时初值50ms,利用IAP写入EEPROM,作为取值间隔。然后设置定时器0,选择方式1。方式1状态下定时器的工作寄存器TH1、TL1是全16位参与操作。接下来定时器0中断允许位置1,打开定时器0,关闭蜂鸣器,开启绿灯,设置报警限初值。
图5.2主程序初始化流程图
5.3中位值平均滤波法数字滤波子程序设计及流程图
在烟雾传感器对烟雾浓度采样时,可能会遇到尖脉冲干扰的现象。干扰通常只影响个别采样点的数据,此数据与其他采样点的数据相差比较大。
如果采用一般的平均值法,则干扰将“平均”到计算结果上去,故平均值法不易消除由于脉冲干扰而引起的烟雾浓度采样值的偏差。
为此,可采取中位值平均滤波法(又称防脉冲干扰平均滤波法),先对N个采样数据进行比较,去掉其中的最大值和最小值,然后计算余下的N–2个数据的算术平均值。这种方法既可滤去脉冲干扰又可滤去小的随机干扰。保证报警器检测烟雾浓度的准确性,减小误报、错报的可能。
在实际应用中,N可取任何值,但为了加快测量计算速度,本论文数字滤波的设
21
火灾自动报警系统设计
计中N取10。即调用A/D连续进行10次采样,去掉其中的最大值和最小值,计算其余8个值的平均值,将这个平均值送入寄存器。中位值平均滤波法的程序流程图如图5.3所示。
图5.3中位值平均滤波法程序流程图
5.4插值法线性化处理子程序设计及流程图
在单片机测控系统中,使用之前必须进行静态标定,以得到输出信号与被测信号的关系输出曲线,用来作为使用过程中的计量依据。但是标定时输出曲线往往不是一条理想的直线,所以要对标定曲线进行线性化处理,用一条拟合直线近似代替输出曲线,线性化是智能仪表的典型功能之一。该报警器主要针对甲烷烟雾检测,在软件线性化处理时,以传感器对甲烷的响应曲线为依据。
本论文报警器使用的MQ-2型传感器的电阻是随着烟雾浓的升高而降低的,因此输入单片机的电压也是随之降低的。图5.4为单片机采集电压值与烟雾浓度百分比的对
22
火灾自动报警系统设计
应曲线,可以看出,电压值与烟雾浓度之间是非线性的关系,为了实时显示烟雾浓度需要对其进行线性化处理。在误差许可范围内,根据标定曲线形状,以及单片机处理能力,把曲线分成若干小段,对每小段分别线性化。
图5.4单片机采集电压值与烟雾浓度百分比线性化曲线
根据分段线性插值法求输入单片机的某一电压值对应的烟雾浓度的公式如下: f(x) = f(xi) + (x-xi)*(f(xi+1)-f(xi))/(Xi+1-Xi)i=1,2,3…N
式中,N为所分区间个数,f(x)为实际烟雾检测浓度,x为实际气体检测浓度对应的电压值,xi是区间的下限浓度对应电压值,Xi是区间的上限浓度对应电压值,f(xi)为区间下限烟雾浓度值,f(Xi )为区间上限烟雾浓度值。
根据公式设计分段插值法线性化程序流程图如图5.5所示。
图5.5 分段插值法线形化程序流程图
23
火灾自动报警系统设计
5.5烟雾浓度显示子程序设计及流程图
本设计采用数码管显示,线性化处理完毕后需将其送入数码管显示。 void xianshi(void)//显示程序 {
P2=xsdata[xscout]; }//数码管驱动子程序
5.6报警子程序设计及流程图
当烟雾浓度超过报警设定值时,报警器发出一种近似警笛的鸣叫声,对应通道的红灯闪亮,以提示操作人员采取安全对策或自动控制相关安全装置,从而保障生产安全,避免火灾和爆炸事故的发生。为防止误报,在程序设计上,对烟雾浓度进行快速重复检测和延时报警,以区别出是管道中烟雾的泄漏,还是由于暂短打开阀门产生的可燃烟雾的微量散失,防止误报。报警子程序流程图如图5.6所示。
图5.6报警子程序流程图
24
火灾自动报警系统设计
5.7控制按键设计子程序及流程图
本报警器设计附加一个按键,功能分别为:确定(消音)。按键处理子程序流程图如图5.7所示。
图5.7 键盘处理子程序
5.8本章小结
本章阐述了烟雾报警器的软件设计。首先介绍了软件编程的开发环境和工具的选择,这里选择的STC12系列单片机,应用KEILC51编程器和STC单片机专用ISP下载软件开发完成。
然后按照软件实现的功能,详细地设计并叙述了几个主要部分软件流程,包括:主程序设计,主程序初始化设计,中位值平均滤波法数字滤波子程序设计,插值法线性化处理子程序设计,烟雾浓度显示子程序设计,报警子程序设计,按键处理子程序及串口通讯子程序设计,共八个部分。
25