基于单片机的酒精测试仪.docx

上传人:b****5 文档编号:5600468 上传时间:2022-12-28 格式:DOCX 页数:17 大小:443.39KB
下载 相关 举报
基于单片机的酒精测试仪.docx_第1页
第1页 / 共17页
基于单片机的酒精测试仪.docx_第2页
第2页 / 共17页
基于单片机的酒精测试仪.docx_第3页
第3页 / 共17页
基于单片机的酒精测试仪.docx_第4页
第4页 / 共17页
基于单片机的酒精测试仪.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于单片机的酒精测试仪.docx

《基于单片机的酒精测试仪.docx》由会员分享,可在线阅读,更多相关《基于单片机的酒精测试仪.docx(17页珍藏版)》请在冰豆网上搜索。

基于单片机的酒精测试仪.docx

基于单片机的酒精测试仪

基于单片机的酒精测试仪

摘要

酒精具有麻痹大脑的作用,会导致饮酒的人开车产生交通事故的概率大大的增加,产生的悲剧也越来越多,而其造成的结果也是不可逆的。

出于减少这些惨剧的发生的目的,设计一款简单而功能又齐全的仪器去检测呼出气体中酒精含量是十分必要而有意义的。

STC89C51单片机和MQ-3传感器是设计的核心,设计了显示、声光报警、按键等相关电路。

各模块的功能具体分析,并侧重研究了核心器件。

此系统具有检测、报警、显示等功能,具有低成本、携带方便、人性化的特点,因此实用度高,存在很大的发展空间。

关键词:

STC89C51单片机;MQ-3传感器;A/D转换

AlcoholTestingInstrummentBasedonSingle-chipMicrocomputer

Abstract

Alcohol has the effect of brain paralysis, will lead to drinking the probability of driving accidents increased greatly, resulting in more and more tragedy, and the results are irreversible. In order to reduce the occurrence of these tragedies, it is necessary and meaningful to design a simple and complete instrument to detect the alcohol content in the exhaust gas. 

STC89C51 SCM and MQ-3 sensor are the core of the design, designed the display, sound and light alarm, key and other related circuits. The function of each module is analyzed concretely, and the core device is studied emphatically. This system has detection, alarm, display and other functions, with low cost, easy to carry, human characteristics, so high practicality, there is great room for development.

Keywords:

STC89C51singlechipmicrocomputer;MQ-3sensor;A/Dconverter

1绪论

改革开放以来,我国经济得到了飞速发展,老百姓的生活条件越来越好,生活需求不只是吃饱穿暖那么简单,各种需求被创造出来,而烟酒却是一直的消费主力军,相信中国的酒文化大家都知道,然而拉动消费的同时,酒精的影响也带来了一系列问题。

喝酒之后开车造成的交通事故最为严重。

为了减少此类事件的发生,设计一款简单而功能又齐全的仪器去检测呼出气体中酒精含量是十分必要而有意义的。

酒精浓度检测仪的精度上下关键在于对乙醇分子的检测,因此对传感器的选择就变得十分重要。

酒精气敏传感器主要是将酒精在空气中的体积分子转化成相应的电信号,方便信息能很好的被人员、相关设备、计算机等应用。

单片机虽然和通用计算机有些相同的基础部件,但是和计算机又有些不同的地方。

小小的体积,能随时迅速的对外部发生的事件做出反应,快速收集大批数据,做出相关的判断和推理后,可以对控制对象的参数调整,实现该仪器的设计要求,因此该检测仪具有重大的研究意义。

1.1国内外研究背景及发展现状

大多数国家对酒驾、醉驾的检测都是采用带有呼吸装置的酒精测试仪,以此确定人体内酒精的含量,从而判断被检测者是否酒驾、醉驾。

酒精检测仪的研发背景就是为了减少因酒驾而造成的交通事故的发生,确保其生命财产安全[]。

而酒精检测仪不仅仅应用于交通安全中,很多使用到酒精生产的企业以及使用酒精进行消毒的场合也可以使用,例如酒厂、酒精消毒药厂,化妆品厂等等。

可以有效的、实时的、检测酒精浓度,避免产生火灾事故[]。

酒精测试的装置目前有5种,一种是燃料电池型,一种是半导体型,还有一种就是红外线型,剩下两种为气体色谱型和比色型[]。

