家用可燃气浓度报警控制系统

2023-10-27

使用软件Keil uVision4,proteus 8 Professions

一、研究目的

   计算机控制系统通常具有精度高、速度快、存储容量大和有逻辑判断功能等特点, 因此可以实现高级复杂的控制方法,获得快速精密的控制效果。在控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意或采取紧急措施。可燃气的泄露是种隐形杀手,严重影响了市民生命安全,如果采用可燃气浓度控制装置就能得到及时的防护,专家经过长期测试,燃气浓度控制装置能防止事故发生的有效率达95%以上。面对这种威胁,急需探究一款高效稳定的安防产品。可燃气浓度控制系统是安全使用可燃气不可或缺的一道保护。本设计中报警程序和电机控制是设计的核心,可燃气浓度控制由气体传感器探测周围环境中的低浓度可燃气体,通过信号采样电路,将探测信号用模数转化电路转换成单片机可识别的数字量,当可燃气体浓度超过控制程序设定的阈值时,报警电路发出声光报警信号。电机控制电路对可燃气进行排放。 

二、硬件电路   

  系统的工作原理是利用可燃气传感器将可燃气浓度变换为mV级模拟电流信号,放大器把信号放大后,通过A/D转换器,变换成数字量送入单片机进行数据分析和处理,并输出信号到显示器,当检测信号达到限定的阈值时,单片机将输出信号驱动报警及浓度控制装置,维持室内可燃气浓度在安全范围。硬件电路总设计包括:气体传感器,模数转化电路,AT89C51单片机,声光报警和浓度控制电路。

硬件系统图

三、各部分功能详细介绍

3.1、单片机的选择
单片机作为可燃气泄漏报警的核心器件,一方面他要接收来自传感器的气体浓度的模拟信号和故障检测信号,另一方面要对两种信号分别进行处理,控制后续电路的相应工作;
(1)AT89C51单片机
AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4KB的可反复擦写的Flash只读程序存储器和128B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MSC-51指令系统,片内置通用8位(CPU和Flash存储单元)功能强大。

图 2.1  AT89C51单片机引脚图
(2)时钟和复位电路
    外接晶振时,C1和C2的值通常选择30pF左右;C1、C2对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.2~12MHz之间选择。本设计选择了6MHz,电容为1uF,为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装的与单片机引脚XTAL1和XTAL2靠近。

    复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。


    在整个可燃气报警系统中,要要进行不同的实验,因而系统要先复位,单片机系统在上电运行时,都需要初始化,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作,单片机本身不能进行复位,如果实现此功能必须配合相应的外部复位电路。
单片机的外部复位电路有上电复位和按键均有效的复位两种,我们在涉及单片机复位时选择按键复位。


图2.2 时钟和复位电路图
    AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XLAT1和XLAT2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路如图3.3所示。
    外接石英晶体(或陶瓷谐振器)及电容C1,C2接在放大器的反馈电路中并构成并联振荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,推荐电容使用30 pF±10pF,而如果使用陶瓷谐振器建议选40 pF±10pF。
    用户可以采用外部时钟。采用时钟的电路如图4右图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
3.2.外围接口电路的设计
(1)数据采集单元
可燃气体经过MC101催化燃烧式传感器检测到100~1000ppmCH4将其变成5~50mV电压信号,有放大电路放大100倍,变成0.5~5V电压信号,放大倍数计算公式:

    放大电路中放大100倍公式:                                           

电路图如下:


