系统简介
酒精具有麻痹大脑的作用,会导致饮酒的人开车产生交通事故的概率大大的增加,产生的悲剧也越来越多,而其造成的结果也是不可逆的。出于减少这些惨剧的发生的目的,设计一款简单而功能又齐全的仪器去检测呼出气体中酒精含量是十分必要而有意义的。
STC89C51单片机和MQ-3传感器是设计的核心,设计了显示、声光报警、按键等相关电路。各模块的功能具体分析,并侧重研究了核心器件。此系统具有检测、报警、显示等功能,具有低成本、携带方便、人性化的特点,因此实用度高,存在很大的发展空间。
关键词:STC89C51单片机;MQ-3传感器;A/D转换
1绪论
改革开放以来,我国经济得到了飞速发展,老百姓的生活条件越来越好,生活需求不只是吃饱穿暖那么简单,各种需求被创造出来,而烟酒却是一直的消费主力军,相信中国的酒文化大家都知道,然而拉动消费的同时,酒精的影响也带来了一系列问题。喝酒之后开车造成的交通事故最为严重。为了减少此类事件的发生,设计一款简单而功能又齐全的仪器去检测呼出气体中酒精含量是十分必要而有意义的。酒精浓度检测仪的精度上下关键在于对乙醇分子的检测,因此对传感器的选择就变得十分重要。酒精气敏传感器主要是将酒精在空气中的体积分子转化成相应的电信号,方便信息能很好的被人员、相关设备、计算机等应用。单片机虽然和通用计算机有些相同的基础部件,但是和计算机又有些不同的地方。 小小的体积,能随时迅速的对外部发生的事件做出反应,快速收集大批数据,做出相关的判断和推理后,可以对控制对象的参数调整,实现该仪器的设计要求,因此该检测仪具有重大的研究意义。
1.1国内外研究背景及发展现状
大多数国家对酒驾、醉驾的检测都是采用带有呼吸装置的酒精测试仪,以此确定人体内酒精的含量,从而判断被检测者是否酒驾、醉驾。酒精检测仪的研发背景就是为了减少因酒驾而造成的交通事故的发生,确保其生命财产安全[[]]。而酒精检测仪不仅仅应用于交通安全中,很多使用到酒精生产的企业以及使用酒精进行消毒的场合也可以使用,例如酒厂、酒精消毒药厂,化妆品厂等等。可以有效的、实时的、检测酒精浓度,避免产生火灾事故[[]]。
酒精测试的装置目前有5种,一种是燃料电池型,一种是半导体型,还有一种就是红外线型,剩下两种为气体色谱型和比色型[[]]。考虑到成本价格方面的原因,只有半导体型和燃料电池型在市场上广泛流通,占据大半江山。燃料电池型能把气体直接转换成电能,是一种环保型能源,对环境气候都不会造成污染,正因如此,世界上都在积极研究它的应用[[]]。燃料电池型可以应用到很多环境中,而它的一个分支就是酒精传感器。把特种催化剂放满在燃烧室内,然后酒精进入到燃烧室内充分燃烧,内能就转化成了电能,外加负载就会有电极上产生的电压消耗了,电压就和燃烧室内的乙醇浓度成正比关系[[]]。使用燃料电池型的酒精测试仪拥有灵敏度高、稳定性能高、抗干扰性强等特点[[]]。虽然优点不少,但是只有少数国家能生产,因为对相关传感器的技术要求高,生产成本也不低,而且制作也不容易,性价比不划算[[]]。
1.2国内外研究意义
近几年来,第三次工业革命之后经济得到了超高速发展,人民的生活水平也迅速提高,小汽车成为了大家常见的交通工具,数量也越来越多,有些家庭甚至有2-3辆汽车。随着汽车数量的增多,交通事故也越来越多,而这些交通事故中因为酒驾引起的总是位居榜首,成为最大的隐患。过度饮酒会导致酒后驾车产生车祸,因为体内的酒精超过量值后会酒精中毒,神经被麻痹,大脑的反应会变得迟缓,甚至连反应都没有,身体也不会受到控制[[]]。很多年之前的交通警察判断一个人是否酒驾只能依靠视觉、嗅觉观察其神态举止,或者到医院去检测酒精含量。而这两种方法都有缺点,通过主观意识去判断是不准确的,而送去医院又不及时,可能到医院的时候驾驶员已经酒醒了,造成人力、警力的浪费,产生不必要的误会[[]]。当人体中的酒精含量低于一个不会引起上面说的症状的值时就不会造成危害,根据这个思路可以设计一种酒精测试仪,能让执法人员及时有效的对驾驶员进行检测,从而控制酒驾的发生,维护交通安全,也是对驾驶员减少犯罪的措施[[]]。因此,研究此仪器不仅仅是检测酒精那么简单,还是促进社会稳定,增强人民幸福感的一种途径,具有重大的社会意义。
2系统设计与研究内容
在本篇文章中,酒精浓度检测仪的核心部分由气体传感器和单片机组成。通过气体传感器检测空气中酒精分子的浓度,在数模转换时对数据进行处理,并判定是否超过酒驾、醉驾的阈值,如果超过那么蜂鸣器和LED灯提示,同时酒精浓度值由LCD1602液晶屏实时显示测量出来。按键可以设置酒精检测仪的阈值,并保存STC单片机EEPROM中,具有掉电保护。设计方案具体如图2.1所示。
图2.1 设计方案图
Fig.2.1 Design scheme
3硬件系统设计
3.1MQ-3传感器
MQ-3传感器所使用到的气敏材料为二氧化锡(SnO2)。二氧化锡(SnO2)是一种在空气中电导率比较低的气敏材料,适合用来制作酒精传感器。当在一个周围环境存在酒精气体时,气体传感器的电导率会因为酒精浓度的上升而提高,应用单一的电导率变换为与该气体浓度相匹配的输出信号[[]11]。MQ-3气体传感器对酒精气体分子的灵敏度高,可以抵御许多外部因素的干扰,像常见的有烟雾、汽油、液体、水蒸气等。
在传感器刚上电时传感器的输出电压出现一种先上升再下降,最后到达一个平衡状态稳定住,因此,当我们需要使用到传感器时,可以提前进行预热大概一两分钟,这样才可以保证传感器使用时处于稳定状态。传感器输出电压与周围酒精气体浓度有一定线性关系,酒精浓度越高,电压也随之增大。MQ-3传感器在一个周围不存在酒精气体的环境中电压无太大变化,大约为1V,若是周围存在酒精气体,那么传感器的电压会随着浓度的增大而增高,酒精浓度增高20mg/L,那么电压就会上升1V。 MQ-3实物图如图3.1所示
图3.1 MQ-3实物图
Fig.3.1 MQ-3 physical diagram
3.2A/D转换电路
3.2.1ADC0832概述
一般情况下,上位机和芯片之间需要四条数据线:分别为CS、时钟、输入和输出。值得注意的是,在通信过程中,一般输入和输出不会同时使用,但是由于输入和输出都是双向接口。这就使得如果在输入或者输出端口资源欠缺的情况下,就可以在数据条中同时使用输出和输入。如果ADC0832无法正常运转,则增加CS输入,但是值得注意的是,在这个过程中,如果芯片被禁用,那么时钟和输入或者输出之间就可以进行随意切换。但是如果要将数模转换变成CS able终端时,就必须要求在转换开始前设定并保持低水平。在刚开始转换对应的芯片时,对应的处理器会把时钟脉冲输入对应的时钟端,同时借助数模转换端的输入通道进行对应的数据信号输入。在输入首个脉冲前,应该加高输入终端,才会显示启动信号。在第2位和第3位脉冲被选中之前,需要在DI终端中输入2位数据以选择通道功能[[]12]。
3.2.2ADC0832工作原理
ADC0832具有8个接口,分别是CS_,CH0,CH1,GND,DI,DO,C LK, VCC/REF。若是它没有处于工作状态,这时候芯片不能使用,CS就该是高电平,我们可以随意设置输入口、输出口以及时钟的高低电平。使能CS并让他一直保持低电平,当完成模拟信号和数字信号的转换之后,芯片正常工作。时钟脉由CPU输入到时钟,在输入输出端口输入数据,即输入通道功能的数据信号。DI端表示起始信号时必须为高电平,而且是在第1个时钟脉冲的下沉之前。用作选择通道功能的时候,DI端应该在第2、3个脉冲下沉之前输入2位数据。当DI端的输入电平失去作用时,说明第3个脉冲已经下沉了。后来我们在输入输出端口选择输出端口,用于读取转换数据。在输出端口输出转换数据,之后DO端每输出一位数据就代表了又有一个脉冲下沉了。当第11个脉冲时,DATA0被传输出来。当完成这个操作后输出下一个字节,各个端子进行配合完成,换个意思表达,也就是当第十一个字节一直下沉,直至到DATA0,接着八位数据也就随之输出。当这十九个脉冲都完成数据传输时,也就意味着模拟信号和数字信号的转换过程完成。当完成转换过后,CS置于高电平,芯片停止使用。最后我们只需要处理转换后得到的数据即可。
输入通道模拟信号,此时输入电压需要在零到五伏特之间,电压精度需要19.53mV。若是IN+与IN-输入,则电压的变化范围可以由所变动,可以在较大范围内使用电压,这样可以提高转换宽度。再此过程中,若是IN-的电压大于IN+的电压,那么得到的转换结果是一个固定值,这个固定值为00H。芯片与单片机有四个端口,一个是CS,一个是CLK,一个是,DO,还有一个就是DI。因为这几个端口和单片机都是双向通信,并且输出端口和输入端口在信号传输时不能同时有效,所以可以连接在一条电路上。具体的电路图如图3.2所示。
图3.2 ADC0832原理图
Fig.3.2 ADC0832 schematic
3.3STC89C51单片机系统设计
3.3.1概述
STC89C51是我国具备自主知识产权的宏晶科技公司研发的微型控制器,其性能稳定,能耗低,并且具有8k的可编程闪存,该内核虽然是使用的是经典内核,但该芯片和其他传统的51单片机有些区别,做了很多改进,因此与其他单片机相比多了很多功能[[]13]。促使STC89C51成为很多嵌入式系统设计方案的首选芯片。STC89C51单片机有40个引脚,首先是正极引脚VCC(40)、接地引脚GND(20),单片机需要从外部连接+5V的电源才能工作。其次就是时钟电路引脚XTAL1(19)、XTAL2(18),单片机没有时钟脉冲信号是无法工作的,而这两个引脚接晶振电路为其提供脉冲信号。然后就是控制信号引脚EA(31)、RST(9)、ALE(30)、PSEN(29),这4个引脚的功能就是控制外围器件然后协调工作。剩下的就是输入/输出引脚P0,P0.0P0.7(32-39)、P1,P1.0P1.7(1-8)、P2,P2.0P2.7(21-28)、P3,P3.0P3.7(10-17)。
3.3.2最小系统
从字面上理解就是所形成的系统使用最少元器件就可以让单片机运行。下面将介绍最小系统必不可少的元器件和相关用处。
第一,电源是不能缺席的,没有它一切电子产品都没有用处。因为51单片机在4.5V~5.5V的电压之间就可以正常工作了,正因如此供电就采用正五伏电源供电,也可以使用手机充电器。
高增益反向放大器是振荡器一个极其重要的部分。引脚XTAL1、XTAL2分别是此放大器的输入端和输出端。本设计在设计时钟电路时,在这两个引脚接入振荡器和电容,这样所形成的自激振荡电路较为稳定。通常电容C1和C2取30pF,对振荡频率有微调作用。晶振频率范围是1.2MHz-12MHz。但是也有其他情况发生,最高可以达到24MHz以上。功耗与频率成正比,频率越大,功耗也大。所以在这个设计中选择12MHz的石英晶振就可以了。虽然振荡频率会被并联在晶振两端的两个电容影响,但是这些影响是非常轻微的。若是使用石英晶振,电容的选择范围就在20 40pF,本次这个系统设计所使用的位30pF的石英晶振;若是使用陶瓷谐振器件,电容选择范围在在3050pF,它的电容要比石英晶振的电容大。在这次设计中,我们也是使用30pF的陶瓷电容。具体如下图所示:
最小系统可由下图表示:
图3.5 单片机最小系统
。
3.6原理图绘制软件介绍
发展到今,Altium Designer已有多个版本,它具有很多功能,拥有最为顶层的设计,它结合了Protel 99 SE等众多软件的优点,对各个功能进行实验和分析。是一款经济实用的设计软件[[]15]。
Altium Designer已不是简单的printed circuit board(印制电路板)设计工具,由多个功能模块组成,它们分别是原理图(SCH)设计、原理图(SCH)仿真、自动布线器(Auto Rounter)和FPGA(现场可编程逻辑门阵列)设计及嵌入式软件开发等,功能十分强大,而物理设计使用到PCB为核心的都覆盖了。该软件将电路设计结合了应有的技术,是电路设计必不可少的一部分。
和早期的版本相比,Altium Designer还在页面设计上进行了改进,不仅变得更加丰富大气,而且非常的符合用户的审美要求。Altium Designer还汇聚了VHDL(超高速集成电路汇聚语言)和FPGA设计,而且大大提升了在电路设计的同步要求。所以该软件的功能得到了大大的增强。
4软件设计
4.1软件开发环境
Keil这款软件可以提供很多功能,他可以把这些功能都集合在一个开发环境下面,具有比较完美的兼容性。Keil具有高效性,对于生成的目标代码逻辑严谨,拥有紧凑的汇编代码,容易理解。当进行程序较复杂的设计时,使用Keil软件具有相当大的优势。在与传统的语言相对比,C语言确实具备着很多不一般的优点,在Keil中也具备着C语言的编译环境,并且在维护和可读性方面能够让人轻而易举的看懂,简单明了。能够更加便捷的学习和使用。而且还能够在效率上和研发的时间周期上节省很多精力。另外,Keil还具备嵌入装配,所以我们可以在关键的位置上嵌入,就可以提升效率。Keil不仅研发出了新的语言环境,同时还保存着旧有的高效汇编代码,C51编译器的功能也在不断的增强之中,可以衍生出其他产品。C51的编译器、汇编器以及操作系统之类的都可以集成到uVision2的开发环境里。并且这个环境较为灵活,Keil软件是非常好的选择。如果使用的是汇编语言而不是C语言进行编程,也可以选择这个软件,因为它拥有这方便易用的集成环境,强大的功能也会是事情变得更加简单。
4.2系统重要函数介绍
4.2.1主函数设计
通常而言,主函数必须要void main( ),每一个程序都是需要它,不然就不完整。接着就是对于系统的初始化,初始化完成后对器件进行重新赋值处理,并对一些变量进行初始化和设定。若是初始化后进入死循环,那么不会出来结果,若是没有进入死循环,那么程序只会运行一次之后就退出来了,所以为了达到能随时随地检测执行的结果,需要加入死循环就能达到效果。在设计主程序中的主函数中不要放太长的代码,过多的代码也会给阅读和修改造成麻烦,具体的代码一般都是采用函数进行封装然后在主函数中进行调用。具体流程图如图4.1所示。
图4.1 主函数流程图
4.3软件测试及仿真
测试及仿真需要的工具有:Proteus、Keil uVision4、实物电路板、开发板和下载器等等。
本次设计使用KEIL进行程序编写,然后把编辑好的程序进行操作生成.HEX文件,接着就可以利用下载器将程序下载到单片机中。或者使用开发板把程序烧录进去。然后可以启动系统观察整个运行状态,如果有不符合设计要求的地方就需要调试程序,直到最后得到一个完善无误的程序。
Proteus仿真软件可以实现电路相关功能的模拟运行,把电路画好之后导入.HEX文件然后进行仿真,仿真图如图4.4所示。
图4.4 酒精测试仪仿真图
5实物制作与测试
5.1实物制作
根据上述理论与电路原理图,需要购买相关的元器件,然后按照原理图进行焊接。当实物作品按照电路原理图焊接好之后,还需要对其相关器件进行检测,及时发现问题解决问题。在焊接过程中如果出现了错误,比如有器件短路、断路,有些没有焊接上或者是焊得不牢固,还有就是方向放反了,正负极接错了等问题。需要将制作的实物和正确无误的电路原理图进行对比纠正,看有什么缺的地方或者有器件方向放反的地方,然后再把缺的或者反的给放置焊接和调整方向之后重新焊接。这种方法适用于漏焊、方向接错的问题。
数字万用表可以用来检测出短路、断路还有虚焊这类问题,方法很简单,把万用表的档位换到二极管档之后,将红笔和黑笔分别放到需要检测的器件两端,如果万用表响就说明该处是导通的,如果万用表没有响就说明此处出现故障。原理很简单,万用表的红笔和黑笔如果连接了,万用表中的蜂鸣器就会发出响声。基于这个原理来检测电路的相关情况。检测出问题之后,就需要根据实物的情况找到解决方法。
5.2实物测试
当实物制作完成后,需要对成品的相关性能进行测试,酒精测试仪成品如图5.1所示。图5.1中左边的第一个按键是设置键,通过这个按键可以进入到设置酒驾阈值和醉驾阈值的模式,第二个按键是加值键,增大阈值,第三个是减值键,减小阈值,第四个按键就是复位电路的按键开关。其中液晶屏进行文字显示,蜂鸣器在液晶屏的上方,发光二极管在减值键和复位按键的中间,两者组成了声光报警电路。MQ-3传感器和ADC0832在液晶屏的右下角,而液晶屏的左上角为电位器。
图5.1 酒精测试仪成品图
Fig. 5.1 Finished product drawing of Alcohol Tester
接入+5V电源之后,打开开关,这时候传感器开始预热,并且通过液晶屏来进行预热结束倒计时提示,传感器预热倒计时如图5.2所示。
图5.2 传感器倒计时显示图
Fig5.2 Sensor countdown display
当液晶屏显示的倒计时结束后就可以通过按键来设置酒驾的阈值和醉驾的阈值,设置好之后使用含有酒精的液体靠近MQ-3传感器,这时传感器开始工作,会把相应的酒精浓度值转换相应的电压值,然后通过A/D转换电路进行处理,送入到单片机系统中,最后系统判断出酒精浓度值是否超过酒驾和醉驾的阈值。在本次测试中,酒精浓度值已经超过醉驾的阈值,所以发光二极管亮起,蜂鸣器发声,测试结果如图5.3所示。当被测量的液体拿走之后,传感器周围的酒精气体变得越来越少,数值会慢慢下降,降到醉驾阈值以下蜂鸣器停止发声,之后降到酒驾阈值以下发光二极管熄灭,最后下降到0,此时测试结束。测试的结果说明实物成品是制作成功的,设计的功能要求也达到了,但是需要注意的是被测量的酒精液体与传感器的距离不能太远,因为这样会导致测量时间变长。
图5.3 测试结果图
Fig5.2 Chart of test results
6总结与展望
本次设计可以分为硬件电路和软件编写两部分。硬件部分包括单片机、传感器、液晶屏、按键、蜂鸣器、LED灯等电路,软件部分就是相关程序的编写和调试。设计要求和功能要求通过STC89C51单片机进行实现,通过MQ-3气体传感器检测酒精浓度值,输出信号经过相关电路处理,转换成与其对应的电压信号传送到单片机系统中,然后经过模/数转换电路,信号的处理由STC89C51单片机及外围电路进行操作。随后LCD1602液晶显示屏就会把酒精浓度的测量值显示出来,当酒精浓度值超过酒驾的阈值LED灯就会亮起,当酒精浓度值超过醉驾的阈值LED灯亮起并且蜂鸣器鸣叫。使用Keil uVision软件进行程序开发编写,采用模块化设计思想。此设计作品拥有简单操作、反应灵敏、检测准确、可以调节等特点,在现实生活中有着非常实用的价值。
图5.3 测试结果图
6总结与展望
本次设计可以分为硬件电路和软件编写两部分。硬件部分包括单片机、传感器、液晶屏、按键、蜂鸣器、LED灯等电路,软件部分就是相关程序的编写和调试。设计要求和功能要求通过STC89C51单片机进行实现,通过MQ-3气体传感器检测酒精浓度值,输出信号经过相关电路处理,转换成与其对应的电压信号传送到单片机系统中,然后经过模/数转换电路,信号的处理由STC89C51单片机及外围电路进行操作。随后LCD1602液晶显示屏就会把酒精浓度的测量值显示出来,当酒精浓度值超过酒驾的阈值LED灯就会亮起,当酒精浓度值超过醉驾的阈值LED灯亮起并且蜂鸣器鸣叫。使用Keil uVision软件进行程序开发编写,采用模块化设计思想。此设计作品拥有简单操作、反应灵敏、检测准确、可以调节等特点,在现实生活中有着非常实用的价值。