考虑到成本价格方面的原因,只有半导体型和燃料电池型在市场上广泛流通,占据大半江山。

燃料电池型能把气体直接转换成电能,是一种环保型能源,对环境气候都不会造成污染,正因如此,世界上都在积极研究它的应用[]。

燃料电池型可以应用到很多环境中,而它的一个分支就是酒精传感器。

把特种催化剂放满在燃烧室内,然后酒精进入到燃烧室内充分燃烧,内能就转化成了电能,外加负载就会有电极上产生的电压消耗了,电压就和燃烧室内的乙醇浓度成正比关系[]。

使用燃料电池型的酒精测试仪拥有灵敏度高、稳定性能高、抗干扰性强等特点[]。

虽然优点不少,但是只有少数国家能生产,因为对相关传感器的技术要求高,生产成本也不低,而且制作也不容易,性价比不划算[]。

1.2国内外研究意义

近几年来,第三次工业革命之后经济得到了超高速发展,人民的生活水平也迅速提高,小汽车成为了大家常见的交通工具,数量也越来越多,有些家庭甚至有2-3辆汽车。

随着汽车数量的增多,交通事故也越来越多,而这些交通事故中因为酒驾引起的总是位居榜首,成为最大的隐患。

过度饮酒会导致酒后驾车产生车祸,因为体内的酒精超过量值后会酒精中毒,神经被麻痹,大脑的反应会变得迟缓,甚至连反应都没有,身体也不会受到控制[]。

很多年之前的交通警察判断一个人是否酒驾只能依靠视觉、嗅觉观察其神态举止,或者到医院去检测酒精含量。

而这两种方法都有缺点,通过主观意识去判断是不准确的,而送去医院又不及时,可能到医院的时候驾驶员已经酒醒了,造成人力、警力的浪费,产生不必要的误会[]。

当人体中的酒精含量低于一个不会引起上面说的症状的值时就不会造成危害,根据这个思路可以设计一种酒精测试仪,能让执法人员及时有效的对驾驶员进行检测,从而控制酒驾的发生,维护交通安全,也是对驾驶员减少犯罪的措施[]。

因此,研究此仪器不仅仅是检测酒精那么简单,还是促进社会稳定,增强人民幸福感的一种途径,具有重大的社会意义。

2系统设计与研究内容

在本篇文章中,酒精浓度检测仪的核心部分由气体传感器和单片机组成。

通过气体传感器检测空气中酒精分子的浓度,在数模转换时对数据进行处理,并判定是否超过酒驾、醉驾的阈值,如果超过那么蜂鸣器和LED灯提示,同时酒精浓度值由LCD1602液晶屏实时显示测量出来。

按键可以设置酒精检测仪的阈值,并保存STC单片机EEPROM中,具有掉电保护。

设计方案具体如图2.1所示。

图2.1设计方案图

Fig.2.1Designscheme

3硬件系统设计

3.1MQ-3传感器

MQ-3传感器所使用到的气敏材料为二氧化锡(SnO2)。

二氧化锡(SnO2)是一种在空气中电导率比较低的气敏材料,适合用来制作酒精传感器。

当在一个周围环境存在酒精气体时,气体传感器的电导率会因为酒精浓度的上升而提高,应用单一的电导率变换为与该气体浓度相匹配的输出信号[11]。

MQ-3气体传感器对酒精气体分子的灵敏度高,可以抵御许多外部因素的干扰,像常见的有烟雾、汽油、液体、水蒸气等。

在传感器刚上电时传感器的输出电压出现一种先上升再下降,最后到达一个平衡状态稳定住,因此,当我们需要使用到传感器时,可以提前进行预热大概一两分钟,这样才可以保证传感器使用时处于稳定状态。

传感器输出电压与周围酒精气体浓度有一定线性关系,酒精浓度越高,电压也随之增大。

MQ-3传感器在一个周围不存在酒精气体的环境中电压无太大变化,大约为1V,若是周围存在酒精气体,那么传感器的电压会随着浓度的增大而增高,酒精浓度增高20mg/L,那么电压就会上升1V。

MQ-3实物图如图3.1所示

图3.1MQ-3实物图

Fig.3.1MQ-3physicaldiagram

3.2A/D转换电路

3.2.1ADC0832概述

一般情况下,上位机和芯片之间需要四条数据线:

分别为CS、时钟、输入和输出。

