服务热线
全国销售热线:

0755-84652995

开云综合官网地址

13808839053

开云平台入口

工作日9:00-17:00

行业新闻

酒精浓度测试仪的设计与实现

时间: 2024-03-01 22:43:20   作者: 开云综合官网地址

  题目:酒精测试仪的设计与实现在我国近几年发生的重大交通事故中,有将近三分之一是由就酒后驾车引起的,酒驾者在对别人的安全造成威胁时,也对自己的生命与财产造成了损害。因饮酒过量造成的交通事故是可以在酒精浓度检查中避免的。经了解市面上的大部分酒精浓度测试仪都不便宜,所以本设计的酒精浓度测试仪着重于超高的性价比与方便携带这两个方面。因此本设计采用了性价比相比来说较高且功能相对符合标准要求的STC89C51芯片、MQ-3气敏传感器、ADC0832转换芯片以及LCD1602显示屏等器件,通过这一些器件来实现醉酒后的声光报警功能。 本设计可以有效地减少因酒后驾车而引发的交通事故。测试仪对于超出额定的酒精浓度,发光二极管发光,蜂鸣报警器报警。本设计还具有醉酒阈值设定功能,使用者可以根据需要对酒精浓度阈值设置修改,并进行保存。关键词:酒精浓度测试仪,单片机,传感器,模数转换器,乙醇 1绪论 1.1课题研究背景及意义 在经济高速发展的现代社会,人们的生活水平不断提高,为适应社会的发展,私家车也不断增加。生活水平的提高使人们的交往也越来越多,交往过多带来的后果便是因酒后驾车所造成事故的频繁发生。酒驾者在对别人的安全造成威胁时,也对自己的生命与财产造成了损害。 因饮酒过量造成的交通事故本是可以避免的,只要饮酒后不驾车就可以很大概率的减少交通事故,但人们往往抱有侥幸心理,所以才会有交警来检查驾驶人员是否饮酒,而检查中所需的酒精浓度测试仪,通过了解后得知市面 上所流通的大部分都比较昂贵,所以本设计的酒精浓度测试仪主要着重于高性价比与方便携带这两个方面。 因此本设计采用了性价比相对较高且功能相对符合要求的STC89C51芯片、MQ-3气敏传感器、ADC0832转换芯片以及LCD1602显示屏等器件,通过这一些器件来实现醉酒后的声光报警功能。 本设计可以轻松又有效地减少因酒后驾车而引发的交通事故。测试仪对于超出额定的酒精浓度,发光二极管发光,蜂鸣报警器报警。本设计还具有醉酒阈值设定功能,使用者能够准确的通过需要对酒精浓度阈值设置修改,并进行保存。 1.2国内外研究现状 早期,人们用鼻子根据气味的大小来判断酒精的浓度,直到后来一位科学家提出用过期气体来分析酒精浓度,这种方法在国内外广泛用于检测人呼吸中的酒精,该型酒精检测仪主要用于交通安全检查和其他特殊部门工作人员上岗前是否饮酒的监督管理。 从本质上讲气敏传感器的发展趋势就决定酒精测试仪的发展方向。当今的传感器正朝着小型化、低能耗、无源化、智能化、高精度、高可靠性的方向发展,使我们能够更好地生活和生产。 1.3课题研究内容 本设计分为软件设计和硬件实物设计。软件设方面,需要用Keil软件进行软件程序代码编译,并通过Proteus仿真,再按照原理图绘制板图。在硬件方面,需要采用专业机器加工制版,然后进行电路各元件的焊接与调试工作,最终制作出酒精浓度测试仪,通过调试以达到预期目标。 为了能做出一个可以正常使用的酒精浓度测试仪,本次设计需要遵循以下原则: 将问题拆分成小问题,并依次解决这些问题。 尽量提高设计性价比,节约成本。 在自己的能力范围内让方案更加可靠。 1.4课题结构安排 本设计是以呼出气体的酒精浓度为研究对象。这款设计可以通过呼出气体来对人体内的酒精浓度进行检测。当人体酒精浓度过高时,可以通过声光报警来提示用户[1]。设计具体的安排内容如下: 第一章:对设计的研究背景及意义进行说明,简要介绍了国内外酒精浓度测试仪的研究现状并讲述了研究的内容。 第二章:主要对系统进行了概述,并对系统的结构框图与其工作原理进行了简要讲解。 第三章:对酒精浓度测试仪的硬件设计进行介绍,先将各个模块的电路原理图进行介绍,然后是整体的电路原理介绍。 第四章:主要讲解了酒精浓度测试仪的软件设计,针对各个模块来讲解了软件流程。 第五章:介绍了设计的安装与调试,对所用软件进行简要介绍后,进行系统调试以及仿真测试,最后对单片机进行整体调试,检测是否达标。 第六章:对论文进行简要的总结。 1.5本章小结 本章节主要对课题的研究背景及意义、国内外酒精浓度测试仪的研究现状进行了分析了解,并以此为基础对课题的研究内容以及大致结构进行了安排。 2系统概述 单片机具有体积小、操作简单、携带方便、功能较齐全等优点[2]。因此本设计采用了性价比相比来说较高且功能相对符合标准要求的STC89C51芯片,MQ-3气敏传感器,它是用来检测呼出气体的酒精浓度值,并将检测到的模拟信号转换为电压信号,将电压信号通过ADC0832转换芯片进行A/D转换变换成数字信号,最后通过LCD1602显示屏将酒精浓度显示出来,若实际酒精浓度超标,则在单片机的控制下进行声光报警,提醒使用者,避免发生意外事故。 2.1系统框图 本设计的酒精浓度测试仪的系统框图如下所示:主要由MQ-3气敏传感器、 ADC0832芯片、单片机STC89C51、LCD1602显示器、声光报警装置组成。其总体框图如图2-1所示。 图2-1酒精浓度测试仪结构框图 2.2工作原理 酒精浓度检测仪利用A/D转换原理,将被测模拟量转换成数字量,并用数字方式显示出测量结果。A/D转换器的精确度影响显示的准确度,本设计采用ADC0832对输入模拟信号进行转换,STC89C51单片机对转换的结果进行运算和处理,最后驱动LCD1602显示器显示数字信号,并将数值与设定值做比较控制声光报警,系统可自行设定报警上下限值[3]。 2.3本章小结 本章主要对系统所采用的器件进行了概述,并对系统结构框图与其工作原理进行了简要讲解。 3硬件设计 3.1STC89C51 单片机 STC89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能 CMOS8位微处理器,俗称单片机。STC89C51单片机是系统的核心,且耗电低,价格低,速度快,可靠性高,有一定的防静电、抗干扰能力[4]。实物如图3-1所示。 I VCCIPO.O/ADOI PO. 1 /ADI1 PO.2/AD2 1 PO. 3/AD3I PO. 4 /AD4 !PO.5/AD5 IPO.6/AD6 1PO.7/AD71 Fa! ALE! PSEN!P2.7/A15 ! P2. 6/A 1 4 !P2.5 /A13 !F2.4/A12 !P2.3/A11 !P2.2/A10 ! F2. 1 /A91 P2.0 AS 图3-1单片机实物图单片机外部引脚排列如图3-2所示. T2/P1.OI T2EX/P1.1I P 1. 2 P 1 . 3 I P1- 41 P 1 . 5 I P 1 . 6 I P 1 . 7 I RST I RXD/P3.0I TXD /P3.1I INTO/P3.2I INT1/P3.3I T0/P3.4I T1/P3.5I WR/P3. 6 J RD/P3.7! XTAL2! XTAL 1 ! Cnd 1 图3-2单片机引脚图单片机各个引脚功能如表3-1所示。 表3-1STC89C51单片机引脚功能 引脚序号注释 引脚序号 注释 P1 口:分别为 1脚-8脚 P1.0为最低位,P1.7为最高位 留给用户使用,可当作输入输出 P1.0-P1.7 9脚 Reset 复位信号输入端 P3 口:分别为 P3 口可作为准双向输入/输出接口 10脚-17脚 P3. 0-P3. 7 且P3 口的每一条引脚都有第二功能 XTAL1(19 脚) XTAL1为片内振荡电路的输入端 18脚-19脚 XTAL2(18 脚) XTAL2为片内振荡电路的输出端 VCC(40 脚) 20脚/40脚 接电源的正端和地端。常压为5V。 GND(20 脚) P2 口可作为准双输入/输出接口, P2 口:分别为 21脚-28脚 在接有片外存储器或者扩展I/O接口时,P2 口 P2.0-P2.7 作为高8位地址总线; ALE为地址锁存允许信号 30脚 ALE/PROG PROG为脉冲输入端 29脚 PSEN 片外程序存储器(ROM)选通线脚 EA/VPP 片内和片外接口程序存储器选择控制端。 P0.0为最低位,P0.7为最高位 P0 口:分别为 32脚-39脚 P0 口双功能端口,主要作为通用I/O端口使用; P0. 0-P0. 7 也可作为低8位的地址、数据总线 口第二用途 端口引脚 第二功能 注释 P3.0 RXD 串行口输入 P3. 1 TXD 串行口输出 P3.2 /INT0 外部中断请求0 P3.3 /INT1 外部中断请求1 P3.4 T0 定时器/计数器外部0输入 P3.5 T1 定时器/计数器外部1输入 P3.6 /WR 片外数据存储器写入权限 P3.7 /RD 片外数据存储器的读取权限 3.1.1报警电路 本毕业设计采用发光二极管以及蜂鸣器来做报警器件。发光二极管的正极接 电源,负极接芯片的P2.0脚,作用是系统检测到酒精浓度低于设定值时,用P2.0 脚输出持续的高电平,发光二极管熄灭没有警报信号。当系统检测到酒精浓度高于设定值后,STC89C51芯片P2.0持续输出低电平发光二极管,产生报警信号同时蜂鸣器通电鸣叫。报警电路原理如图3-3所示。 图3-3报警电路原理图 3.1.2振荡器 振荡器有555计时器、对称多调振荡器、不对称多调振荡器、环振荡器等很多类型。本设计采用频率稳定性相对好、外围电路相对简单的石英晶体多谐振荡器和无极性电容,具体数值如下,这样产生的振荡周期大约1us,大大的方便时钟计数[5]。晶振电路原理图如图3-4所示。 图3-4晶振电路原理图 3.1.3供电电路 电源用直流供给,外部直流电源提供电源电压5V。图3-5所示为供电电路原理图。 图3-5供电电路原理图 3.2MQ-3气敏传感器 MQ-3的基础原理是将检测到的酒精浓度转换为电信号,根据电信号的强度,能够得到关于呼出气体中酒精浓度的状况信息[6]。 MQ-3技术特性为: 模拟量输出05V电压,浓度越高电压越高 功耗(电流):150mA 对乙醇蒸汽具备极高的灵敏度和良好的选择性 具有长期的常规使用的寿命和可靠的稳定性 快速的响应恢复特性 MQ-3传感器管脚示意图如下图3-6所示。 图3-6酒精传感器管脚示意图 MQ-3气敏传感器数据如表3-3所示。 表3-3MQ-3主要技术指标 产品型号 产品型号 MQ-3 产品类型 半导体气敏元件 气体 酒精(乙醇) 探测范围 101000ppm酒精 特征气体 125ppm酒精 灵敏度 R in air/Rin typical gas35 表3-3MQ-3主要技术指标(续) 产品型号 MQ-3 敏感体电阻 120KQ in air空气中 响应时间 W10s (70% Response) 恢复时间 W30s (70% Response) 加热电阻 31。±3。 加热电流 W180mA 加热电压 5.0V±0. 2V 加热功率 W900mW 测量电压 W24V 环境温度:-20°C+55°C 工作条件 湿度:W95%RH 环境含氧量:21% 温度:-20C+70C 贮存条件 湿度:W70%RH 下图3-7中,MQ-3由于酒精浓度的变化而变得高灵敏度,可以更方便地检测出酒精气体的浓度。 传感器电气化后,周围空气中没有乙醇烝汽,传感器内传感器的感应材料不导电,ADC0822芯片CH0上传播的模拟电流为0,传感器周围有乙醇蒸汽时传感器内传的感应材料按照一定的规则导电,这些模拟电流经过MQ-3的6脚架传递到ADC0832芯片CH0进行A/D转换。 图3-8气敏传感器电路接口图模拟量输出 3.3ADC0832 芯片 ADC0832是一种8位分辨率、体积小、兼容性强且性能好价格低的双通道A/D转换芯片卩]。ADC0832芯片管脚如下图 3-9所示。 r 2 6 L j CS CHO CH1 GND VCC(福) CLK DO DI 图3-9模数转换芯片ADC0832管脚图 ADC0832芯片外围电路如图3-10所示。 [cs^Vccsl kcHo CLK7 pCH1 DO el 14GND Di sl 图3-10ADC0832芯片外围电路 ADC0832芯片管脚功能说明如下表3-4所示。 表3-4ADC0832芯片管脚功能说明 引脚 功能 CS_ 片选使能,低电平芯片使能 CH0 模拟输入通道0,或作为IN+/-使用 CH1 模拟输入通道1,或作为IN+/-使用 GND 芯片参考0电位(地) DI 数据信号输入,选择通道控制 DO 数据信号输岀,转换数据输岀 CLK 芯片时钟输入 Vcc/REF 电源输入及参考电压输入(复用) 3.4 LCD1602 液晶器 LCD1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD。与以往的LED数字管显示装置相比,液晶显示模块具有体积小、耗电低、显示内容丰富的优点,无需施加驱动电路当前的液晶显示模块是单芯片应用设计中最常见的显示部件[8]。液晶显示电路原理如下图3-11所示。LCD1602液晶引脚功能如表3-5所示。 VSS VDD AORSRWDOD1D2D3D4D5D6D7 图3-11液晶显示电路原理图表3-5LCD1602液晶引脚功能 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 接地电源 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据/命令选择 12 D5 数据 5 R/W 读/写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 光源正极 8 D1 数据 16 BLK 光源负极 3.5硬件设计电路图 本系统以单片机为核心控制器,传感器作对呼出气体进行采集,达到检测效果。当酒精的浓度达到设定值,传感器收集到的气体信号会被A/D转换器做处理,输出数字信号传输给单片机,控制蜂鸣器进行报警,LCD液晶对当前值进行显示。利用LED的发光,对酒精浓度超标进行报警。酒精浓度测试仪设计的总体电路如图3-12所示。 图3-12酒精浓度测试仪电路原理图 3.6本章小结 本章节对于酒精浓度测试仪得到硬件设计进行介绍,首先将对各个模块的电路原理图进行介绍,然后是对整体的电路原理进行介绍。 4软件设计 4.1编程语言 在单片机的开发过程中,C语言编程更符合人们的思维习惯,再加上很多处理器支持c编译器,这就使不太了解芯片内部构造的程序员也可以高效快速地制作程序。因此,本系统采用C语言来编写代码。 4.2软件流程图 4.2.1主程序模块 主程序功能:结合硬件实现酒精浓度检测系统的各项功能,基本功能有检测与显示、读取按键、阈值设置与报警、检验测试的数据显示等。 本设计软件主程序流程图如图4-1所示 图4-1主程序流程图 4.2.2A/D转换模块 基本功能是将MQ-3返回的模拟电压信号转换成可由单片机处理的数字信号,并传送给STC89C51单片机。 定义芯片各个管脚拉低CS端电平,拉高CLK的电平启动A/D转换芯片,执行两个空指令后拉低CLK形成第一个,重复CLK信号的电平拉高拉低,在第2、3个CLK下降沿前分别DI等于“1”、“0”选通A/D转换芯片的CH0通道,并在第3 个CLK下降沿后DI等于1,使控制命令结束,紧跟着两个for语句接收数据,接收完后对比两个接收到的数据,完全正确就通过return函数返回数据[9]。 ADC0832的转换过程如下图4-2所示。 图4-2ADC0832转换的过程 4.2.3按键输入模块 按键是执行人机对话的控制按钮。通过按键操作,将操作指令发送给系统。存储在MCU中的代码经过处理后 [10],将显示在LCD1602上。 进入按键检测程序后运行一个控指令进行延时,如果不按任何键,则会连续单击该命令,如果按了该键,则会同时识别该命令。当按下一个键时,与该键对应的程序被跳过,执行key程序后,跳过if语句并返回while循环语句以继续循环。按键查询结构图如下图4-3所示。 图4-3按键查询式的结构图 4.2.4液晶显示输出模块学号显示和采本系统中的LCD1602模块主要起到打开接口日期和英文姓名、集酒精浓度显示的作用。 入口读状态字写指令代码/显示数据/读显示数据图4-5液晶显示方式图 4.3主程序下而介绍main.c主程序编写[17]。头文件和一些宏定义 #includereg51.h〃调用单片机头文件 #defineucharunsignedchar〃无符号字符型宏定义变量范围0~255 #defineuintunsignedint〃无符号整型宏定义变量范围0~65535 #include intrins.h //#include lcd1602.h sbitCS=P2A4;//CS被定义为P2端口与ADC0832CS引脚连接的第四个引脚 sbitSCL=P2A3;//SCL被定义为P2端口与ADC0832SCL引脚连接的第三个引脚 sbitDO=P2A2;//DO被定义为P2端口与ADC0832DO引脚连接的第四个引脚 sbitbeep=P3A2;//蜂鸣器IO口的定义 long dengji,s_dengji = 50;〃酒精的等级 bit flag_300ms ; ucharkey_can;〃按键值的变量 ucharmenu_1;〃菜单设计的变量 uchar flag_clock; #include eeprom51.h #include lcd1602.h /*****************1ms 延时函数*****************/ void delay_1ms(uint q) ( uinti,j; for(i=0;iq;i++) for(j=0;j120;j++); /******************把数据保存到单片机内部eeprom中******************/ void write_eeprom() SectorErase(0x2000); byte_write(0x2000, s_dengji); byte_write(0x2001, s_dengji); byte_write(0x2060, a_a); }/******************把数据从单片机内部eeprom中读出来******************/ void read_eeprom() ( s_dengji = byte_read(0x2000); s_dengji = byte_read(0x2001); a_a = byte_read(0x2060); /**************开机自检eeprom初始化**************/ void init_eeprom() ( read_eeprom();〃先读 if(a_a!=2)//新的单片机初始单片机内问eeprom ( s_dengji = 80; a_a = 2; write_eeprom(); } } /*********** 读数模转换数据 ***********/ unsigned char ad0832read(bit SGL,bit ODD) ( unsigned char i=0,value=0,value 1 =0; SCL=0; DO=1; CS=0; //开始 SCL=1; 〃第一个上升沿 SCL=0; DO=SGL; SCL=1;〃第二个上升沿 SCL=0; DO=ODD; SCL=1;//第三个上升沿 SCL=0;//第三个下降沿 DO=1; for(i=0;i8;i++) ( SCL=1; SCL=0;//开始从第四个下降沿接收数据value=1; if(DO) value++; } for(i=0;i8;i++) (〃接收校验数据 value1=1; if(DO) value1+=0x80; SCL=1; SCL=0; CS=1; SCL=1; if(value==value1)〃与校验数据比较,正确就返回数据,否则返回0 return value; return 0; /************************定时器0初始化程序************************/ void time_init() ( EA=1;〃中断开总 TMOD=0X01;〃定时器工作方式1 ET0=1;//中断开定时器0 TR0=1;〃允许定时器0定时 /*************************按键处理显示函数*************************/voidkey_with() ( if(key_can == 1) ( s_dengji++;〃酒精浓度设置数加1 if(s_dengji 999) s_dengji = 999; } if(key_can == 2) ( s_dengji-=1;〃酒精浓度设置数减1 if(s_dengji = 1) s_dengji = 1 ; } write_sfm2(2,9,s_dengji);//显示酒精等级 write_eeprom();〃保存数据 /****************************独立按键程序**************************/ucharkey_can;//按键值 voidkey()//独立按键程序 ( static uchar key_new; key_can=20;〃按键值还原 P1 = 0x0f; if((P1 & 0x0f) != 0x0f)〃按键按下 ( delay_1ms(1);〃按键消抖动 if(((P1 & 0x0f) != 0x0f) && (key_new == 1)) (〃确认是按键按下 key_new = 0; switch(P1 & 0x0f) ( case 0x0b: key_can = 2; break;〃得到 k3 键值 case 0x07: key_can = 1; break;〃得到 k4 键值 } } } else key_new = 1; /****************************** 报警函数 *****************************/ void clock_h_l() ( static uchar value; if(dengji = s_dengji)〃报警 ( value ++; if(value = 2) ( value = 10; beep=~beep;〃蜂鸣器报警 } )else ( if(dengji s_dengji)〃取消报警 ( value = 0; beep = 1; } } } /******************************** 主函数 *****************************/ void main() ( beep=0;〃开机叫一声 delay_1ms(150); P0=P1=P2=P3=0xff;〃单片机IO口初始化为1 init_eeprom();〃读 eeprom 数据 time_init();//初始化定时器 init_1602(); while(1) ( key();//独立按键程序 if(key_can 10) ( key_with();〃按键按下要执行的程序 } if(flag_300ms == 1) ( flag_300ms = 0; clock_h_l();〃报警函数 dengji = ad0832read(1,0); dengji = dengji * 450 / 255.0; dengji=dengji-130;//首先减去零漂,一般是1V if(dengji 0) dengji = 0; dengji=dengji*2;〃把mV转换成mg/L,需要校准系数;每升高0.1V电压,实际测得的气体浓度就会增加20ppm; 1ppm=1mg/kg=1mg/L=1x10-6经常用于表示气体浓度或溶液浓度 //显示酒精浓度write_sfm2( 1,9,dengj i); /*************************定时器0中断服务程序***********************/ void time0_int() interrupt 1 ( static uchar value; TH0 = 0x3 c; TL0 = 0xb0;// 50ms value ++; if(value % 6 == 0) ( flag_300ms = 1;//300ms value = 0; } } 4.4 4.4 本章小结 本章节主要讲解了酒精浓度测试仪的软件设计,分别针对模块来讲解了软件流程。 5安装与调试 5.1程序开发环境 KeilC51是51系列兼容单片机C语言软件开发系统,与汇编语言相比,C语言易于学习和使用。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍[11]。 图 5-1 KIEL 5 Proteus软件主要由电路原理图设计模块、印制电路板设计模块(PCB设计模块)、电路信号仿真模块、PLD逻辑器件设计模块等构成。在Proteus仿真图与原理图有一定的区别,原理图只是一个电路的原理展示,然而Proteus的器件具有电器特性,是一个模拟真实的电路,可以运行起来,并看出电路运行的结果[12]。 5.2仿真测试 通过滑动变阻器来模拟酒精传感器的信号,调试完模拟信号后,可以观察到LED灯亮起达到报警效果,如下图所示。将编译好的程序写入微控制器,运行电 路,并将其初始值在启动时启动。通过在电路屮设置模拟信号,显示值达到临界值以上,此时二极管启动报警功能,LED变亮了蜂鸣器工作。电路仿线所示。PCB板绘图如图5-3所示。 图5-2电路仿线安装调试过程 安装调试是根据配电盘将元器件焊接在板上,调试软硬件,最终达到设计的基本要求。安装时注意端点的

  附件:1.民用建筑消防车道设计要点;2.消防车通道标识要求及示例.doc

  2024届高三九省联考物理:甘肃省联考2024届高三新高考适应性测试物理试卷(含答案).doc

  原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者



联系电话

13808839053

用手机扫描二维码关闭