图 2.3 信号采集及放大电路
(2) ADC0808介绍
    ADC0808是一种8位主次逼近式A/D转换器,其内部结构如图8-3所示,其中包括8路模拟量开关、地址锁存与译码、8位A/D转换器和三态输出锁存器。多路开关外接8路模拟量输入端,可对8路0~5V的输入模拟电压信号分时进行转换,输出具有TTL三态锁存缓冲器,可直接连到单片机数据总线上。
    A/D转换器的电路综合功能如下:
    (1)分辨率为8位。
    (2)最大不可调误差小于±1LSB。
    (3)单一+5V供电,模拟输入范围为0~5V。
    (4)具有锁存控制的8路模拟开关。
    (5)可锁存三态输出,输出与TTL兼容。
    (6)功耗为15mW。
    (7)不必进行零点和满度调整。

    (8)转换速率取决于芯片的时钟频率,时钟频率范围为10~1280kHz,当时钟为300kHz时,转换速率为128us。                            

  图 2.4 ADC0808引脚图

3.3单片机与ADC0808接口电路
一个ADC开始转换时,必须加一个启动转换信号,这一启动信号要由单片机提供。通常用WR和地址译码器的输出经一定的逻辑电路进行控制。对于电平启动型ADC,当把符合要求的电平加到启动控制端上时,立即开始转换。在转换过程中,必须保持这一电平,否则会终止转换的进行。因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,本设计通过D触发器实现。A/D转换器电路如下图所示:


图 3.5单片机与0808接口电路
3.4数码管显示
发光二极管通常需要十几到几十mA的驱动电流才能发光,因此,由微型机发出的显示控制信号必须经过驱动电路才能使显示器正常工作。
本次我们用的时动态显示。动态显示,就是微型计算机定时的对显示器进行扫描,在这种方法中,显示器分时工作,每次只能有一个器件显示。但由于人的视觉有暂留现象,所以,只要扫描频率足够快,仍会感觉所有的器件都在显示。此种显示的优点是使用硬件少,因而价格低,线路简单。但它占用机时长,只要微型计算机不执行显示程序,就立刻停止显示。由此可见,这种显示将使计算机的开销大。
ABCDEFG控制着每个数字中的七段发光二极管来显示每个数字,DP控制着小数点的显示,TED显示电路是由1234进行选通控制第几位数字的显示。利用LED显示电路显示空气中的可燃气浓度,来警示人们,保护人的安全。数码管的A B C D E F G D P代表一个管子里面有7个LED灯,和小数点.右边4个数值是指4 个数码管的选通。


图 3.6   LED显示电路
3.5声音灯光报警电路

单片机AT89C51通过引脚P3.6和P3.7控制二极管导通,蜂鸣器报警。红灯不亮表示正常状态,表示环境中的可燃气浓度处于极低状态,当气体传感器检测的浓度信号达到所限定值的要求时,红灯开始闪亮,提醒用户尽快采取安全方法措施。当可燃气浓度超过报警所要求的预设值时,红灯闪亮,报警器发出声音警示用户可燃气浓度已经很高,泄漏情况已经较为严重,用户需及时撤离现场。


 图 3.7 声音灯光报警电路

3.6浓度控制电路

  浓度控制电路采用ULN2003A芯片来驱动两个不同方向的排风扇,设计了pwm控制程序来根据不同的可燃气浓度控制风扇实现不同的转速。
LN2003A由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。
浓度控制电路在开始运行时,风扇1缓慢地向外排出气体,保证室内可燃气浓度低。当屋内可燃气泄露,空气中的可燃气密度达到限定值1以上时,风扇1以较快的速度正转向外排出可燃气,风扇2快速反转向屋内供应洁净空气,目的是降低室内可燃气的浓度。当可燃气浓度达到限定值2以上时,风扇1正转飞速排出可燃气体,风扇2也飞速反转的向屋内供应安全气体,以保证在较快的时间内降低可燃气的浓度,保证人的生命安全。

3.8 浓度控制电路

3.7软件程序设计

  主程序流程图如图所示,系统先进行初始化,单片机内部实现将浓度值与预先设定好的报警值比较,判断是否报警和浓度控制风扇工作方式,分200ppm,1000ppm两个浓度等级,使用户更加便利。


图3.9 主程序流程图

四、结果


图 4.1 当浓度小于于200ppm时,表示情况正常