值得注意的是,在通信过程中,一般输入和输出不会同时使用,但是由于输入和输出都是双向接口。

这就使得如果在输入或者输出端口资源欠缺的情况下,就可以在数据条中同时使用输出和输入。

如果ADC0832无法正常运转,则增加CS输入,但是值得注意的是,在这个过程中,如果芯片被禁用,那么时钟和输入或者输出之间就可以进行随意切换。

但是如果要将数模转换变成CSable终端时,就必须要求在转换开始前设定并保持低水平。

在刚开始转换对应的芯片时,对应的处理器会把时钟脉冲输入对应的时钟端,同时借助数模转换端的输入通道进行对应的数据信号输入。

在输入首个脉冲前,应该加高输入终端,才会显示启动信号。

在第2位和第3位脉冲被选中之前,需要在DI终端中输入2位数据以选择通道功能[12]。

3.2.2ADC0832工作原理

ADC0832具有8个接口,分别是CS_,CH0,CH1,GND,DI,DO,CLK,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.2ADC0832原理图

Fig.3.2ADC0832schematic

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.0~P0.7(32-39)、P1,P1.0~P1.7(1-8)、P2,P2.0~P2.7(21-28)、P3,P3.0~P3.7(10-17)。

3.3.2最小系统

从字面上理解就是所形成的系统使用最少元器件就可以让单片机运行。

下面将介绍最小系统必不可少的元器件和相关用处。

第一,电源是不能缺席的,没有它一切电子产品都没有用处。

因为51单片机在4.5V~5.5V的电压之间就可以正常工作了,正因如此供电就采用正五伏电源供电,也可以使用手机充电器。

高增益反向放大器是振荡器一个极其重要的部分。

引脚XTAL1、XTAL2分别是此放大器的输入端和输出端。

本设计在设计时钟电路时,在这两个引脚接入振荡器和电容,这样所形成的自激振荡电路较为稳定。

通常电容C1和C2取30pF,对振荡频率有微调作用。

晶振频率范围是1.2MHz-12MHz。

但是也有其他情况发生,最高可以达到24MHz以上。

功耗与频率成正比,频率越大,功耗也大。

所以在这个设计中选择12MHz的石英晶振就可以了。

虽然振荡频率会被并联在晶振两端的两个电容影响,但是这些影响是非常轻微的。

若是使用石英晶振,电容的选择范围就在20~40pF,本次这个系统设计所使用的位30pF的石英晶振;若是使用陶瓷谐振器件,电容选择范围在在30~50pF,它的电容要比石英晶振的电容大。

在这次设计中,我们也是使用30pF的陶瓷电容。

具体如下图所示:

图3.3晶振电路

Fig.3.3Crystalcircuit

晶振电路介绍完了之后就是复位电路。

复位电路有两种,一种是上电自动复位电路,另一种就是开关复位电路。

在复位原理图中就可以看到这这两种方式。

电容两端在上电时电压不能有很大变化,此时复位引脚和电容负极连接,电阻两端的电压就被全部加上,这是我们把复位引脚置于1既可让芯片复位。

之后用五伏电源给电容充电,与此同时,电阻的电压会逐渐减少趋近于零,芯片正常工作。

电容和复位按键并联存在,电路为上电复位时,表明按键未按下。

在芯片正常工作后,如果想达到手动复位电路的效果话可以按下复位按键使RST引脚出现高电平从而复位电路。

笼统的说,要让单片机能有效的复位,只需要RST引脚保持10ms以上的高电平就可以了。

图中相关元器件的数值为经典值,实际制作是可以用同一数量级的电阻和电容代替。

复位电路如图3.4所示

图3.4复位电路

Fig.3.4Resetcircuit

最小系统可由下图表示:

图3.5单片机最小系统

Fig.3.5Minimumsystemofsinglechipmicrocomputer

3.4LCD1602液晶显示电路设计

3.4.1概述

LCD1602字符型液晶显示器与单片机可以用到两种方式进行连接,第一种是采用8位的数据总线,另外一种是利用四位数据线进行两次输送。

进行设计时,需设计控制和外界的接口,然后可以建立起一些对应的联系,对于运存的有效管理,驱动也可以进行有效地控制。

并且还能配置数据。

在驱动过程中,要完全依照控制器的相关规范,通过对LCD的驱动来显示数据信息。

控制器当中还具有各种ASCII字符库和能扩容的汉字库。

