1、目录1 序言12 总体方案设计22.1 方案比较22.2 方案比较和选择33 单元模块介绍43.1 二氧化碳传感器43.2 放大电路53.2.1 放大电路特点53.2.2放大电路性能指标63.3 STC89C51单片机63.3.1 单片机最小系统83.4 显示电路113.5 风扇控制模块114 系统软件设计 134.1系统程序设计135 总结146 致谢157参考文件16附录一:相关程序171 序言空气是人类赖以生存最基础条件,不过大家常忽略所呼吸空气质量,绝大多数人 85%90% 时间在室内度过,这使得她们很轻易遭受有这些空气污染引发疾病。尤其是医院病房,因为医院病房有限,每间病房住 4 个
2、、甚至 6 个以上病人,因为排出二氧化碳气体太多、造成空气质量不好,尤其是冬季,不开窗户,空气质量愈加糟糕。尤其是对于心、肺、脑等疾病患者,病房内空气质量更显关键。二氧化碳对人体含有相当危害,室内空气二氧化碳浓度在0.07%(1400mg/m ) 时,人体感觉良好。二氧化碳含量为0.1%( mg/m3) 时,个她人有不舒适感 ;0.15%(3000mg/m3)内空气情况显著恶化;浓度达成0.3%(6000 mg/m3) 以上时,出现显著头痛、头晕、心烦意乱等症状 ;8%(160000mg/m3) 以上可引发死亡。 室内 CO2 关键来自人体呼出气。室内 CO2 水平受人均占有面积、吸烟等原因影
3、响。在中国北方,冬天关闭窗户,加上通风不足,室内二氧化碳浓度可达2.0%(4000mg/m3) 以上。 中国公共场所卫生标准要求二氧化碳浓度不超出0.07%-0.15% ( 以场所而定 )。室内空气中CO2卫生标准要求日平均最高许可浓度0.10%(mg/m3)(GB/T17094-1997)。 为满足房间内内空气质量要求,本文设计了一个廉价房间内二氧化碳监控终端,实时检测空气中二氧化碳含量,并依据数据反馈利用本系统改善空气质量。2 总体方案设计2.1 方案比较方案一:以STC89C51系列单片机为关键设计,此系列单片机比较常见、价格廉价、操作简单。设计框图图2.1. 单片机 浓度显示 A/D转
4、换器 放大电路 传感器 引风机 状态指示灯图2.1方案一系统框图 工作过程:当二氧化碳传感器检测到室内空气中二氧化碳含量超出0.07%时,电路开始工作,传感器把检测到信号经过放大电路放大处理,再经过A/D转换器转换成模拟信号输送给单片机,经过单片机控制引风机工作,并显示二氧化碳浓度,直到室内二氧化碳浓度降低到0.07%以下,引风机停止工作。方案二:以PLC为关键设计,其系统框图图2.2所表示。 传感器 信号处理模块 PLC浓度显示 引风机图2.2方案二系统框图 工作过程:当系统工作时,传感器将外界空气中二氧化碳含量转换为电 信号,并将信号传输给喜好处理模块。在信号处理模块中,将传感器接收到信号
5、处理成PLC输入信号。PLC在单位时间内对信号进行计数,再将信号数和设定基础值比较,并从PLC输出端给数码管进行浓度显示。若测量值大于给定值时,LED报警灯闪烁发出报警信号,并控制引风机工作。2.2 方案比较和选择由图2.1和图2.2可知,两图在系统框图设计上除了所使用关键元件不一样以外,其它基础一样。 其一,经信号处理模块处理后信号大小有所不一样,这就决定二者放大器 所使用不相同;其二,在设计软件上不一样,且以PLC为关键元件程序编写上会比较复杂;其三,从经济性上讲采取单片机更节省成本。值得我们注意是,PLC成本比单片机成本要高出很多,且PLC输出端口数越多PLC价格就越贵;其四,从实时性上
6、讲单片机更具优越性,因为PLC在使用中有很大机械延时,对于一个浓度监测系统来讲快速、实时性是我们一定要重视原因。基于以上原因考虑,此次设计我们选择方案一。3 单元模块介绍3.1 二氧化碳传感器 此次设计所用二氧化碳传感器为CDM4161,CDM4161有别于固态或液态电解质气体传感器,半导体气体传感器是利用半导体材料多种化学特征将空气中含有特定气体(即待测气体)以合适电信号检测或定量器件。其优点是灵敏度高、响应速度快、体积小、寿命长、便于集成化、智能化,能使检测转换一体化。世界上最先实现半导体气体传感器商品化是日本费加罗企业发明TGS系列半导体气体传感器。CDM4161是费加罗企业生产一个CO
7、2气体浓度测试模块,其内部集成了TGS4161 CO2气体传感器和PICl6LF88单片机,CDM4161对空气中CO2气体浓度测量范围为4004000 ppm,而且在空气中对CO2气体有高选择性而对一氧化碳和甲烷等气体不敏感,CDM4161内部集成单片机可对传感器采集到信号处理和自动校准,以使其输出电平值和CO2气体浓度保持良好线性关系。CDM4161对外提供5个引脚,其引脚功效描述如表3.1所表示。表3.1 CDM4161引脚功效描述引脚序号引脚名称引脚功效1Vin+5V电源2Vcone二氧化碳浓度测试输出3CTRL控制信号输出4TRBL故障信号输出5GND接地端 工作时CDM4161引脚
8、l接+5 V电源,引脚2输出电压范围04-4 V。相当于CO2气体浓度范嗣为4004 000 ppm。该模块许可用户经过跳线设置4档极限值,当监测到CO2浓度高于设定值时。引脚3输出高电平以驱动外部通风设备,反之监测到CO2浓度由高转低,且低于某一门限值时,引脚3输出电平也由高变低关闭外围控制设备,CDM4161板上跳线和所设定极限值和引脚3输出电位改变关系如表3.2所表示。引脚4在传感器故障时输出低电位,可经过该引脚连接蜂鸣器以立即监测CDM4161工作状态。CDM4161模块有3个工作状态指示灯,当模块上电时CDM4161需要预热2 h,比时板上绿灯闪烁,以后进入正常工作状态后,绿灯常亮。
9、当引脚3输出高电位时,红灯闪烁,当模块内部传感器故障时黄灯闪烁。表3.2 CDM4161跳线方法档级跳线插座JP3跳线插座JP4二氧化碳浓度设定值/ppm引脚3电位 改变1断断8007200低到高高到低2断连1000900低到高高到低3连断15001350低到高高到低4断断1800低到高高到低3.2 放大电路 放大电路是增加电信号幅度或功率电子电路。应用放大电路实现放大装置称为放大器。它关键是电子有源器件,如电子管、晶体管等。为了实现放大,必需给放大器提供能量。常见能源是直流电源,但有放大器也利用高频电源作为泵浦源。放大作用实质是把电源能量转移给输出信号。输入信号作用是控制这种转移,使放大器输
10、出信号改变反复或反应输入信号改变。现代电子系统中,电信号产生、发送、接收、变换和处理,几乎全部以放大电路为基础。20世纪初,真空三极管发明和电信号放大实现,标志着电子学发展到一个新阶段。20世纪40年代末晶体管问世,尤其是60年代集成电路问世,加速了电子放大器以至电子系统小型化和微型化进程。 现代使用最广是以晶体管(双极型晶体管或场效应晶体管)放大电路为基础集成放大器。大功率放大和高频、微波低噪声放大,常见分立晶体管放大器。高频和微波大功率放大关键靠特殊类型真空管,如功率三极管或四极管、磁控管、速调管、行波管和正交场放大管等。3.2.1 放大电路特点一、有静态和动态两种工作状态,所以有时往往要
11、画出它直流通路和交流通路才能进行分析;二、电路往往加有负反馈,这种反馈有时在本级内,有时是从后级反馈到前级,所以在分析这一级时还要能瞻前顾后。在弄通每一级原理以后就能够把整个电路串通起来进行全方面综合。3.2.2放大电路性能指标电压放大倍数、输入电阻和输出电阻是放大电路三个关键性能指标,分析这三个指标最常见方法是微变等效电路法,这是一个在小信号放大条件下,将非线性三极管放大电路等效为线性放大电路。1放大倍数放大倍数又称增益,它是衡量放大电路放大能力指标。依据需要处理输入和输出量不一样,放大倍数有电压、电流、互阻、互导和功率放大倍数等,其中电压放大倍数应用最多。2输入电阻 放大电路输入电阻是从输
12、入端向放大电路内看进去等效电阻,它等于放大电路输出端接实际负载电阻后,输入电压和输入电流之比,即Ri=Ui/Ii。对于信号源来说,输入电阻就是它等效负载。输入电阻大小反应了放大电路对信号源影响程度。输入电阻越大,放大电路从信号源汲取电流(即输入电流)就越小,信号源内阻上压降就越小,其实际输入电压就越靠近于信号源电压,常称为恒压输入。反之,当要求恒流输入时,则必需使RiRs;若要求取得最大功率输入,则要求Ri=Rs,常称为阻抗匹配。3输出电阻对负载而言,放大电路输出端可等效为一个信号源。输出电阻越小,输出电压受负载影响就越小,若Ro=0,则输出电压大小将不受RL大小影响,称为恒压输出。当RL整定
13、值引风机工作YN显示实时浓度 延时5秒图4.1系统程序步骤图5 总结室内空气质量控制系统设计关键分为硬件设计和软件设计。依据设计前对该系统所要实现功效要求,综合考虑采取AT89C51单片机为控制关键。因为所学知识限制,本系统实现功效不是很健全,但在设计该系统过程中,让我学会了系统设计方法,和养成了系统思索思维方法。首先要了解系统所要实现功效;其次依据功效去选择对应硬件资源;再次将一个大系统进行模块化划分,然后逐一去攻破。最终把全部模块进行优化整合,便得到了一个完整系统。基于这么思绪,我完成了室内空气质量控制系统基础设计。系统控制含有运行可靠、功效齐全、投资低等特点。同时,利用单片本身 数据处理
14、功效使整个控制系统结构线路更为简单、控制更为方便、系统更易于维护。在系统中,我们利用光电传感器对信号进行检测,并将经过信号处理模块单元处理后信号送入单片机P10端进行单位时间内计数。再由单片机依据所检测信号数量和二氧化碳比值关系进行数据处理和数据显示。从而实现工作是否正常运行做出了一定监测。为系统能够安全、正常运行提供了基础。 此次设计当然还存在部分或多或少问题,尤其是和传感器实际工作情况还有一定差距还有很多现实性干扰没能考虑进去。因为时间有限,所设计东西只能在理想状态下正常工作,这是我下来以后所要对自己设计东西进行改善地方。 6 致谢 在此次课程设计过程中,郭老师对该设计构思到最终定稿各个步
15、骤给细心指导和教导,使我和我同伴最终得以顺利完成此次课程设计。在此我致上真挚谢意。 在设计过程中所涉猎多种软件(如visio、protel、protuse 、keil)也使我知识构架更为丰富。同时,经过这次做课程设计我也立即发觉自己知识点上漏洞,真正起到了查漏补缺效果。 这次课程设计能够顺利完成,我也很感谢在我身边默默帮助和支持好友。因为从她们身上我不仅学得了很多实用专业知识,同时也学到了团体合作精神关键性取得了更为坚实友谊,学会了从不一样角度去思索和看待问题。 在学习中,郭老师严谨治学态度、丰富渊博知识、敏锐学术思维、精益求精工作态度和侮人不倦师者风范是我终生学习标兵,导师高深精湛造诣和严谨
16、求实治学精神,将永远激励着我。在此,感谢郭老师支持和帮助,致以衷心感谢和高尚敬意。7参考文件1 徐科军主编.传感器和检测技术.北京:电子工业出版社, 2 谭浩强主编.C程序设计(第三版).北京:清华大学出版社, 3 谢自美主编.电子线路设计试验测试.武汉:华中科技大学出版社,.8 4 张毅刚主编.单片机原理及应用.北京:高等教育出版社. 5 康华光主编.电子技术基础模拟部分.北京:高等教育出版社, 6 袁鹏平主编.Protel 99电路设计实用教程.北京:化学工业出版社.10 7 杨天怡主编.微机计算机控制技术.重庆:重庆大学出版社 8 刘靖编.单片机控制技术.北京:北京理工大学出版社.06附
17、录一:相关程序#include /调用外函数/ #include #include #include #include #include #include /*初始化CPU*/ void init_cpu() /初始化cPu EA=1; TR0=1; TR1=1; TMOD=0x11; TH1=0x3c; TL1=0xb0; /*void time1(void) interrupt 3 using 1 TH1=(65536-50000)/256; TL1=(65536-50000)%256; keyval=P1; * /初始化CPU结束/ void main_menu_initial() /L
18、CD主菜单初始化./ main1_menu0.menu_count=4; /有4个菜单项./ main1_menu0.display=measurearray; /定义一个”开始测量“数组/main1_menu0.subs=NULL; main1_menu0.children_menus=measure_menu; /目前菜单子菜单 指针 main1_menu0.parent_menus=NULL; /还有“数据存放”、“时间设置”/ void measure_menu_initial() /“开始测量”菜单设置/ measure_menu0.menu_count=2; measure_men
19、u0.display=qr; /开始测量函数, 确定. measure_menu0.subs=start_measure_function; /开始测量函数 measure_menu0.children_menus=NULL; measure_menu0.parent_menus=main1_menu; measure_menu1.menu_count=2; measure_menu1.display=qx; /开始测量函数, 取 消. measure_menu1.subs=NULL; measure_menu1.children_menus=NULL; measure_menu1.paren
20、t_menus=main1_menu; /还有void store_menu_initial()、void time_menu_initial()/ void led_menu_pro() max_item=menu_led-menu_count; switch(keyval) case 0: break;case 1: /向上键. if(user_choosen=0) user_choosen=max_item; shuaxin=1; user_choosen-; break; /“向上”“向下”“确定”“取消”键/ if(shuaxin) /是否需要刷新LCD标志位. Clr_Scr();
21、 shuaxin=0; led_menu_show(); v oid led_menu_show() uchar n; max_item=menu_led-menu_count; if (max_item=4) /菜单项为3则表示为主菜单. for(n=0;n4;n+) draw_bmp(n*2,20,96,0,menu_ledn.display); select_item(user_choosen); /标识出目前菜单项. else switch(temp_choosen) case 0: draw_bmp(0,20,96,0,measurearray); /“开始测量”数组 / break
22、; default: break; for(n=0;nmax_item;n+) draw_bmp(n+1)*2,20,32,0,menu_ledn.display); select_item(user_choosen+1); void select_item(uchar n) draw_bmp(n*2,2,16,0,curflag); void start_measure_function(void) /开始测量函数/ main_Menu(); /*-主函数-*/ main() init_cpu(); Init_Clock();init_lcd(); Disp_Img(FirstPage); delay(); /延时/ ClockMsg(); Refresh(); delay(2500); Clr_Scr(); main_Menu(); Clr_Scr(); main_menu_initial(); measure_menu_initial(); store_menu_initial(); time_menu_initial(); communication_menu_initial(); while(1) keyval=get_key(); /读键. led_menu_pro(); / 合适延时预防因为不停查忙而花费大量CUP资源 /