基于STC89C52单片机的酒精检测仪设计
目录
一、简介
该项目是基于单片机设计的一个手持式的酒精检测仪,先进行了电路的设计,然后根据电路进行了实物的手工焊接制作,成品能够检测空气中的酒精含量,可以对人呼出的带有酒精的气体进行酒精浓度检测,当超过一定的浓度数值会进行报警。
项目代码,设计工具,技术文档,电路图,元件清单,实验结果图,开题报告,答辩技巧等等所有文件如下链接,可下载使用。
二、酒精测试仪总体方案设计
2.1 酒精检测仪设计要求分析
酒精检测仪应具有以下特点:
(1)酒精检测仪以c52单片机为控制的主要部件,用LED的方式实现显示气体中酒精的浓度。还要具有用户与系统进行互动的按键、模数转换电路和MQ3传感器等部分。可以实现数据的接收,数据的分析。然后进行数据的存储、数据的计算等过程。
(2)系统小型化,便于携带,与用户的交互界面友好。
(3)系统具有性价比高,功率消耗比较低的特点,此外,软件设计简单易懂。
2.2 设计框图
本设计的框图如下图所示,MQ3气敏传感器输出电压信号,将此信号输出到模数转化器ADC0832,然后经模数转换器处理后,将模拟量的电压信号转换为由0和1组成的数字信号,送入单片机解决分析,单片机决定是否报警,同时将酒精浓度在数码管显示。工作流程图如下
三、硬件设计
3.1 酒精检测电路
本系统可以对空气检测,测出其中的酒精含量。检测的时候用到的关键元件是MQ3传感器,可用于对酒后驾车的驾驶员的呼出气体的检测,也可以用于严禁酒后工作的工作人员进行检测与监督,还可以用于其他场合,比如需要对乙醇蒸汽进行检测的场合。其特点有如下几点:
(1)对酒精气体有很好的灵敏度也有很好的选择性
(2)具有很好的稳定性和长期的使用寿命
(3)驱动电路简单
主要性能指标:
MQ-3酒精传感器在不同条件下具有不同的敏感性,其灵敏曲线如下图所示,横轴代表的是酒精的浓度,纵轴代表的是传感器的输出阻值,由图可看出,酒精浓度与传感器的输出阻值成反比的关系,不同的酒精浓度值对应不同的传感器输出阻值,因此,可以利用此特点将含有酒精的气体的浓度变化转换为模拟电压值的变化。
MQ3气敏传感器阻值的变化率与酒精浓度成正比。也与外界环境的温度成正比。如下图所示。
通常来说,在使用前,应该将系统通电五分钟左右,以使酒精传感器能够达到一定的温度,这样才能提高传感器测量的准确度,同时也可以将它的误差降低到最低限度。
MQ-3酒精气体传感器的管脚电路如下图所示。该电路中,传感器的电阻值会跟随气体酒精含量的改变而改变。因此,当酒精浓度变化时,输出电压值也会发生改变。
传感器模块的电路原理图如下,传感器利用它的特性将空气中的酒精含量的信号变换为电压信号,然后数据交给后面ADC0832处理,
3.2 模数转换电路
在系统实际应用中,被测的物理量好多都是模拟的数据量。这些模拟量要被单片机所识别,必须转化为电信号才行。而传感器可以实现这个过程,输出该物理量的电信号。之后将这些模拟电信号转化为数字量才能被单片机所识别,而后单片机对此数字量信号进行分析。在这个过程中,将模拟的数据转为数字数据的元件就是模数转换器。
该设计的转换器选用的是交常用的ADC0832,它的分辨率是八位的,而且性价比很高,在现代社会已经被好多地方采用。
ADC0832特点如下:
(1)分辨率8位
(2)A/D转换是双通道
(3)工作频率250KHZ转换时间是32μS;
(4)功耗一般为15mw
(5)商用的芯片工作温度为0°C 到70°C,工业的芯片温度为−40°C 到85°C;
ADC0832视图如下
模数转换模块电路如下:
3.3 STC89c52单片机电路
本设计的控制部分采用的是STC89c52,运行时它的性能很高,而且上电后功率消耗很低,C52单片机和C51单片机有很多相似之处,比如说它们的内核相同, 89C52经过改进后也具有很多89C52不具备的功能,属于升级版本,单片机上集成了不计其数的电路,将CPU,输入输出电路、存储器、定时器、串行通信口、脉宽调制电路,显示驱动电路等缩小化到一个很小的芯片上,形成一个五脏具在的计算机系统,可以承担各种任务,这些任务在软件程序的控制下,可以准确无误的进行。
STC89C52的内部硬件结构如下图所示
STC89C52的组成部件和特点有:
(1)有两种时钟机器周期,可以设置六或十二时钟机器周期。
(2)52单片机的指令代码可以兼容51单片机。
(3)当52单片机工作时,频率大约为零到四十兆赫兹,51单片机为零到八十兆赫兹。实际工作时,52单片机的工作频率也可能超过四十兆赫兹,可以达到四十八兆赫兹。
(4)一般工作电压在5V左右(5.5~3.4V)
(5)在52单片机上集成有512B的RAM数据存储器
(6)有三十五或三十九个专门的I/O口,准双向口有p1~p4,这和51单片机一样,在总线扩展时候要用到P0口。P0口有两种功能。一种是I/O口,另一种是开漏输出口。
(7)单片机的里面有很多具有特定功能的集成电路,包括复位电路,若外面的晶振的频率低于二十兆赫兹时,无需在外部重复添加复位电路,
(8)在52单片机的里面有专门的定时计数器,位数均为十六位,里面集成有三个这样的定时计数器。由于52单片机是51单片机的升级版本。52单片机内部的定时计数器可以兼容普通的51单片机。
STC89C52的几种工作模式如下:
(1)断电模式:在这种模式下,若突然发生断电,则将内存中的数据存储。单片机暂停的所有工作,等到下一个中断的时候继续工作,或者等到硬件复位的时候,单片机再次工作。它的功率消耗在0.1uA左右。
(2)空闲模式:在这样的模式下,CPU会放下所有工作,处于停止状态。但其他模块会正常运行。它的功率消耗在0.1uA左右。
(3)正常工作模式:就是单片机正常工作的时候。正常执行程序的模式。
单片机电路如下:
3.4 LED显示电路
显示电路部分使用LED的方法。相对其他方式来说,LED价格比较划算,电路的结构比较简单。通过对其不同的管脚输入不同的电平从而使它发亮,然后显示出我们需要的数字图形。数码管有两种,就是七段和八段的数码管,八段的有小数点。数码管的接法有两种。本设计用的是共阳极的接法。
本课题选用的LED有四个共同端,每一个共同端控制一个数字的显示。1H是第一个数字,直到4H,依次类推。a、b、c、d、e、f、g、dp是数字的各个段,控制显示特定的数字。LED上这8个端都连接到单片机的P0口,也就是第一到第八号管脚。共同端1H~4H均连接到驱动电路,它可以使数码管显示亮度提高。由于各个数码管点亮的时间是2毫秒,所以看起来好像是几个数码管一同点亮,实际并非一同点亮的。人眼不会感到有闪烁感。动态显示可以节省很多I/O端口,功耗更低。本设计采用的就是动态显示。
3.5 声光报警电路
声光报警电路如图所示
当酒精浓度值高于设定的标准值时蜂鸣器会发出响声,二极管会不停的闪烁单片机发出周期的电平脉冲控制蜂鸣器和二极管同时工作。
3.6 按键和复位电路
- 复位电路
复位电路如上图,与单片机的9号复位管脚接在一起。按键的按下与松开状态分别对应高低电位。若该管脚是低电平,则会致使系统复位。
- 按键电路
按键电路中的开关一端同接地,另一端接单片机的P2.0~P2.2三个管脚,其作用为设定报警阀值。
3.7 电源电路
电源电路如下图所示,电源开关的1号2号引脚和4号5号引脚是常开触点,2号3号和5号6号是常闭触点,当按下按键时候1号和2号或者4号与5号才会接通电源。
四、软件设计
4.1 主程序模块流程图设计
在主程序中,首先要进行初始化的工作。由于beep被初始化为0,故当开机时候蜂鸣器会响一下,之后执行延时程序150ms,将单片机的输入输出口均初始化为1,执行定时器初始化函数,初始化定时器,然后进入后台while循环,之后会触发A/D转化,然后将电压值变化换算成酒精浓度变化,将酒精浓度显示在LED显示器,判断是否超过设定值,若超越设定值就进行报警,判断有没有按键按下,若有,进行按键的处理,否则继续循环。
4.2 模数转换模块流程图设计
由于模数转换是在脉冲的下降沿触发的。因此在编程的时候须要做一定的延时。一般来说都是延时10ms。该模数转换程序是在第四个脉冲的下降沿开始接受数据。该过程运用for循环实现。在程序中的第二个for循环开始接收校验数据。程序最后进行与校验数据比对,若正确,就返回数据,否则返回0。在程序流程图中,首先是要延时。然后进行模数转换,随时判断是否已经转换结束。若已经完成转换,就可以获得数字量。然后将转换过来的数据送入处理程序中。将获取的数字量换算成相应的酒精浓度值。若转换还没有完成,则继续进行。
4.3 独立按键程序流程图设计
在按键程序模块中,将P2=0x0f,也就是将四个功能键与单片机的接口设置为高电平。进入if条件句,判断P2口的电平是否有改变,若有改变,说明有按下按键的动作,最后获取键值。在程序框图中,首先将所有键与单片机的接口输出为高电平。若有按下的动作,则该引脚将会变为低电平。根据P2口的高低电平状态可判断用户按下了哪个键。如果用户按了某个键,则执行自己提前写好的延时函数。若没有按键按下,则继续进行判断,直到有按键按下才向下执行。当按键释放后进行键值传送,独立按键程序结束。
系统总体的电路图如下所示:
五、系统测试与调试
5.1 USB转串口驱动安装
当进行系统程序下载的时候,在电脑上找到USB驱动文件夹下的PL2303_Prolific_DriverInstaller_v130.exe。这是我们要安装的程序软件,点击右键,会在菜单出现打开按钮,单击打开,电脑屏幕出现一个对话框,告诉用户安装USB转串口驱动程序。当安装过后,将USB线与电脑接口连接,然后进入控制面板,找到打印机和其他硬件功能,在下面有个设备管理器。鼠标单击端口,会发现下面有Prolific USB-to-Serial CommPort(COMX)。在这里有一个串行口的号码,一定要记住此号码,因为在后面要用到。下载程序的时候要将此号码复制到对应的输入框中。在这之前一定要将要下载的程序在keil中写好,然后进行编译,之后点击链接。这些步骤完了之后,会看到在保存文件的位置有各种格式的该文件,我们需要的要下载的程序文件就是*.hex格式的文件。
5.2 下载程序
在单片机下载软件文件夹下有一个STC_ISP_V481.exe程序文件,双击词程序文件会出现以下界面。
需要修改的有几个选项。要选择MCU类型,粘贴刚才的串行口的号码到对应的输入框。波特率的选择通常来说是两千四百或者是一千二百波特率。之后打开之前弄好的.hex格式的程序。现在就可以传输程序数据到单片机了。点击下载即可,之后根据出现的操作方法进行即可。
根据窗口提示,打开酒精检测仪的电源按钮,给MCU上电。然后等待芯片烧录成功,这些步骤完成过后,进行系统测试,看系统是否可以进行正常工作。
5.3 系统运行测试
到此,整个系统已基本完成,现在进行系统的测试与调试,当通上电源后,打开电源开关,系统发出滴一声,然后数码管亮起,显示00.如下图
表示当前气体酒精浓度为0ppm,按下阀值设置键,进入阀值设置模式。
按下阀值加键,设置阀值为14ppm。
在此按下阀值设置键,回到测试酒精浓度模式,分别在同等环境下测试饮酒人、未饮酒人以及正常空气中的酒精含量。结果是未饮酒人和正常空气的酒精含量均为0ppm,饮酒人的呼出气体酒精含量为35ppm。系统比较稳定,测试的系统反应很灵敏,运行正常。