LCD1602液晶模块当中存在字符发生内存设备,所保存的点阵字符图形数量共有160个,每个字符与代码相对应,就像这里面的英文字母就有其自己相对应的代码,当在程序中的地址中写入它所对应的代码,就可以显示出这个字母。

液晶显示前需定位首个字符,程序自动往后,一位一位完成,比如说“max”,就是先定位m,然后a,最后才是x,全部结束才算完成任务,数字也是一样的,比如说“567”,就是先定位5,然后6,最后才是7,当全部都完成过后即可算完成任务。

都是以从左到右的顺序进行,直到末尾才算完成。

液晶实物图如图3.6所示。

图3.6lcd1602液晶显示屏

Fig.3.6Liquidcrystaldisplay

3.4.2工作原理

单片机可以给显示屏发送指令,具有是一种不同指令,当LCD1602接收到指令既可以完成一些特定操作,比如说显示数字或者是清屏等等。

它有自己的字库,当它在工作时,直接从字库中调用即可显示内容。

有一些自己需要显示但是字库里却没有的字符,可以自己定义写入到CGROM。

自定义的字符分辨率是5*8,最多能有8个,由于自定义的数量很少,所以需要适当的使用,避免造成资源浪费。

当自定义的字符成功写入到CGROM之后,就能像正常显示的字符一样随意调用了。

如果想要控制LCD1602液晶显示屏的话,就需要掌握该液晶屏的相关操作,比如说对于数据的读写,状态的读取以及写指令。

具体如下图所示:

表3.1LCD1602操作指令对应的引脚电平

Tabel.3.1Lcd1602OperationInstructioncorrespondingtothePINlevel

状态读取

写指令

数据读取

写数据

输入

RS为低电平,R/W为高电平,E为高电平

RS为低电平,R/W为低电平,D0-D7=指令码,E=高脉冲

RS为高电平,R/W为高电平,E为高电平

RS为高电平,R/W为低电平,D0-D7=数据,E=高脉冲

输出

D0-D7相当于状态

没有

D0-D7相当于数据

没有

从上表中得知,寄存器选择用RS表示,使能端用E表示,若是寄存时为高电平时选择数据寄存器,当寄存器为低电平时,选择指令寄存器。

信号线用R/W表示,当它为高电平时执行度操作,当它为低电平时执行写操作。

LCD在使用时,单片机的P0与D0到D7引脚连接,这样会方便传输数据。

为了能调节液晶屏的显示亮度和清晰度,可以在VL引脚连接一个能调节的电位器。

当调节电位器的时候,VL引脚的接入电压会发生变化,进而液晶屏的显示度也会因电压的变化而变化。

外接一个电位器能让液晶屏在不同的场合都适用,而不是采用固定的电阻,这样也不会因为一成不变的亮度、清晰度而感到苦恼。

具体如下图所示:

图3.7LCD1602原理图

Fig.3.7LCD1602schematicdiagram

3.5蜂鸣器按键电路设计

蜂鸣器是一种能发生刺耳声音的元器件,采用直流电压供电,应用范围十分广泛,生活中我们常见到的电话、电饭锅、洗衣机等,工作学习中的电脑,打印/复印机、定时器等,还有一些交通工具中,可以说是必不可少的发声器件了。

蜂鸣器主要分为两种,一种是压电式蜂鸣器,另一种是电磁式蜂鸣器。

在这个设计中选用的是5V电磁式有源蜂鸣器,由于单片机的输入/输出口是没有办法直接驱动蜂鸣器工作的,因为蜂鸣器的使用工作电流一般比较大,所以就需要借助于三极管,这里使用的型号为8550,是PNP型。

单片机的I/O口与三极管的基极相连,但需要在这二者之间串联一个阻值为1K的电阻。

若是输入输出口输出0,那么电路导通,蜂鸣器也会因此发出报警声,当输入输出口输出1,电路不导通,蜂鸣器也就没有工作,具体如下图所示:

图3.8蜂鸣器原理图

Fig.3.8Schematicofbuzzer

为了能实现人机交互,在本设计中,加入了按键电路。

按键与单片机相连,一端接地,另一端接输入/输出口。

在输入输出口没有工作时默认为高电平,未按下按键的时候输入/输出口的状态就是悬空的。