当可燃气浓度小于200ppm时,LED不亮,表示室内可燃气浓度在正常状态,风扇1开始缓慢的向外排出气体,保证屋内可燃气浓度低。
图 4.2 当浓度大于200ppm时,一级报警
当室内可燃气泄露浓度大于200ppm时,一级报警,LED灯亮,风扇1正转以较快的速度向外排出可燃气体,风扇2反转快速向屋内供应洁净空气,目的是降低室内可燃气的浓度。
图 4.3 当浓度大于500ppm时,二级报警
当浓度大于500ppm时,二级报警,LED灯亮且蜂鸣器开始响,风扇1正转飞速的向外排出可燃气体,风扇2反转也飞速的向屋内供应安全气体。报警器发出的声音可警示用户,此时浓度较高,必须尽快撤离。浓度控制电路保证在较快的时间内降低可燃气的浓度,保证人的生命安全。
两级警报可提示用户不同的可燃气泄漏浓度情况,并采取相应措施,使用户安全撤离。

  设计了一套合理的浓度控制系统方案,并对可燃气浓度控制系统中涉及到的各个组成部分做出了详细的分析。根据设计所规定的浓度要求,考虑到使用环境、成本等因素,选用MC101催还燃烧式气体传感器。单片机控制电路中,AT89C51单片机作为核心芯片,充分利用了其高速数据处理能力和丰富的片内外设,实现了仪器的小型化和智能化。

  可燃气泄漏报警器能够对可燃气进行实时监测,当浓度超时,过设定的范围值时,发出声光报警。同时单片机将报警时的浓度通过数码管显示出来。浓度控制电路能够降低可燃气的浓度,利用双向风扇在不同的可燃气浓度以快速、飞速的转速来排出可燃气并排进纯净的空气,以保证人的安全。学会了单片机AT98C51,ADC0808,以及7SEG-MPX4-CC的引脚功能。学会了如何利用A/D转换器ADC0808将模拟量转换位数字量。如何利用AT89C51将数字量传送到数码管中,通过P1口与数码管相连,将浓度显示出来。利用程序控制着ADC0808的运行。学会了连接单片机的时钟与复位电路。在设计的基础上,可以对浓度控制器进一步功能拓展,以保障可燃性气体浓度控制功能更加完备,工作性能稳定,安全性更高。

#include <reg52.h>
 #include <math.h> 
 #define unit unsigned int 
 #define uchar unsigned char
sbit ST=P3^0; 
sbit OE=P3^1; 
sbit EOC=P3^2;
sbit led1=P2^0;
sbit led2=P2^1; 
sbit led3=P2^2; 
sbit led4=P2^3; 
sbit P37=P3^7; 
sbit P36=P3^6;
uchar ad_data;  
int data dis[6]={0x00,0x00,0x00,0x00,0x00,0x00}; 
uchar code led_segment[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
int A4,A3,A2,A1,x;
void data_pro(); 
void delay (k); 
void display();  
void main(void)         //主程序 
{      ad_data=0;     //采样值存储单元初始化为0    
 while(1)      
 {    ST=0;    
      ST=1; 
	  ST=0;
while(EOC==0)
      OE=1;
ad_data=P0;
data_pro();
display();
}
}
void delay(int count) //定义延时子函数,利用循环来延时
{ int i,j;
   for(i=0;i<count;i++)
   for(j=0;j<120;j++);
  }
void display(void)         //LED显示子程序 
  {P1=led_segment[A1];       //驱动方法     
  led1=0; //开第一个数码管              
  delay(1); //动态显示方法 进行一个很小的延时     
  led1=1;    //关第一个数码管 这样进行动态显示     
  P1=led_segment[A2];       //驱动方法     
  led2=0; //开第二个数码管              
  delay(1); //动态显示方法 进行一个很小的延时     
  led2=1;    //关第二个数码管 这样进行动态显示    
   P1=led_segment[A3];     
   led3=0;     
   delay(1);     
   led3=1;          
   P1=led_segment[A4];   
     led4=0;     
	  delay(1);     
  led4=1; 
  if(x<=200)	 
  {P37=0;
   P36=0;}
   else if(x<=500)
   {P37=1;
    P36=0;}
	    else 
       {P37=1;
         P36=x;}
  } 
void data_pro(void)                 //数据处理子程序
{float q;
 int flag;
dis[2]=ad_data/51;        //取整    
 dis[4]=ad_data%51;    //取余    
 dis[4]=dis[4]*10;      
 dis[1]=dis[4]/51;         //取第一位小数   
 dis[4]=dis[4]%51;   
 dis[4]=dis[4]*10;    
 dis[0]=dis[4]/51;
   q=dis[2]*100+dis[1]*10+dis[0];
    x=q*20/9;						   
    A4=x%10;flag=x/10;
	A3=flag%10;flag=flag/10;
	A2=flag%10;flag=flag/10;
	A1=flag;	
		}  
   }
