主要介绍
此设计主要利用了MQ-5传感器采集气体的浓度信号,由系统设置浓度和电压之间的关系,令浓度与电压发生转换、能够显示出当下天然气浓度与声光提示报警构成的报警装置。该检测系统能够检测出当下天然气的浓度,检测出的天然气浓度不超过设定报警设定值的时候,数码管显示器仅显示测出的可燃气体浓度;如果传感器检测出天然气浓度高于系统设定的报警阈值时,系统会给出声光报警,并且还附带语音提醒。结果表明整套系统表现出良好的检测性能和安全性能。
关键词:天然气;气体泄漏报警;MQ-5传感器;安全
一、天然气泄露报警系统的整体设计方案
2.2.1天然气泄漏报警器工作原理
此设计中的天然气泄漏报警器以STC89C52单片机为操控核心,感知空气中天然气浓度的任务则由MQ-5传感器来执行。MQ-5传感器得到的数据发送给ADC0809转换芯片,ADC0809在将数据转化为单片机能够处理的数据,单片机将数据进行处理之后在将浓度值展示在数码管上再进行判定,如果被测气体浓度超出了报警值,报警器将继电器吸合,LED同时通电,并且喇叭开始发出提示音提示报警;如果浓度没有超过预定的值,数码管上只显示环境中被测气体的浓度值,没有其他的动作。
2.2.2天然气泄漏报警器的结构
家用电器渐渐发展的更加成熟了,开始向智能化、连接网络、信息共享的方向发展。首先保证报警器对于家庭用户来说的安全性能,更要顺应社会发展潮流,在以前的报警器的基础上对其进行了硬件结构的优化:
此系统集处理数据、显示浓度和控制报警这三个优点。可以细分为电源、传感器、信号调试、A/D转换、核心控制单片机等模块。每一个模块都不可缺少,构成了这样一个完善的系统,系统结构框图如图2.1所示。
图2.1 天然气泄露检测报警系统结构框图
二、电源电路设计
如图3.11,本设计用USB供电,用自锁开关和DC插座为单片机提供5V电源。
图3.11 电源电路
三、系统软件设计与实现
4.1 主程序框图
本次主程序设计首先初始化LCD1602液晶显示器,由MQ-5气敏传感器测得的模拟量交给ADC0809转换,下一步读取转换出的数值,在LCD1602液晶显示器中显示具体的数值是多少,判断设置的状态,接下来语音播报当前的数值,判断当前数值是否超出安全值,若超过限值,则继续语音播报常开继电器断开,变成闭合,下一步判断录音键是否按下,如果按下则开始注意切换新的语音文件,扫描设置的限定值,最终回到读取数值的阶段。不停的循环检测。主程序流程图如图4.2所示。
图4.2 主程序流程图
实物
程序源码
#include <reg52.h>
#include <intrins.h>
//显示函数
#include <display.h>
#include <4004.h>
//宏定义
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0809 P1
//管脚声明
//sbit LED_R= P2^2; //黄指示灯
//sbit LED_G= P2^0; //绿色指示灯
//sbit FENG = P2^5; //喇叭
//ADC0809
sbit ST=P3^3;
sbit EOC=P3^1;
sbit OE=P3^2;
//按键
sbit Key1=P2^5; //设置按键
sbit Key2=P2^4; //加
sbit Key3=P2^3; //减
sbit Key4=P2^2;
sbit jdq=P3^0;
bit bdata flag;//指示灯和喇叭闪烁报警标志位
uchar set; //设置标志位
//函数声明
extern uchar ADC0809();
extern void Key();
//天然气含量变量
uchar temp=0;
uchar WARNING=25; // 初始报警值
void delay_2S(void) //4S
{
uchar a;
uchar b,c;
for(c=90;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
//初始化函数
/*void init()
{
TMOD=0x01; //定时器0方式1
TL0=0xb0;
TH0=0x3c; //赋初值
EA=1; //开总中断
ET0=1; //允许定时器0中断
TR0=1; //定时器0开
} */
//主函数
void main()
{
uchar p=0;
uint sum;
Init1602(); //1602初始化
// init(); //初始化函数
while(1)//主循环
{
for(p=0;p<20;p++)
{
temp=ADC0809(); //读取天然气值
sum=sum+temp;
}
temp=sum/20;
sum=0;
if(set==0) //如果没有按下设置(默认set是0,就是正常显示状态)
Display_1602(temp,WARNING,Mode); //显示CH4值
//开始语音播报
if(set==0)
{
//现在浓度
playbit=1;
playcout=1;
playsound();
delay_2S();
delay_2S();
DDstop();
//第一位
playbit=1;
playcout=(temp/100)+2;
playsound();
delay_2S();
DDstop();
//第二位
playbit=1;
playcout=(temp%100/10)+2;
playsound();
delay_2S();
DDstop();
//第三位
playbit=1;
playcout=(temp%100%10)+2;
playsound();
delay_2S();
DDstop();
/* //米
playbit=1;
playcout=12;
playsound();
delay_2S();
DDstop(); */
if(temp<WARNING&&set==0) //如果实际的CH4值小于报警值且在正常显示状态下
{
jdq=1;
// flag=0; //执行下面flag=0的(主要就是绿灯闪,关喇叭和继电器)
//浓度正常
playbit=1;
playcout=12;
playsound();
delay_2S();
delay_2S();
DDstop();
}
else if(temp>WARNING&&set==0) //如果实际的天然气值大于报警值且在正常显示状态下
{
jdq=0;
// flag=1; //执行下面flag=1的(主要就是红灯闪,开喇叭和继电器)
//浓度超标
playbit=1;
playcout=13;
playsound();
delay_2S();
delay_2S();
DDstop();
}
delay_2S();
//录音键按下
if(Key4==0)
{
Mode=1;
jdq=1;
while(Mode!=14)
{
//按键判断
if(Key4==0)
{
Mode++;
Display_1602(0,0,Mode);
while(Key4==0);
//开始录音
playbit=0;
recbit=1;
// playcout=Mode-1;
reccout=Mode-1;;
playsound();
if(Mode==2||Mode==14||Mode==13)
delay_2S();
delay_2S();
DDstop();
delayms(100);
//开始放音
playbit=1;
recbit=0;
playcout=Mode-1;
// reccout=Mode-1;;
playsound();
if(Mode==2||Mode==14||Mode==13)
delay_2S();
delay_2S();
DDstop();
}
}
Init1602();//初始化显示
Mode=0;
}
}
Key();//按键扫描
}
}
//ADC0809读取信息
uchar ADC0809()
{
uchar temp_=0x00;
//初始化高阻太
OE=0;
//转化初始化
ST=0;
//开始转换
ST=1;
ST=0;
//外部中断等待AD转换结束
while(EOC==0)
//读取转换的AD值
OE=1;
temp_=Data_ADC0809;
OE=0;
return temp_;
}
//按键函数
void Key()
{
if(Key1==0) //如果设置按键按下
{
while(Key1==0);//等待按键释放
// FENG=0; //喇叭响
set++; //设置的变量加1
jdq=1;
flag=0; //绿灯闪
TR0=0; //关定时器0
}
if(set==1)//此时设置报警值
{
write_com(0x38);//屏幕初始化
write_com(0x80+0x40+13);//位置
write_com(0x0f);//打开显示 无光标 光标闪烁
write_com(0x06);//当读或写一个字符是指针后一一位
// FENG=1; //喇叭关
}
else if(set>=2) //又按了下设置
{
set=0; //正常显示状态
write_com(0x38);//屏幕初始化
write_com(0x0c);//打开显示 无光标 无光标闪烁
// FENG=1; //喇叭关
flag=1; //红灯闪
TR0=1; //定时器0开
}
if(Key2==0&&set!=0) //在设置的状态下按下加
{
while(Key2==0); //等待按键释放
// FENG=0; //喇叭响
WARNING++; //报警值加1
if(WARNING>=255) //如果报警值大于等于255
WARNING=0; //报警值归零
write_com(0x80+0x40+11);
write_date('0'+WARNING/100);
write_date('0'+WARNING/10%10);
write_date('0'+WARNING%10); //显示报警值
write_com(0x80+0x40+13);//调整位置
// FENG=1; //喇叭关
}
if(Key3==0&&set!=0) //在设置的状态下按下减
{
while(Key3==0); //等待按键释放
// FENG=0; //喇叭响
WARNING--; //报警值减1
if(WARNING<=0) //如果报警值小于等于0
WARNING=255; //那么报警值为255
write_com(0x80+0x40+11);
write_date('0'+WARNING/100);
write_date('0'+WARNING/10%10);
write_date('0'+WARNING%10);
write_com(0x80+0x40+13);//调整位置
// FENG=1; //喇叭关
}
}
/*
void time1_int(void) interrupt 1 //定时器中断0
{
uchar count;
TL0=0xb0;
TH0=0x3c; //重赋初值50ms
count++; ///溢出值加1
if(count==10) //如果时间到半秒
{
if(flag==0) //如果flag为0
{
LED_G=0; //绿灯亮
LED_R=1; //红灯灭
FENG=1; //喇叭关
}
if(flag==1) //如果flag为1
{
LED_G=1; //绿灯关
LED_R=0; //红灯亮
FENG=0; //喇叭开
}
}
if(count==20) //如果时间到1秒
{
count=0; //溢出值清零
if(flag==0) //如果flag为0
{
LED_G=1; //绿灯关
LED_R=1; //红灯灭
FENG=1; //喇叭关
}
if(flag==1) //如果flag为1
{
LED_G=1; //绿灯关
LED_R=1; //红灯灭
FENG=1; //喇叭关
}
}
} */
四 结论
本文设计的天然气泄漏检测报警系统以具有各种优点的STC89C52单片机作为主控芯片,以其不是特别昂贵的造价和优秀的处理能力,利用了它丰富又易于控制的各种端口,程序编写简单容易上手,只需要一个一个调用即可,完成了此次的设计任务。系统能够实时监测和显示空气中的天然气浓度,周围天然气气体超标,系统给出声光报警;若没有超标,则仅在1602液晶显示器上显示当前浓度。
本设计在电路方案中采用模块化设计,易于实现功能扩展,能够满足特殊应用领域的功能和可靠性需求。在硬件调试中,采用的电路使用了很多模块化设计。设备不多,调试不难。电路除了集成电路以外,对各电子部件也没有特别的要求。
在调试软件时,发现一些程序只是满足条件而被执行,这增加了步骤调试的难度,在这种情况下,可以选择程序调试的总括断点设置来完全进行调试。而且,在写文章的时候忘记了切换输入方式,汉语标点令程序的编译出现了错误,逐一改进后完成了调试。
在未来的工作中,可以试着将GPRS模块添加到报警器中,使报警器能够实现远程通信功能,访问消防系统,及时向相关部门通知紧急事件的发声,适当扩充功能,进一步完善天然气报警器的功能,提高安全性,提高易用性。文章来源:https://www.toymoban.com/news/detail-817966.html
五、 文章目录
目 录
摘 要 I
Abstract II
1 引 言 1
2天然气泄露检测报警系统的方案设计 4
2.1 方案选择 4
2.2 天然气泄露报警系统的整体设计方案 5
2.2.1天然气泄漏报警器工作原理 5
2.2.2天然气泄漏报警器的结构 5
3天然气泄露报警的硬件部分设计 7
3.1 STC89C52单片机 7
3.2 传感器的选择 10
3.3 LCD1602液晶显示电路 11
3.4 键盘电路 12
3.5 A/D转换电路 13
3.6 报警电路 15
3.6.1 灯光提示电路 15
3.6.2 声音报警电路 15
3.7 电源电路设计 17
3.8 继电器电路 17
4 天燃气泄漏检测报警系统的软件部分 19
4.1 软件介绍 19
4.2 主程序框图 20
4.3 A/D转换程序流程图 21
4.5 系统调试 22
结 论 24
附录1 源程序清单 25
参考文献 33
致谢 35文章来源地址https://www.toymoban.com/news/detail-817966.html
到了这里,关于基于单片机的天然气泄漏报警系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!