智能酒精浓度检测仪的设计方案.docx
《智能酒精浓度检测仪的设计方案.docx》由会员分享,可在线阅读,更多相关《智能酒精浓度检测仪的设计方案.docx(48页珍藏版)》请在冰点文库上搜索。
智能酒精浓度检测仪的设计方案
智能酒精浓度检测仪的设计方案
第1章绪论
1.1选题的依据和课题的意义
根据WTO数据,全球2003年得人均纯酒精消费量为6.2L,其中欧洲地区人均达11.9L,美洲地区人均为8.7L。
俄罗斯及其周边的东欧国家酒精消费量最高,其次为欧洲其他国家。
在人均国民生产总值(GDP)低于7000美元的低收入国家,酒精消费量与人均GDP有关,GDP越高这个国家或者地区的酒精消费量也就越高。
而随着我国近年来高速发展的经济水平和居民生活水平,私家车的占有率直线上升,各式各样的汽车已经成为人们的代步工具。
同时伴随而来的是频频发生的交通事故,尤其是因为酒后驾车所引发的交通事故,给自己和人们的生命财产安全带来威胁,同时也给国家和社会带来了严重的经济损失。
因此,对于每个驾驶人来说拥有一个酒精浓度检测仪,在每次驾驶之前自行检测酒精浓度再决定是否安全驾驶,这是对自己、对家庭、对社会有责任感的体现。
此外,从工厂企业到居民家庭,酒精泄露的检测、监控对居民的人身和财产安全都是十分重要和必不可少的。
因此,酒精浓度检测仪具有十分广阔的实际应用价值和潜在的市场要求。
1.2国外研究概况
受20世纪信息技术快速发展的影响,传感技术逐渐走向成熟,在生活生产中得到了广泛的应用。
由于传感器在各个领域都有着举足轻重的作用,因此,高精度、高可靠性、微型化、低功耗和智能数字化成了其发展方向。
为了检查酒驾,警察常常使用一种便携式的酒精呼吸检测仪。
通过检测驾驶员呼出的气体判断驾驶者是否饮酒,而目前使用的酒精呼吸检测仪只能初步显示驾驶员是否饮酒,具体酒精浓度含量还得通过血检才能测得。
为了简化其流程,英国部已推出一种超级酒精呼吸检测仪,能够根据体温、呼吸频率等情况,当场判断出驾驶员体的酒精含量。
由此可见,高精度、高可靠性、微型化以及低功耗是酒精浓度检测仪今后发展的主流方向。
迄今为止,对气体中酒精含量进行检测的设备有燃料电池型、半导体型、红外线型、气体色谱分析型和比色型五种类型,但由于使用方便的原因,目前常用的有燃料电池型和半导体型两种。
燃料电池在当前世界上都在广泛研究的环保能源,它能够直接把可燃的气体转变为电能,而不产生任何污染。
酒精传感器是燃料电池其中的一个分支。
而燃料电池酒精传感器采用的是贵金属白金为电极,在燃烧室中充满特种催化剂,使进入燃烧室中的酒精充分燃烧并转成为电能,也就是说在两边电极上产生电压,然后电能在直接消耗于外接负载上,此电压和进到燃烧室中的气体的酒精的浓度是成正比。
和半导体型的相比,燃料电池型的呼气酒精浓度测试仪是具有良好的稳定性,高精度,难以干扰的优点,但是由于燃料电池型酒精传感器结部构要非常精密的,因此制造难度相当大,目前仅有美国、英国、德国等少数几个国家能够生产,加上材料成本高,因此价格相当昂贵,通常是半导体传感器的几十倍。
1.3课题研究方法
(1)文献索引法:
利用学校图书馆资料和文献及通过网络查询相关资料对本课题有足够深的了解,为本设计的具体模块电路做好理论准备。
(2)调查法:
与身边的同学和朋友进行交流,充分考虑本设计实现的功能,尽可能完善该设计的功能。
(3)对比分析法:
与目前市场上相关产品进行比较,发现该酒精检测仪存在的不足以及可以优化的部分,加以改进。
1.4设计构成及研究容
本文设计的智能酒精浓度检测仪采用的是气敏传感器,属于半导体型,该传感器实质是个可变电阻,在它两端加以固定的电压,随着所处环境酒精浓度的升高阻值将进行线性变化,从而将酒精浓度的含量转变为电压的变化。
该酒精检测仪以C51单片机和气敏酒精传感器为核心,具有声光报警和LCD显示功能。
为了满足不同环境下的监测,可根据不同的环境设置不同的阈值,超过阈值即进行声光报警,提示危害。
采用C语言来实现其软件功能。
本设计只要包括以下容:
(1)主控芯片的选择;在此设计中选择了C51系列单片机,熟悉C51系列芯片怎样控制外围硬件电路。
(2)酒精浓度检测模块的设计;酒精浓度常用酒精传感器来检测,了解该传感器的工作原理,制作数据采集模块完成数据的采集。
(3)A/D转换模块的设计;A/D转换器的选择,将采集的酒精浓度模拟信号进行转换后送至单片机存储、处理。
(4)键盘模块的设计;要通过键盘完成设定不同环境中酒精浓度的阈值。
(5)声光报警模块的设计;超过设定的阈值直观地给予警示。
(6)液晶显示模块的设计;准确显示出检测到的数据。
(7)各个硬件模块电路衔接。
(8)PCB的布板、元件焊接及功能调试。
第2章系统的工作原理与结构
2.1工作原理
酒精浓度检测仪是用来检测所处环境中的酒精浓度的,并显示出检测的结果数值。
而本设计所做的智能酒精浓度酒精检测仪除具有这个基本功能外,还可通过手动随意设置酒精浓度的阀值,以划定不同环境条件下酒精的安全界限,同时具有声光报警功能。
它主要由酒精传感器、模数转换器、单片机、LCD显示、键盘模块以及声光报警部分组成。
数据的采集由酒精传感器完成,酒精传感器将检测的酒精浓度转换为电信号,然后将电信号传递给模数转换器,经过模数转换器转换后,把转换后得到的数字信号传给单片机,单片机对所输入的数字信号进行分析处理,最后将分析处理的结果通过显示器显示出来。
同时与根据键盘设定的酒精浓度阀值进行比对,如果检测到所处环境中的酒精浓度超过设定的界线,那么单片机将会控制蜂鸣器发出声音报警和发光LED不断闪烁,以提示危害。
2.2结构框图
硬件系统结构框图如下图2-1所示
图2-1系统结构框图
2.3智能酒精浓度检测仪的整体结构特点
本文设计的智能酒精浓度检测仪具有如下特点:
(1)数据采集系统以单片机为控制核心,外围电路带有LCD显示和键盘响应电路,无需其他计算机,用户就可与之进行交互工作,完成数据的采集、存储、计算、分析等过程。
(2)系统具有低功耗、小型化、高性价比、灵敏度高等特点。
(3)从便携式的角度出发,系统通过键盘设置酒精浓度的阀值,结合单片机的控制,实现了人机交互操作、界面友好。
(4)软件系统采用C语言进行编写,在兼顾实时性处理的同时,也方便了对数据的处理。
第3章检测仪的硬件设计
3.1单片机的选择
MCS-51单片机是美国Intel公司于1980年推出的一款相当成功的产品,该系列或其兼容的单片机仍是应用的主流产品之一,该系列单片机主要包括8031,8051,8751和89C51等通用产品。
本次设计选用的是STC89C52单片机,STC89C52是功耗低、性能高的CMOS8位微控制器,有8K在系统上可编程Flash储存器。
使用宏晶高密度的非易失性存储器技术制造的,和工业80C51产品指令与引脚完全兼容。
片上Flash允许的程序存储器在系统上可编程,亦适于常规编器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:
8字节的Flash,256字节的RAM,32位的I/O口线,看门狗定时器,2个数据指针,3个16位定时器/计数器,1个6向量2级中断结构,全双工串行口,片晶振及时钟电路。
除此,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,容被保存,振荡器被冻结。
STC89C52单片机作为控制核心,为了提高IO口的利用率,通过扩展一片8255芯片来实现液晶显示的功能。
单片机的IO口控制图如下图3-1-1所示
图3-1-1STC89C52的接口控制图
P0口用于接收模数转换的输出,P2.0用于模数转换的时钟控制,8255的扩展通过P2.1,P2.2,P2.5口来控制,P2.3用于作为模数转换的使能控制,P2.6,P2.7口用于模拟I2C连接外部存储芯片AT24C08,P3.3口为外部中断控制口,由它来控制酒精阈值的设定,液晶显示模块通过单片机控制8255来实现相应的功能.
8255芯片的引脚控制图如图3-1-2所示:
图3-1-28255的引脚控制图
8255芯片是一种典型的可编程通用并行接口芯片,用来扩展单片机的端口,它具有3个8位的并行口,有三位工作方式,可作为单片与各种外部设备连接的接口电路。
CS:
片选信号线,当该引脚为低电平时,8255被选中,允许8255与CPU通讯。
RESET:
复位输入线,当该引脚为高电平时,部寄存器被清除,所有I/O口均被置成输入方式。
A0、A1:
地址输入线。
当A0A1=00时,PA口被选中;
当A0A1=01时,PB口被选中;
当A0A1=10时,PC口被选中;
当A0A1=11时,控制寄存器被选中。
3.2酒精浓度检测的设计
酒精浓度的准确检测是决定该设计成功与否的关键因素,而酒精的检测依靠酒精传感器来实现信号的采集。
在本设计中选用灵敏度高、稳定性好的MQ-3气敏传感器,该传感器对乙醇蒸汽有很高的灵敏度和良好的选择性,快速的响应和恢复特性,长期的寿命和可靠的稳定性,以及简单的驱动电路。
它的工作原理是在确定的环境条件下,环境中的酒精浓度变化将会引起电阻值的变化,且这两种变化存在着线性关系。
3.2.1MQ-3气敏传感器的结构和外形
图3-2-1MQ3气敏元件结构外形图
在上图中,由微型AL2O3瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔管,加热器为敏感元件提供必要的工作条件。
封装好的气敏元件有6只针状管脚,其中4只用于信号提取,2只用于提供加热电流。
3.2.2MQ-3灵敏度特性曲线
图3-2-2MQ-3气敏元件的灵敏度特性曲线
在图3-2-2中给出了MQ-3气敏元件的灵敏度曲线,其中:
温度20℃;相对湿度:
65%;氧气浓度:
21%;RL:
200kΩ.Rs:
气敏元件在不同气体、不同浓度时的电阻值。
R0:
气敏元件在洁净空气中的电阻值。
3.2.3MQ-3的标准工作条件和环境条件
图3-2-3MQ-3气敏传感器阻值变化率与酒精浓度、外界温度的关系
为了更好地使用酒精传感器MQ-3,现将MQ-3的标准工作条件和环境条件进行介绍,分别如表3-2-1和表3-2-2所示:
表3-2-1工作条件
符号
参数名称
技术条件
备注
VC
回路电压
≤15V
ACorDC
VH
加热电压
5.0V±0.2V
ACorDC
RL
负载电阻
可调
RH
加热电阻
31Ω±3Ω
室温
PH
加热功耗
≤900mW
表3-2-2环境条件
符号
参数名称
技术条件
备注
Tao
使用温度
-10℃~50℃
Tas
储存温度
-20℃~70℃
RH
相对湿度
<95%RH
O2
氧气浓度
21%(标准条件)氧气的浓度将会影响灵敏度特性
最小值大于2%
3.2.3酒精浓度信号的采集
详细的酒精浓度采集电路见下图3-2-4所示:
图3-2-4酒精浓度采集电路
在上图中传感器将环境中的酒精浓度转化电压信号,在第4引脚直接输出电压信号模拟量,该模拟量将送到模数转换,通过单片机控制最终得出环境中酒精的含量,同时可以通过对电位器WR1的调节来改变输出的灵敏度。
3.3模数转换电路的设计
由于本设计中所用的是单一电源+5V,故由酒精浓度转化的电压信号也将在0~5V围,并且考虑到转换的速度应该要快,在此我们选用典型的8位逐次逼近型A/D转换器ADC0809.
3.3.1ADC0809的特点
(1)该转换器具有如下特点:
(2)分辨率为8位;
(3)转换时间为100us;
(4)很容易与微处理器连接;
(5)无须零位或者满量程调整;
(6)带有锁存控制逻辑的8通道多路转换开关,便于选择8路中的任一路进行转换;
(7)带锁存器的三态数据输出。
3.3.2模数转换电路
具体模数转换电路见图3-2-1所示
图3-2-1模数转换
在该检测仪的设计中只用到两路通道,即通道IN0和IN1.分别为酒精浓度的电压模拟信号和电压比较器LM393的基准电压信号,D0~D7为由酒精浓度引起而产生的电压数字量输出,结果将送至单片机进行分析和处理。
3.4按键设定阈值及阈值存储电路的设计
为了适应对不同环境中酒精浓度的检测和监控,必须调整该仪器的酒精浓度阀值以符合既定的工作要求。
同时为了节省硬件资源的消耗,于是在此通过外部中断的按键操作来改变酒精浓度的不同阀值,外部中断电路见下图3-4-1所示
图3-4-1外部中断按键电路
阈值存储电路的添加,既可以明确地看出具体设定的酒精浓度值,又能以备调出来与检出的酒精浓度作比较,增强了直观性。
于此选用了AT24C08作为存储器件,用单片机的P2.6,P2.7口模拟I2C与之通信,从而完成数据的读写操作。
相应的电路如图3-4-2所示
图3-4-2AT24C08存储电路
3.5液晶接口电路的设计
酒精浓度的显示采用1602液晶,LCD1602可显示两行英文字符,且带ASCII字符库。
LCD1602模块部可完成显示扫描,单片机只要向LCD1602发送命令和显示容的ASCII码。
具体的接口电路见图3-5所示
图3-5液晶接口电路图
控制信号RS、R/W和E分别由单片机控制8255的PA4,PA5,PA6口实现,要显示的信息通过调用数据处理程序传到8255的PB口。
3.6声光报警电路的设计
当酒精浓度超过所设定标准时,通过控制单片机的P3.3口的电平来实现警报功能。
其电路见图3-6所示
图3-6声光报警电路
如上图所示,酒精浓度超过设定的阀值时,给单片机的P3.3口低电平,则三极管导通,同时蜂鸣器工作,发光二极管也亮。
否则,单片机的P3.3口维持在高电平,三极管截止,蜂鸣器不工作,二极管也不发光。
3.7单片机与PC机串口通讯
“串行通信”是系统之间用一根数据信号线,数据在这根数据线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。
目前个人的PC机上都有这种接口(COM1,COM2),即RS-232口。
电脑上RS-232口共9根线,在简单应用上,需要三根线就可以完成通信,分别是第2引脚RXD,第3引脚TXD,第5引脚GND.串行通信和单片机间的接口:
但由于串行通信上的电平逻辑定义为+15V(高电平1),-15V(低电平0),可单片机中的是分别用5V,0V用来表示高电平1,低电平0.它们之间一定要通过电平间转换才能狗够完成通信。
最常用的是MAX32电路,该连接图见图3-7所示
图3-7串口通信电路
单片机串口通信的原理:
51系列单片机的部集成两个同名而不同地址的串口缓冲区SBUF,其中一个是发送的缓冲区,另一个是接收的缓冲区。
发送数据的同时MCU把数据写给发送SBUF,使接收到的数据自动的放到接收SBUF,不需要程序指定。
串口发送与接收事件发生时时候,让硬件标志去通知处理器,RI作为接收事件发生的标志,TI作为发送完成标志,而“1”作为事件发生。
在串口中断打开的条件下,两者中任意一种情况的发生都会引起中断,单片机程序可以根据RI=1和TI=1进行相应的处理。
本检测仪需要用串口线将程序下载到单片机中,以对之进行初始化过程。
3.8晶振电路的设计
本系统采用的是12MHZ的晶振,其电路图如图3-8所示:
图3-8晶振电路图
XTAL1:
振荡器的反相放大器与部时钟发生电路的输入端。
XTAL2:
振荡器的反相放大器的输出端。
3.9复位电路的设计
单片机的复位电路如图3-9示:
图3-9复位电路图
RST:
复位输入。
当晶振工作时时候,RST脚将持续为2个机器的周期高电平使得单片机复位。
在看门狗计时结束之后,RST脚将输出的高电平为96个晶振周期。
而特殊寄存器AUXR上面的DISRT0位可以使这个功能失效。
在DISRT0默认的状态下,那么复位高电平将有效。
3.10附加功能电路的设计
由于酒精浓度的检测在很大程度上受到温度的影响,为了更直观地测出不同环境中酒精的含量,这里增加一个温度传感器,以对应不同温度下酒精传感器所对应的线性关系。
DS18B02数字温度计DALLAS公司生产的单总线器件,具有线路简单、体积小的特点。
实际应用中不需要外部任何器件即可实现测温,测量温度围在-5~+125。
C之间,数字温度计的分辨率可以从9位到12位选择,且部有上、下限告警设置,使用非常方便。
数字温度计接口的电路图如3-10所示
图3-10DS18B02电路
P17为数字信号输入/输出端,将程序下载至单片机,开机运行,用手触摸DS18B02温度传感器,液晶上将会显示当时所处环境的温度值。
第4章检测仪的整体原理图和实物图
智能酒精检测仪的整体原理图见4-1所示
图4-1整体原理图
酒精检测模块实物图如图4-2所示
图4-2酒精检测模块实物图
智能酒精检测仪的实物图见4-3所示
图4-3酒精检测仪的实物图
第5章检测仪的软件实现
5.1A/D转换的软件实现
A/D转换的软件控制流程如图5-1所示
图5-1AD转换流程控制
A/D转换的启动必须依靠下降沿触发,在START置低后延时一段时间(约10ms)转换才正式开始.转换过程中的所需输入时钟允许围为10KHZ~1280KHZ,在本次设计中选用500KHZ,通过定时器产生,转换完成后得到的数字量即为由酒精传感器检测到环境中的酒精含量而产生的电压值,调用数据处理程序从而可得到酒精浓度的真实值.
5.2阈值设定及显示的软件控制
酒精浓度的阈值设定及显示的具体软件控制流程如图5-2所示
图5-2酒精浓度的阈值设定及LCD显示的软件控制流程
当系统进行完初始化后,该检测仪在将检测到的酒精浓度进行A/D转换的同时,还在时刻检测有无外部中断的响应,一旦有按键按下,将会根据按键按下的次数选择酒精浓度表中的酒精浓度值,而且这个值将会立刻被保存于外部存储单元(AT24C08),以便与监测到的环境中的酒精浓度进行比较,完成接下来的声光报警功能.
5.3整体软件控制流程
本酒精检测仪的软件流程图见图5-3所示
图5-3软件方案总体流程图
该仪器软件程序主要使用C语言编写,采用了模块化结构程序设计方法,包括主程序、中断程序等。
系统在开机或者复位后,首先进行初始化、自检,然后进入中断等待,A/D转换,液晶显示三个状态,最终根据所得结果判断是否执行声光报警。
中断子程序包括预设阀值、数据存储、信息显示等操作,在进行阀值判断时用到了LM393电压比较器,程序的绝大部分时间处在数据处理上,而STC89C52单片机在一次处理数据的时间约为6us,故总体的平均功耗低。
第6章检测仪的软件功能调试
本检测仪的软件功能通过方便灵活、移植性好的C语言编程来实现,采用分模块化程序设计思想,对不同模块分别进行调试后,最后再进行整合调试。
总体说来包括6个模块,即:
按键设置阀值模块、模数转换模块、液晶显示模块、声光报警模块、存储模块、延时模块。
6.1按键修改酒精阈值程序
下面这段程序是用来设置酒精浓度的阈值的,检测仪只要处在工作状态中,不停地扫描按键,一旦检测有按键按下,通过检测按下的次数调用酒精浓度值数组就可知道酒精浓度设在哪个阈值。
那么只要阈值在没修改前,检测仪实时检测的酒精浓度值就会跟该值进行比对,超过界限蜂鸣器将会就会发出响声,同时蜂鸣器旁边的灯会亮。
经测试,虽然整个反应过程慢了点,但是效果还是符合预定的思路。
程序6-1:
Staticunsignedcharset_Value=6;
voidINTER0(void)interrupt0
{
set_Value++;
I2c_Write_Char(DEV_24c08ID,0x00,set_Value);
if(set_Value>20)
set_Value=0;
}
6.2模数转换测试
选择第0通道作为酒精浓度模拟量输入端,首先得对ADC0809的初始化,初始化完后,进行酒精浓度的监测、分析、运算和处理,最终结果通过单片机控制8255输至液晶上显示出来,同时这个值还将与所设定的阈值进行比对以判断是否超标。
下面是关于A/D转化的模块化程序(程序6-2).
程序6-2:
ucharAD_Convert(void)
{
Start=LOW;
delay
(2);
Start=HIGH;
delay
(2);
Start=LOW;
while(!
EOC);
OE=HIGH;
temp=P0;
returntemp;
}
6.3液晶显示程序设计
该仪器用到的是LCD1602液晶,即可显示两行字符,每行16个字符。
以下是对其的初始化程序,为了达到实时正确显示所需要的信息,我们将对检测仪的液晶显示模块进行单独的测试。
要想1602液晶正常显示,得对其进行写命令操作和写数据操作,以下的程序可以在液晶的第一行显示“Mycollege!
”.
程序6-3:
#include
#include
#include"ABSACC.H"
#definea8255_PAXBYTE[0xD1FF]/*PA口地址*/
#definea8255_PBXBYTE[0xD2FF]/*PB口地址*/
#definea8255_PCXBYTE[0xD5FF]/*PC口地址*/
#definea8255_CONXBYTE[0xD7FF]/*控制字地址*/
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]={"Mycollge!
"};
voiddelay(intms)
{
inti;
while(ms--)
{
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/*遇忙等待函数*/
voidWaitForEnable(void)
{
_nop_();
_nop_();
while(a8255_PA&0x40);//1忙
a8255_PA=0xbf;//10111111
}
/*写命令*/
voidwrite_(uchar)
{a8255_CON=0x80;
WaitForEnable();
a8255_PA=0x8f;//10001111
a8255_PB=;
delay
(2);
a8255_PA=0xcf;//11001111
delay
(2);
a8255_PA=0x8f;//10001111
}
/***********写数据函数*************/
voidwrite_data(uchardat)
{
a8255_CON=0x80;
WaitForEnable();
a8255_PA=0x9f;//10011111
a8255_PB=dat;
delay
(2);
a8255_PA=0xdf;//11011111
delay
(2);
a8255_PA=0x9f;
}
/***************LCD1602初始化*****************/