输入/输出口的电平被拉低了说明按键已经被按下了,如果判断有没有按键按下的情况就只需要单片机进行循环的检测输入/输出口是否有出现低电平,这种方式会产生按键抖动,影响使用结果,所以就需要添加一个消抖程序,具体如下图:

图3.9基于按键电路的原理图

Fig.3.9Keycircuitdiagram

如上图所示有三个按键,它们分别对应三个不同功能,具体如下:

最上面的按键:

若是按下,则可以对参数进行设计,也就是咱们常说的设计模式,按下时显示屏会对此有提示。

中间的按键:

在设计模式下实现参数加一操作。

最后一个按键:

在设计模式下实现参数减一操作。

3.6原理图绘制软件介绍

发展到今,AltiumDesigner已有多个版本,它具有很多功能,拥有最为顶层的设计,它结合了Protel99SE等众多软件的优点,对各个功能进行实验和分析。

是一款经济实用的设计软件[15]。

AltiumDesigner已不是简单的printedcircuitboard(印制电路板)设计工具,由多个功能模块组成,它们分别是原理图(SCH)设计、原理图(SCH)仿真、自动布线器(AutoRounter)和FPGA(现场可编程逻辑门阵列)设计及嵌入式软件开发等,功能十分强大,而物理设计使用到PCB为核心的都覆盖了。

该软件将电路设计结合了应有的技术,是电路设计必不可少的一部分。

和早期的版本相比,AltiumDesigner还在页面设计上进行了改进,不仅变得更加丰富大气,而且非常的符合用户的审美要求。

AltiumDesigner还汇聚了VHDL(超高速集成电路汇聚语言)和FPGA设计,而且大大提升了在电路设计的同步要求。

所以该软件的功能得到了大大的增强。

4软件设计

4.1软件开发环境

Keil这款软件可以提供很多功能,他可以把这些功能都集合在一个开发环境下面,具有比较完美的兼容性。

Keil具有高效性,对于生成的目标代码逻辑严谨,拥有紧凑的汇编代码,容易理解。

当进行程序较复杂的设计时,使用Keil软件具有相当大的优势。

在与传统的语言相对比,C语言确实具备着很多不一般的优点,在Keil中也具备着C语言的编译环境,并且在维护和可读性方面能够让人轻而易举的看懂,简单明了。

能够更加便捷的学习和使用。

而且还能够在效率上和研发的时间周期上节省很多精力。

另外,Keil还具备嵌入装配,所以我们可以在关键的位置上嵌入,就可以提升效率。

Keil不仅研发出了新的语言环境,同时还保存着旧有的高效汇编代码,C51编译器的功能也在不断的增强之中,可以衍生出其他产品。

C51的编译器、汇编器以及操作系统之类的都可以集成到uVision2的开发环境里。

并且这个环境较为灵活,Keil软件是非常好的选择。

如果使用的是汇编语言而不是C语言进行编程,也可以选择这个软件,因为它拥有这方便易用的集成环境,强大的功能也会是事情变得更加简单。

4.2系统重要函数介绍

4.2.1主函数设计

通常而言,主函数必须要voidmain(),每一个程序都是需要它,不然就不完整。

接着就是对于系统的初始化,初始化完成后对器件进行重新赋值处理,并对一些变量进行初始化和设定。

若是初始化后进入死循环,那么不会出来结果,若是没有进入死循环,那么程序只会运行一次之后就退出来了,所以为了达到能随时随地检测执行的结果,需要加入死循环就能达到效果。

在设计主程序中的主函数中不要放太长的代码,过多的代码也会给阅读和修改造成麻烦,具体的代码一般都是采用函数进行封装然后在主函数中进行调用。

具体流程图如图4.1所示。

图4.1主函数流程图

Fig.4.1FlowDiagramofmainfunction

4.2.2LCD1602显示函数设计

若想要在显示屏中显示出自己想要的内容,就需要按照一定的要求格式去编写代码。

我们可以在液晶显示屏中输入指令,然后写入数据到指定为止,既可以在该出显示出内容。

当写入地址后,第一个内容后地址会自动加一。

函数名可以表示为lcd1602_write_character(ucharn、,ucharm,uchar*t),其中n,m,*t表示参数,液晶显示屏中的位置坐标用可以用n表示也可用m表示。

字符数组用*t表示。

对位置坐标进行计算,就可以得到地址软件,具体如下图所示:

图4.2显示函数流程图

Fig.4.2Displayfunctionflowchar

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1