uchar pluse; //占空比寄存器 
void Timer2() interrupt 5 
		{static uchar time;   
		TF2=0;    
		if(++time==pluse) PWM=0; //达到脉宽设定值时,输出PWM低电平  
		 else if(time==40) //PWM的频率为1khz左右
		  {  time=0;   
		     PWM=1;   } 
		   }
			void InitTimer2(void) //初始化函数 
			{RCAP2H = 0x0f ;//定时25us初值  
			 RCAP2L = 0x07;//   
			  ET2=1;   
			  EA=1;   
			  TR2=1; }
浓度控制及报警子程序:
void kongzhi(void)
{if(x<=200)	 
  {P37=0;
   P36=0;
   P34=0;
  InitTimer2();   
		pluse=10;
   
    }
   else if(x<=500)
   {P37=1;
    P36=0;
    P34=1;
    InitTimer2();   
		pluse=20;
	}
	    else 
       {P37=1;
         P36=1;
		P34=1;
		InitTimer2();   
		pluse=30;
		 	}  
		 }


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

家用可燃气浓度报警控制系统 的相关文章

  • 在sql查询中使用表变量实现上一条下一条记录

    SET ANSI NULLS ON GO SET QUOTED IDENTIFIER ON GO Author
  • 1046 划拳

    划拳是古老中国酒文化的一个有趣的组成部分 酒桌上两人划拳的方法为 每人口中喊出一个数字 同时用手比划出一个数字 如果谁比划出的数字正好等于两人喊出的数字之和 谁就赢了 输家罚一杯酒 两人同赢或两人同输则继续下一轮 直到唯一的赢家出现 下面给
  • Qt开发 — QProcess执行带管道的shell命令

    Qt开发 QProcess执行带管道的shell命令 简述 在嵌入式开发过程中 很容易遇到一些需要开辟新的进程 而新的进程里面又需要强制关闭父进程的操作 不如程序中需要读写SD卡 但是有时程序中又需要格式化SD卡 这就遇到问题 需要在SD卡
  • Netty实现UDP

    最近写的tcp和udp 以前经常写tcp 这次突然多一个udp 这次就献上udpserver的代码 import io netty bootstrap Bootstrap import io netty channel ChannelOpt
  • 上采样方式(反卷积、插值、反池化)

    目录 1 反卷积 1 正常卷积 2 反卷积 2 反池化 3 插值法 1 最近邻插值
  • 颜色的前世今生11·RGB显色系统详解(上)

    上一章讲完了拾色器的HSB模式 今天继续分解RGB模式 同理 RGB拾色器难的并不是软件界面本身 而是要理解RGB显色系统本身的原理 特点和局限性 才能心中有数 游刃有余 1 RGB色光加法色原理 人眼的视网膜有两种感光细胞 可以感应颜色细
  • vue2+element封装rules, 支持json多层级

    一 封装介绍 封装前景 表单内容多 表单类型重复且校验项较多 下面就参考element的例子写个实例 element地址 https element eleme cn 2 15 zh CN component form 实现效果如下 今天给
  • 适用于 Linux 的 Windows 子系统(WSL)安装指南

    目录 Windows Subsystem for Linux 一 WSL安装 1 启用 适用于Linux的Windows子系统 2 启用开发人员模式 3 安装UWP下Ubuntu LTS 4 启动子系统Linux 二 设置Windows T
  • 0.1 Redis安装

    1 Redis安装要求 64位Linux系统 Linux系统具备GCC编译环境 查看多少位 getconf LONG BIT 安装gcc环境 yum y install gcc c 查看gcc版本 gt 4 8 5版本 gcc v 2 安装
  • 个人代码笔记5——希尔排序

    1 背景 基于插入排序提出的更高效的方法 希尔排序 改善了插入排序因为元素顺序或个数而影响效率的问题 2 思路 希尔排序是先将元素分组 一般分成两组 然后各自插入排序 再合并 继续对折增量 分组并插入排序 再合并 如此重复 直到增量 lt
  • Redis入门学习的三个阶段10个知识点

    Redis入门学习有三个阶段8个模块 初识Redis 认识NoSQL 认识Redis 安装Redis Redis常见命令 5种常见数据结构 通用命令 不同数据结构的操作命令 Redis的Java客户端 Jedis客户端 SpringData
  • mac 安装 homebrew

    摘要 本文主要是下载安装包安装homebrew 然后配置环境变量Path 检验是否安装成功 homebrew地址 macOS 或 Linux 缺失的软件包的管理器 Homebrew 在终端命令下载安装 bin bash c curl fsS
  • 使用python进行数据提取和数据处理

    Whenever a dataset comes the first step is to extract data and manipulate it It is the most important part as it gives t
  • 组合预测模型

    组合预测模型 BO MLP贝叶斯优化多层感知机多输入单输出回归预测 Matlab程序 目录 组合预测模型 BO MLP贝叶斯优化多层感知机多输入单输出回归预测 Matlab程序 预测结果 评价指标 基本介绍 程序设计 参考资料 预测结果 评
  • 在Spring Boot应用程序中测试邮件代码

    在构建Spring Boot应用程序时 您可能会需要添加邮件配置 实际上 在Spring Boot中配置邮件与在Spring Bootless应用程序中配置邮件没有太大区别 但是 如何测试邮件配置和提交工作正常 我们来看一下 我假设我们有一
  • 面试经典(2)---删除特定字符

    题目 输入两个字符串 从第一字符串中删除第二个字符串中所有的字符 例如 输入 They are students 和 aeiou 则删除之后的第一个字符串变成 Thy r stdnts 分析 我们考虑如何在字符串中删除一个字符 由于字符串的
  • python学费多少-python培训学费是多少?

    Python当前的发展趋势非常好 随着大数据和人工智能的发展 Python应用程序将得到更广泛的应用 并且该领域有许多Python开发项目 越来越多的人开始学习Python 那么 python培训的学费是多少 Python以其优异的特性 适
  • openpose pytorch代码分析

    github https github com tensorboy pytorch Realtime Multi Person Pose Estimation 1 coding utf 8 2 import os 3 import re 4
  • 原型设计工具——axure认识与使用

    一 Axure认识 1 1 什么是Axure 发音 Ack sure Axure RP是一个专业的快速原型设计工具 是一个专业的快速原型设计工具 让负责定义需求和规格 设计功能和界面的专家能够快速创建应用软件或Web网站的线框图 流程图 原
  • 激活函数之softmax函数

    1 softmax函数 分类问题中使用的 softmax 函数可以用下面的式表示 exp x 是表示 ex 的指数函数 e 是纳皮尔常数 2 7182 式 3 10 表示假设输出层共有 n 个神经元 计算第 k 个神经元的输出 yk 如式

随机推荐