赞
踩
计算机控制系统通常具有精度高、速度快、存储容量大和有逻辑判断功能等特点, 因此可以实现高级复杂的控制方法,获得快速精密的控制效果。在控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意或采取紧急措施。可燃气的泄露是种隐形杀手,严重影响了市民生命安全,如果采用可燃气浓度控制装置就能得到及时的防护,专家经过长期测试,燃气浓度控制装置能防止事故发生的有效率达95%以上。面对这种威胁,急需探究一款高效稳定的安防产品。可燃气浓度控制系统是安全使用可燃气不可或缺的一道保护。本设计中报警程序和电机控制是设计的核心,可燃气浓度控制由气体传感器探测周围环境中的低浓度可燃气体,通过信号采样电路,将探测信号用模数转化电路转换成单片机可识别的数字量,当可燃气体浓度超过控制程序设定的阈值时,报警电路发出声光报警信号。电机控制电路对可燃气进行排放。
系统的工作原理是利用可燃气传感器将可燃气浓度变换为mV级模拟电流信号,放大器把信号放大后,通过A/D转换器,变换成数字量送入单片机进行数据分析和处理,并输出信号到显示器,当检测信号达到限定的阈值时,单片机将输出信号驱动报警及浓度控制装置,维持室内可燃气浓度在安全范围。硬件电路总设计包括:气体传感器,模数转化电路,AT89C51单片机,声光报警和浓度控制电路。
3.1、单片机的选择
单片机作为可燃气泄漏报警的核心器件,一方面他要接收来自传感器的气体浓度的模拟信号和故障检测信号,另一方面要对两种信号分别进行处理,控制后续电路的相应工作;
(1)AT89C51单片机
AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4KB的可反复擦写的Flash只读程序存储器和128B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MSC-51指令系统,片内置通用8位(CPU和Flash存储单元)功能强大。
复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
(8)转换速率取决于芯片的时钟频率,时钟频率范围为10~1280kHz,当时钟为300kHz时,转换速率为128us。
图 2.4 ADC0808引脚图
3.3单片机与ADC0808接口电路单片机AT89C51通过引脚P3.6和P3.7控制二极管导通,蜂鸣器报警。红灯不亮表示正常状态,表示环境中的可燃气浓度处于极低状态,当气体传感器检测的浓度信号达到所限定值的要求时,红灯开始闪亮,提醒用户尽快采取安全方法措施。当可燃气浓度超过报警所要求的预设值时,红灯闪亮,报警器发出声音警示用户可燃气浓度已经很高,泄漏情况已经较为严重,用户需及时撤离现场。
图 3.7 声音灯光报警电路
3.6浓度控制电路
浓度控制电路采用ULN2003A芯片来驱动两个不同方向的排风扇,设计了pwm控制程序来根据不同的可燃气浓度控制风扇实现不同的转速。3.8 浓度控制电路
3.7软件程序设计主程序流程图如图所示,系统先进行初始化,单片机内部实现将浓度值与预先设定好的报警值比较,判断是否报警和浓度控制风扇工作方式,分200ppm,1000ppm两个浓度等级,使用户更加便利。
图3.9 主程序流程图
图 4.1 当浓度小于于200ppm时,表示情况正常
当可燃气浓度小于200ppm时,LED不亮,表示室内可燃气浓度在正常状态,风扇1开始缓慢的向外排出气体,保证屋内可燃气浓度低。设计了一套合理的浓度控制系统方案,并对可燃气浓度控制系统中涉及到的各个组成部分做出了详细的分析。根据设计所规定的浓度要求,考虑到使用环境、成本等因素,选用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;
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。