第一篇:酒精浓度测试仪[范文]
酒精浓度测试仪设计报告
一、设计意义
自《刑法修正案(八)》和修改后的《道路交通安全法》正式实施,“醉酒驾驶”正式入刑。不仅交警部门,而且很多车主都期盼能够有便携仪器方便地测量气体酒精浓度,为安全驾驶提供保障,有效减少重大交通事故的发生。本研究设计的酒精浓度测试仪是一款实用性强、安全可靠的气体乙醇浓度检测工具,采用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度进行检测,利用宏晶公司高性能低成本单片机STC89C52对检测信号进行A/D转换和处理,最后通过液晶屏显示输出。本研究设计的酒精浓度测试仪还具有醉酒阈值设定功能,可以根据法律法规或用户需要设定修改醉酒阈值,并进行保存。
二、硬件设计
1、设计框图
本研究设计的酒精浓度测试仪框图如图1所示。MQ-3乙醇气体传感器输出信号经信号调理电路处理,输出随乙醇浓度变化的电压信号,该电压信号送入单片机系统,经AD转换,与设定的醉酒阈值进行比较,并显示或报警。
MQ-3传感器模块MQ-3气体传感器信号调理电路模拟电压信号STC12C5A16AD单片机模/数转换电压/酒精浓度转换醉酒阈值阈值比较外部EEPROM酒精浓度显示过阈报警图1 酒精浓度测试仪方框图
2、乙醇信号检测及调理电路
MQ-3乙醇气体传感器可以应用用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也用于其他场所乙醇蒸汽的检测。其技术特点为:
对乙醇蒸汽有很高的灵敏度和良好的选择性 快速的响应恢复特性
长期的寿命和可靠的稳定性 简单的驱动回路
主要技术指标:
MQ-3乙醇气体传感器灵敏度曲线如图2所示,其传感原理为气敏电阻的输出阻值随乙醇气体等浓度变化而变化。
图2 MQ-3乙醇气体传感器灵敏度曲线
MQ-3乙醇气体传感器管脚与测试电路如图3所示。
(a)管脚图(b)测试电路
图3 MQ-3乙醇气体传感器管脚及测试电路
MQ-3乙醇气体传感器及其调理电路原理如图4所示。其外形如图5所示。经过调理,检测信号由电阻值转变成电压值,便于后续电路进行A/D转换和处理。
图4 传感器及调理模块原理图
该传感器模块具有如下特点,方便与单片机系统接口组成检测仪器。 具有信号输出指示。
双路信号输出(模拟量输出及TTL电平输出)TTL输出有效信号为低电平。
(当输出低电平时信号灯亮,可直接接单片机)
模拟量输出0~5V电压,浓度越高电压越高。
3、单片机电路
本设计选用宏晶公司高性能单片机STC89C52,其管脚如图6所示。
图6 STC89C52单片机管脚图
该芯片为52内核8位单片机,适用于常用检测电路。由STC89C52组成的单片机系统原理图如图7所示。图中AOUT为MQ-3传感器模块输出的检测电压信号,送入ADC0832采集芯片端口进行处理,该信号可以根据乙醇气体浓度直接输出报警信号,报警阈值通过模块上的电位器进行调节。
图7 单片机系统原理图
图7中,按键K2和K3为醉酒阈值调整键,其中K2为“增加”,K3为“减小”按键。L2和L3为报警指示灯,分别可以进行酒后和醉酒两级报警。
4、显示电路
显示部分采用SMC 1602液晶屏进行数据显示,其主要技术参数为:
表1 液晶屏技术指标
接口信号说明如表2所示。
表2 液晶屏接口信号说明
与单片机接口电路如图8所示。其中J2的3脚为背光引脚,R9和R10电阻用于调节背光亮度。J2的4、5、6引脚分别接液晶的RS、E/W和E控制引脚,J2的7—14引脚为数据引脚。
图8 LCD与单片机接口电路
5、供电及程序下载电路
本设计采用电池盒接口供电,电源电压5V。同时,其电路原理如图10所示。
图10 供电及程序下载电路
三、Protel硬件开发软件
Protel是目前国内最流行的通用EDA软件,它是将电路原理图设计、PCB板图设计、电路仿真和PLD设计等多个实用工具软件组合后构成的EDA工作平台,是第一个将EDA软件设计成基于Windows的普及型产品。它集成了软件界面、仿真功能和PLD设计和信号完整性分析,在此基础上Protel 99SE又增加了一些新的功能,用户使用更加方便灵活。Protel的功能十分强大,在电子电路设计领域占有极其重要的地位。它以其强大功能和实用性,逐渐获得广大硬件设计人员的青睐,是目前众多EDA设计软件中用户最多的产品之一。1.Protel软件组成
Protel软件主要由电路原理图设计模块、印制电路板设计模块(PCB设计模块)、电路信号仿真模块和PLD逻辑器件设计模块等组成,各模块具有强大的功能,可以很好的实现电路设计与分析。
(1)原理图设计模块(Schematic模块)
电路原理图是表示电气产品或电路工作原理的重要技术文件,电路原理图主要由代表各种电子器件的图形符号、线路和结点组成。图4.1所示为一张电路原理图。该原理图是由Schematic模块设计完成的。Schematic模块具有如下功能:丰富而灵活的编辑功能、在线库编辑及完善的库管理功能、强大的设计自动化功能、支持层次化设计功能等。
(2)印制电路板设计模块(PCB设计模块)
印制电路板(PCB)制板图是由电路原理图到制作电路板的桥梁。设计了电路原理图后,需要根据原理图生设计成印制电路板的制板图,然后在根据制板图制作具体的电路板。印制电路板设计模块具有如下主要功能和特点:可完成复杂印制电路板(PCB)的设计;方便而又灵活的编辑功能;强大的设计自动化功能;在线式库编辑及完善的库管理;完备的输出系统等。
(3)电路信号仿真模块
电路信号仿真模块是一个功能强大的数字/模拟混合信号电路仿真器,能提供连续的模拟信号和离散的数字信号仿真。它运行在Protel的EDA/Client集成环境下,与Protel Advanced Schematic原理图输入程序协同工作,作为Advanced Schematic的扩展,为用户提供了一个完整的从设计到验证仿真设计环境。
在Protel中进行仿真,只需从仿真用元器件库中放置所需的元器件,连接好原理图,加上激励源,然后单击防真按钮即可自动开始。2.PCB板设计
(1)定元件的封装
① 打开网络表(可以利用一些编辑器辅助编辑),将所有封装浏览一遍,确保所有元件的封装都正确无误并且元件库中包含所有元件的封装,网络表中所有信息全部大写,一面载入出问题,或PCB BOM不连续。
② 标准元件全部采用公司统一元件库中的封装。
③ ④⑥⑤元件库中不存在的封装,应自己建立元器件库。(2)建立PCB板框
① 根据PCB结构图,或相应的模板建立PCB文件,包括安装孔、禁布区等相关信息。
② 尺寸标注。在钻孔层中应标明PCB的精确结构,且不可以形成封闭尺寸标注。
(3)载入网络表 ① 载入网表并排除所有载入问题,具体请看《PROTEL技术大全》。其他软件载入问题有很多相似之处,可以借鉴。
② 如果使用PROTEL,网表须载入两次以上(没有任何提示信息)才可以确认载入无误。
(4)布局
① 首先要确定参考点。
一般参考点都设置在左边和底边的边框线的交点(或延长线的交点)上或印制板的插件的第一个焊盘。
② 一但参考点确定以后,元件布局、布线均以此参考点为准。布局推荐使用25MIL网格。
③ 根据要求先将所有有定位要求的元件固定并锁定。④ 布局的基本原则
A.遵循先难后易、先大后小的原则。
B.布局可以参考硬件工程师提供的原理图和大致的布局,根据信号流向规律放置主要原器件。
C.总的连线尽可能的短,关键信号线最短。
D.强信号、弱信号、高电压信号和弱电压信号要完全分开。E.高频元件间隔要充分。F.模拟信号、数字信号分开。
⑤ 相同结构电路部分应尽可能采取对称布局。
⑥ 按照均匀分布、重心平衡、版面美观的标准来优化布局。(5)PCB设计遵循的规则 ① 地线回路规则:
图11 地线回路规则
环路最小规则,即信号线与其回路构成的环面积要尽可能小,环面积要尽可能小,环面积越小,对外的辐射越少,接收外界的干扰也越小。针对这一规则,在地平面分割时,要考虑到地平面与重要信号走线的分布,防止由于地平面开槽等带来的问题;在双层板设计中,在为电源留下足够空间的情况下,应该将留下的部分用参考地填充,且增加一些必要的过孔,将双面信号有效连接起来,对一些关键信号尽量采用地线隔离,对一些频率较高的设计,需特别考虑其地平面信号回路问题,建议采用多层板为宜。
② 窜扰控制
窜扰(CrossTalk)是指PCB上不同网络之间因较长的平行布线引起的相互干扰,主要是由于平行线间的分布电容和分布电感的作用。克服窜扰的主要措施是:
A.加大平行布线的间距,遵循3W规则。B.在平行线间插入接地的隔离线。C.减少布线层与地平面的距离 ③ 屏蔽保护
图12 屏蔽保护
对应地线回路规则,实际上也是为了尽量减小信号的回路面积,多用于一些比较重要的信号,如时钟信号,同步信号;对一些特别重要,频率特别高的信号,应该考虑采用铜轴电缆屏蔽结构设计,即将所布的线上下左右用地线隔离,而且还要考虑好如何有效的让屏蔽地与实际地平面有效结合。
④ 走线方向控制规则
相邻层的走线方向成正交结构,避免将不同的信号线在相邻层走成同一方向,以减少不必要的层间窜扰;当由于板结构限制(如某些背板)难以避免出现该情况,特别是信号速率较高时,应考虑用地平面隔离各布线层,用地信号线隔离各信号线。
⑤ 电源与地线层的完整性规则
对于导通孔密集的区域,要注意避免孔在电源和地层的挖空区域相互连接,形成对平面层的分割,从而破坏平面层的完整性,并进而导致信号线在地层 的回路面积增大。
四、软件编程
1、软件流程图
本设计软件主程序流程图如图13所示。
数据初始化定时器初始化A/D转换初始化显示初始化进入后台while循环触发A/D转换换算酒精浓度酒精浓度显示超过阈值吗?否酒精浓度显示是报警有键按下吗?否是按键处理 图13 主程序流程图
2、主程序
下面介绍main.c主程序编写,其他程序略。
(1)头文件和一些宏定义
#include
//调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义
变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535
#include
sbit CS=P2^4;//CS定义为P2口的第4位脚,连接ADC0832CS脚 sbit SCL=P2^3;//SCL定义为P2口的第3位脚,连接ADC0832SCL脚 sbit DO=P2^2;//DO定义为P2口的第4位脚,连接ADC0832DO脚
sbit beep = P3^2;
//蜂鸣器IO口定义 long dengji,s_dengji = 50;
//酒精等级
bit flag_300ms;uchar key_can;
//按键值的变量 uchar menu_1;
//菜单设计的变量 uchar flag_clock;#include “eeprom52.h”
#include “lcd1602.h”
/***********************1ms延时函数*****************************/ void delay_1ms(uint q){ uint i,j;for(i=0;i for(j=0;j<120;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();} } /***********读数模转换数据********************************************************/ //请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的 // 1 0 0 通道 // 1 1 1 通道 unsigned char ad0832read(bit SGL,bit ODD){ unsigned char i=0,value=0,value1=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;i<8;i++) { SCL=1; SCL=0;//开始从第四个下降沿接收数据 value<<=1; if(DO) value++; } for(i=0;i<8;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; //定时器0、定时器1工作方式1 ET0 = 1; //开定时器0中断 TR0 = 1; //允许定时器0定时 } /****************按键处理显示函数***************/ void key_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(); //保存数据 } /********************独立按键程序*****************/ uchar key_can;//按键值 void key()//独立按键程序 { 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=1×10-6 常用来表示气体浓度,或者溶液浓度。 write_sfm2(1,9,dengji); //显示酒精浓度 } } } /*************定时器0中断服务程序***************/ void time0_int()interrupt 1 { } static uchar value;TH0 = 0x3c;TL0 = 0xb0; // 50ms value ++; if(value % 6 == 0){ flag_300ms = 1; //300ms value = 0;} 五、下载与调试 当程序在uVision环境下编写完成,并编译生成.hex文件后,就可以下载并进行调试了。 1、USB转串口驱动安装 打开USB驱动文件夹下的PL2303_Prolific_DriverInstaller_v130.exe安装文件,按提示安装USB转串口驱动程序。安装完成后,插入USB下载线后,在[开始]-[控制面板]-[打印机和其他硬件]-[设备管理器],在“端口”分支下有(Prolific USB-to-Serial Comm Port(COMX)。X表示串口号,如果没有说明USB转串口驱动没有安装,须重新安装。记住括号里的COM口号。 图14 成功安装USB转串口驱动示意图 2、下载程序 打开STC单片机下载软件文件夹,点击运行STC_ISP_V481.exe程序,出现如下界面。 图15 下载软件 正确选择MCU 类型,COM口(与刚才安装的COM号一致),最高波特率和最低波特率都选2400bps或者1200bps(下载线内PL2303芯片所限,没办法!),并打开正确的.hex数据文件。 点击“Download/下载”按纽,窗口出现提示: Chinese:正在尝试与 MCU/单片机 握手连接...Connection is failure.You can try: 1.Give your MCU Power On Reset.2.Stop operation, then re-select COM Port.3.Because PLCC-DIP/PQFP-DIP Socket trace too long.4.Update the STC ISP.exe version.5.If still error, your MCU Firmware is error or null.Chinese:连接失败,请尝试以下操作: 1.在单片机停电状态下,点下载按钮,再给单片机上电 2.停止下载,重新选择 RS-232 串口, 接好电缆 3.可能需要先将 P1.0/P1.1 短接到地 4.可能外部时钟未接 5.因 PLCC、PQFP 转换座引线过长而引起时钟不振荡,请 调整参数 6.可能要升级电脑端的 STC ISP.exe 软件 7.若仍然不成功,可能 MCU/单片机内无 ISP 系统引导码,或需退回升级,或 MCU 已损坏 8.若使用 USB 转 RS-232 串口线下载,可能会遇到不兼容的问题,可以让我们帮助购买兼容的 USB 转 RS-232 串口线 仍在连接中, 请给 MCU 上电...按下电路板上的电源按纽,保证其有个失电至上电的过程,则窗口显示开始烧录芯片。 芯片烧录成功后,程序开始运行,酒精浓度测试仪正常工作。 酒精测试仪的性能指标 关键字: 单片机 气体传感器 阀值储存 语音报数 AD转换 1.酒精浓度检测仪的硬件电路设计主要包括:传感器测量电路、STC12C5A16AD单片机系统、A/D转换电路、LCD示电路 键盘扫描、数据采集、数据处理、显示、光报警等子程序仪器开机后经初始化,调用LCD显示子程序显示提示界面、阈值设置界面、测量结果界面等。键盘扫描程序判断是否有键按下。测量时数据采集程序把数据送人到A/D转换器,进行A/I)转换。由数据处理程序完成数据间的转换和数制间转换。当测量数据超过阈值时,报警子程序启动 2.仪器开机后经初始化,调用LCD显示子程序显示提示界面、阈值设置界面、测量结果界面等。键盘扫描程序判断是否有键按下。测量时数据采集程序把数据送人到A/D转换器,进行A/I)转换。由数据处理程序完成数据间的转换和数制间转换。当测量数据超过阈值时,报警子程序启动 3.传感器模块具有如下特点,方便与单片机系统接口组成检测仪器 具有信号输出指示。 双路信号输出(模拟量输出及TTL电平输出)TTL输出有效信号为低电平。 (当输出低电平时信号灯亮,可直接接单片机) 模拟量输出0~5V电压,浓度越高电压越高。 MQ-3乙醇气体传感器可以应用用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也用于其他场所乙醇蒸汽的检测。其技术特点为: 对乙醇蒸汽有很高的灵敏度和良好的选择性 快速的响应恢复特性 长期的寿命和可靠的稳定性 简单的驱动回路 4.A/D转换电路 模数转换电路的作用是将传感器电路输出的模拟量信号转换为适合单片机处理的数字信号,并输入给单片机。ADC0809主要特性(1)8路8位A/D转换器,即分辨率8位。(2)具有转换起停控制端。(3)转换时间为100μs(4)单个+5V电源供电(5)模拟输入电压范围0~+5V,不需零点和满刻度校准。 (6)工作温度范围为-40~+85摄氏度(7)低功耗,约15mW。2.内部结构 ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近ADC0809内部结构框图 寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能。IN0~IN7:8路模拟量输入端。 2-1~2-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。ALE:地址锁存允许信号,输入,高电平有效。START: A/D转换启动信号,输入,高电平有效。EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平) OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。ADC0809工作过程;09,每采集一次需100μs。0809具有8路模拟信号输入端口,地址线(23-25脚)可决定那一路模拟信号进行A/D转换。22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。6脚为测试控制,当输入一个2μs的高电平脉冲时,就开始A/D转换。7引脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。9脚为A/D转换数据输出允许端,当OE脚为高电平时,A/D转换数据输出。10脚为0809的时钟输入端。.醉酒阈值存储 醉酒阈值存储在EEPROM芯片AT24C04中,并可以通过 “增加”、“减少”按键调节并保存。AT24C04是IIC接口的EEPROM芯片,可以用于掉电不易失数据的存储。其电路如图9所示。图中A0、A1和A2为芯片的地址引脚,一般接地即可。SCL和SDA为AT24C04和单片机IIC通信的时钟线和数据线。 6.数据采集处理子程序 (1)数据采集子程序 数据采集子程序主要是采集检测传感器输出的模拟电压信号,并将其转换为单片机程序控制所需的数字量信号。首先对ADC0809进行初始化,然后将其0通道输入的0-5V的模拟信号转换为对应的数字量OOH-FFH,然后将对应数值存储到3FH内存单元。(2)数据处理子程序 主要是系数调整和数制转换,将ADC0809采集的模拟电压值转换为8位二进制数。系数是酒精浓度的最大测量值1500/255=5.88确定。系数调整是为了使十六进制与十进制转换方便,将转换系数.5.88放大10倍取整后为59即3BH作为转换系数。 7.语音模块 (1)语音模块主要特点 1.内置微控制器SPI 总线串行通信接口(支持普通单片机5V 逻辑)。 2.单电源3V 工作(3V LDO(如HT7130)芯片稳压或用一个发光二极管将5V降到3V)。 3.多段信息处理,可录音120s,分600 段,即每段0.2s。 4.工作电流 25-30mA,维持电流 1μA,静态低功耗。 5.不耗电信息保存 100 年(典型值),高质量、自然的语音还原技术。 万次录音周期(典型值),片内免调整时钟,可选用外部时钟。 6.自动静噪功能。 7语音播报测试结果,并给出是否适合驾驶 (2)语音模块主要组成 1.麦克风差分输入电路 2.语音芯片 3.后置音频放大电路 4.扬声器 8.LCD1602液晶显示电路 (1)显示部分采用SMC 1602液晶屏进行数据显示,其主要技术参数为: 表1 液晶屏技术指标 表2 液晶屏接口信号说明 数学建模实验 实验目的运用药物注射模型,熟练使用MATLAB曲线拟合方法,解释饮酒驾车的一些实际问题。 实验原理 由于酒精不需要进入肠道即可被吸收,且胃对其吸收速率也非常快,本题应采用“快速静脉注射模型”。酒精主要存在于血液中,故本例应计算吸收室的血药浓度c1(t)=A1e-αt+B1e-βt,因A1,α,B1,β之间有关联,为提高精确度,重新解微分方程得和题目对应的模型拟合计算。 实验内容 国家质量监督检查检疫局2004年5月31日发布了新的《车辆驾驶人员血液、呼气酒精含量阀值与检查》国家新标准,新标准规定,车辆驾驶人员血液中的酒精含量大于或等于20毫克/百毫升,小于80毫克/百毫升为饮酒驾车(原标准是小于100毫克/百毫升),血液中酒精含量大于或等于80毫克/百毫升为醉就驾车(原标准是大于100毫克/百毫升)。 某人在中午12点喝了一瓶啤酒,下午6点检查时符合新的驾车标准,紧接着他在吃晚饭的时候又喝了一瓶啤酒,为了保险起见他呆到凌晨2点才驾车回家,又一次遭遇检查时却被定为饮酒驾车,这让他既懊恼又困惑,为什么喝同样多的酒,两次检查的结果会不一样呢? (1)某人中午12点喝了一瓶啤酒,下午6点检查合格,晚饭又喝一瓶,次日凌晨2点检查未通过,请对此情况做出解释。 (2)短时间内喝啤酒3瓶多长时间之后才能驾车? (3)怎样估计血液中的酒精含量在什么时候最高? (4)如果天天喝酒,是否还能开车? 解答: 建立常微分方程模型,假设喝进去的酒精从胃吸收的转移速率与胃里酒精含量成正比;血液代谢酒精的速度与浓度成正比; 如图所示: X 胃 C 血液 代谢物 K1 K2 设胃里初始含量为X0,血液中初始含量为C0=0 则 即 即 解得 题目所给数据的C0=0,即此时 MATLAB命令: T=[0.25 0.5 0.75 1.5 2.5 3.5 4.5 16]; C=[30 4]; cftool打开曲线拟合工具箱,X data选择T,Y data选择C,拟合方式选择Custom Equation,拟合,参数如图 拟合得:a=2.273,b=0.1822,c=103.4 即K1=2.273,K2=0.1822,X0=103.4,可以发现拟合的比较好。 第一题 喝一瓶啤酒时X0=51.7,此时 而,故符合驾车标准 紧接着又喝一瓶,此时X0约为51.7,C0=18.8367。到凌晨二点过了8小时,此时 可以发现并没有大于20,但是当过后7.2小时时,略大于20,属于酒驾。题目所给情况可能是晚上喝酒不是快速喝下导致的误差。 第二题 短时间喝三瓶啤酒时X0=155.1,此时 MATLAB命令: T=0:0.1:24; C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T); plot(T,C,’r’) hold on plot([0 24],[20 20],’g’) 得 可发现与C=20相交于11、12之间 T=11:0.1:12; C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T) 输出: C = 至 列 21.3665 20.9690 20.5789 20.1960 19.8202 19.4515 19.0896 至 列 18.7344 18.3859 18.0438 17.7081 故11.4小时后驾车不会违反规定 题目三 观察上图可知最高点在1-2之间 T=1:0.1:2; C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T) 输出: C = 至 列 116.2545 117.8569 118.7560 119.0852 118.9541 118.4526 至 列 117.6543 116.6193 115.3972 114.0283 112.5457 故在喝酒后约1.3小时后血液中酒精含量最高 第四题 为简化问题,假设一天只喝一次,每次快速喝下n瓶,则 要求:,依此类推 考虑到48小时后的影响很小,故只需在数日内符合即可认为符合,这里取十天。 考虑到平常人的酒量,为排除呕吐等不正常代谢酒精方式和脏器超负荷工作带来的误差,只考虑小于等于10瓶啤酒 MATLAB: 建立函数 function C24=CalcC24(n,C0,i) T=0:0.5:24; C=(C0+56.2053*n)*exp(-0.1878*T)-56.2053*n*exp(-1.971*T); C24=(C0+56.2053*n)*exp(-0.1878*24)-56.2053*n*exp(-1.971*24); plot((T+i*24),C,'Color',[((-1)^n+1)/(2*n) ((-1)^(n+1)+1)/(2*n) ((-1)^n+1)/(2*n)]) hold on end 输入命令: hold off clear clc C0=0; for n =1:10 for i=0:10 temp=CalcC24(n,C0,i); C0=temp; end end plot([0 264],[20 20],’r’); 得: 可发现若每日喝十瓶啤酒的情况下经过18小时,血液中的酒精浓度就能降低到20mg/100ml以下,即若早上八点喝十瓶啤酒,凌晨两点驾车即不违反新交法 若每隔12小时快速饮酒n瓶,同样考虑十天 MATLAB 建立函数: function C12=CalcC12(n,C0,i) T=0:0.5:12; C=(C0+56.2053*n)*exp(-0.1878*T)-56.2053*n*exp(-1.971*T); C12=(C0+56.2053*n)*exp(-0.1878*12)-56.2053*n*exp(-1.971*12); plot((T+i*12),C,'Color',[((-1)^n+1)/(2*n) ((-1)^(n+1)+1)/(2*n) ((-1)^n+1)/(2*n)]) hold on end 输入命令: hold off clear clc C0=0; for n =1:5 for i=0:20 temp=CalcC12(n,C0,i); C0=temp; end end plot([0 264],[20 20],'r') 得: 可以发现喝完2瓶啤酒可以在9.8小时后降低到20mg/100ml以下,而喝完三瓶仅在喝完11.94小时后降低到20mg/100ml以下,也就是仅有每十二小时3.6分钟符合要求,忽略不计。 故每12小时可饮酒2瓶可以驾车不违反新交法 综上所述,每12小时可以和2瓶啤酒,每24小时可以喝10瓶及以下的啤酒不违反新交法。 模型评价与改进 1.解得对应模型,综合运用MATLAB软件,准确求解,在运用MATLAB进行数据拟合时,得到了较理想化的曲线。 2.本模型引用了医药动力学的二室模型进行计算,可靠性较高 3.从问题出发,分析了应该考虑的各种情况,建立了一般的数学模型,并进行实例验证,从而证明我们建立的数学模型可以较好的解决实际问题。 模型的缺点 1.本文的模型参数仅是依靠一组数据拟合求解得出,有一定的偏差。 2.模型为使计算简便,使所得的结果更理想化,忽略了一些次要的因素。 3计算所得.和题目所述不尽相同,不过因拟合得较好,只能考虑本身操作的误差。 — END — 基于LCD显示的空气酒精浓度监测仪的设计(李成章) | [<<] [>>] 前言 近年来,随着我国经济的高速发展,人民的生活水平迅速提高,越来越多的人有了自己的私家车,而酒后驾车造成的交通事故也频频发生。酒后驾车引起的交通事故是由于司机的过量饮酒造成人体内酒精浓度过高,麻痹神经,造成大脑反应迟缓,肢体不受控制等症状。少量饮酒并不会有上述症状,即人体内酒精浓度比较低时,而人体内酒精超过某一个值时就会引起危险。为此,需要设计一智能仪器能够监测驾驶员体内酒精含量。目前全世界绝大多数国家都采用呼气酒精测试仪对驾驶人员进行现场检测,以确定被测量者体内酒精含量的多少,以确保驾驶员的生命财产安全。此外,空气酒精浓度监测仪还能监测某一特定环境的酒精浓度如酒精生产车间可避免发生起火、爆炸及工业场地酒精中毒等恶性事故,确保环境安全。 本课题研究的是一种以气敏传感器和单片机为主,监测空气酒精浓度,并具有声光报警功能及LCD显示功能的空气酒精浓度监测仪。其可监测出空气环境中酒精浓度值,并根据不同的环境设定不同的阈值,对超过的阈值进行声光报警.来提示危害。 1总体方案设计 本课题采用MQ3气敏传感器,AT89C52单片机实现空气酒精浓度实时测量,通过LCD显示屏实时显示。可以通过键盘设定阈值,超过阈值具有声光报警功能。1.1基于MQ3气敏传感器的空气酒精浓度监测仪的 硬件方案 硬件设计时,考虑酒精浓度是由传感器把非电量转换为电量,传感器输出的是0-5伏的电压值且电压值稳定,外部干扰小等。因此,可以直接把传感器输出电压值经过ADC0809采集数据送入单片机进行处理。此外,还需接人LCD显示,8279键盘/显示器接口芯片,声光报警电路等。 其总体框图如图1所示。 1.2基于MQ3气敏传感器的空气酒精浓度监测仪的软件方案 软件方案主要包括键盘扫描、数据采集、数据处理、显示、声光报警等子程序。仪器开机后经初始化,调用LCD显示子程序显示提示界面、阈值设置界面、测量结果界面等。键盘扫描程序判断是否有键按下。测量时数据采集程序把数据送人到A/D转换器,进行A/I)转换。由数据处理程序完成数据间的转换和数制间转换。当测量数据超过阈值时,报警子程序启动,发出声光报警。 软件主程序流程图如图2所示。 2硬件设计 2.1传感器的选择 本课题选用的是MQ3型气敏传感器。其有很高的灵敏度、良好的选择性、长期的使用寿命和可靠的稳定性。MQ3型气敏传感器由微型Al2O3,陶瓷管和SnO2敏感层、测量电极和加热器构成的敏感元件固定在塑料或不锈钢的腔体内,加热器为气敏元件的工作提供了必要的工作条件。传感器的标准回路有两部分组成。其一为加热回路,其二为信号输出回路,它可以准确反映传感器表面电阻值的变化。传感器的表面电阻RS的变化,是通过与其串联的负载电阻RL上的有效电压信号VRL输出面获得的。二者之间的关系表述为:RS/RL=(VC-VRL)/VRL,其中VC为回路电压为10V。负载电阻RL可调为0.5-200K。加热电压Uh为5v。上述这些参数使得传感器输出电压为0-5V。MQ3型气敏传感器的结构和外形如图3所示,标准回路如图4所示,传感器阻值变化率与酒精浓度、外界温度的关系图如图5所示。为了使测量的精度达到最高,误差最小,需要找到合适的温度,一般在测量前需将传感器预热5分钟。 2.2模数转换电路 模数转换电路的作用是将传感器电路输出的模拟量信号转换为适合单片机处理的数字信号,并输入给单片机。本课题采用的是ADC0809 A/D转换芯片。ADC0809是8路8位逐次比较式A/D转换器,它能分时地对8路模拟量信号进行A/D转换,结果为8位2 进制数据。其由+5V电源供电,片内有带锁存功能的8路选1的模拟开关,由A,B,C的编码来决定选择通道。0809完成一次转换需要1001xS左右。输出具有TTI三态锁存缓冲器,可以直接连到MCS一5l单片机数据总线上。ADC0809可对0-5V的模拟信号进行转换。 2.3键盘电路 8279对键盘部分提供一种扫描工作方式,能对64个按键键盘阵列不断扫描,自动消抖,自动识别出闭合的键并得到键号,能对双键或N键同时按下进行处理。显示部分为显示器提供了按扫描方式工作的显示接口,可以显示多达16位的字符或数字。传感器输出的信号经ADC0809和单片机采集、处理后输出的信号为BCD码形式,它经过8279及显示电路处理后送入LCD显示。此外,酒精浓度监测仪的阈值浓度的设置是由键盘输入的,因此需有一个键盘/显示器接口电路。 键盘有两种工作方式:编码式键盘和非编码式键盘。当键盘中某一个按键被按下时,键盘编码器会自动产生相对应的按键代码,并输出一选通脉冲信号与CPU进行信息联络。编码式键盘使用很方便,目前已有数种大规模集成电路键盘编码器出售,例MM5740AA芯片就是一种专用于64键打字机的键盘编码器,其输出为ASCII码。非编码键盘不含编码器,当某键被按下时,键盘只能送出一个简单的闭合信号,对应的按键代码的确定必须借助于软件来完成。显然,非编码键盘的软件是比较复杂的,并且要占用较多的CPU时间,这是非编码键盘的不足之处。但非编码键盘可以任意组合、成本低、使用灵活,因而智能仪器大多采用非编码式键盘。本课题选用非编码键盘。键盘工作方式为编程扫描方式。 2.4显示电路 LJDl28X64液晶显示模块是128X64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8一位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。 2.5声光报警电路 报警电路分为蜂鸣器报警电路和LED发光报警电路组成。当输入端P1.0为低电平时,有电流通过蜂鸣器,蜂鸣器发出声音报警。而当输入端为高电平时不报警。当输人端P1.1为低电平时,LED点亮报警,反之输入端P1.1为高电平则不报警。 3软件设计 软件设计包括分析仪器系统对软件的要求,程序整体结构设计和程序模块化设计,画出每一子程序的详细流程图,选择合适语言编写程序。最后,将各子程序模块连接成一个完整的程序。 3.1数据采集子程序 ADC0809初始化后,把0通道输入的0-5V的模拟信号转换为对应的数字量OOH-FFH,然后存储到3FH单元中。 3.2数据处理子程序 数据处理子程序主要是系数调整和数制转换,将ADC0809采集的模拟电压值转换为8位二进制数。系数是酒精浓度的最大测量值1500/255=5.88确定。系数调整是为了使十六进制与十进制转换方便,将转换系数.5.88放大10倍取整后为59即3BH作为转换系数。 3.3键盘扫描子程序 键盘扫描子程序为通过扫描判断是否有键按下,如有键按下则读出各个按键值。并根据键值判断是进人提示界面还是完成阈值设定的输入,或返回。 3.3.1提示界面键盘子程序 首先判断是否有键按下,若按下的是“D”键,则进入阈值设定界面。如果不是则返回提示界面继续判断。 3.3.2键盘阈值设定子程序 键盘阈值设定子程序首先判断是否有键按下,若有键按下,判断是“0-9”键,还是“F”键。如果是“0-9”这些数字键。则进行数字键处理,是“F”键则返回重新设定阈值。键盘输入的数字键即为阈值,将其保存在50H开始的3个单元,为了便于比较和显示,阈值的千位50H中,百位和十位放入5lH,个位放人52H中。 3.4显示子程序 本课题显示为LCD显示。显示子程序分为开机界面显示程序,提示界面显示程序,阈值设定界面显示程序,测量界面结果显示程序。 3.5报警子程序 报警子程序执行之前,键盘设定的报警阈值转换为压缩的BCD码并存放在两个存储单元中。传感器输入值A/D转换后,调用比较程序,经过数据处理后显示的测量值与阈值比较,小于阈值则继续执行显示程序。若大于阈值则将单片机的P1.0、P1.1两端口清零进行声光报警。40H、4lH、42H单元存放A/D转换后,并进行十进制转换后的结果。40H和50H分别存放的是处理后的测量值与阈值的千位的压缩BCD码,41H和51H分别存放的是处理后的测量值与阈值的百位、十位压缩的BCD码,42H和52H分别存放的是处理后的测量值与阈值的个位的压缩BCD码。程序首先对40H、50H中的值进行比较大小,如果40I-I中的值大于50H中的值,则进行报警。依此类推,比较41H和51H,42H和52H。 4调试分析 调试分析包括硬件调试分析和软件调试分析及软、硬件联调。由于硬件调试分析和软件调试分析是独立进行的,所以可以先调硬件再调软件。再调试中找出错误、缺陷,判断各种故障,并作出软硬件的修改。直至没有错误。 4.1硬件调试 硬件调试包括传感器电路、显示电路、键盘电路、单片机外围电路、声光报警电路等。下面主要介绍传感器电路、报警电路的调试。 首先把MQ3型气敏传感器按照说明书介绍,接上+6伏工作电源,进行预热5-10分钟。由于气敏传感器里已经集成了放大电路,而用万用表测量可证实其输出是一稳定的0-5V的电压信号,符合ADC0809及单片机的输入条件,因此此信号可以直接接人进行A/D转换而不需要放大、滤波等。 其次对于声光报警电路的调试分为蜂鸣器和LED的调试。经试验可知LJD一2008型实验箱的蜂鸣器和LED只有在低电平工作,了解这一点,对程序的设计很重要。 4.2软件调试 软件调试为利用伟福软件进行模块化调试。调试过程中观察存储单元数据的变化,查找所写程序的错误,并改正。 4.3软、硬件联调 利用伟福仿真器及其自带实现一个模拟仿真系统。把伟福软件模拟器伟福6000的仿真器设置中语言选为“伟福汇编器”。选择仿真器用“。H5l/L”选择仿真头为“POD-H8X5X”选择CPU用“AT89C52”。调入程序编译运行,并把传感器接人电路,看LCD显示器是否显示提示界面。显示提示界面后根据ICD显示器上的提示按键进行下一步操作。看键盘是否能够设定阈值,并显示。设定阈值后,用浸有酒精的棉签靠近气敏传感器,并对着棉签缓缓吹气观察LCD显示的数值。按“F”键重新设定小于测量值的阈值,观察蜂鸣器是否发声及LED是否被点亮。当过了一两分钟后,LCD显示器上数值下降,当小于阈值时蜂鸣器停止发声,LED也熄灭。上述这些功能能够实现则表明达到了课题要求。4.4调试故障及原因分析 报警电路出错,体现在软硬件联调时,程序刚一运行,声音报警电路就发出报警声音而LED正常。经程序检查及对LJD一2008型实验箱蜂鸣器及LED灯的实验,发现该实验箱的蜂蜂鸣器及都是在低电平时工作。而主程序开始就把P1.0口清零了,P1.O口接的是蜂鸣器,这就使程序刚运行蜂鸣器就发出报警声音了。发现这个错误,把程序中不报警时的P1.O口都置高电平,报警时置低电平。 传感器输出电压不稳定。把传感器工作电路接好后急于接到ADC0809上,运行程序发现还未吹酒精气体进传感器而LCD显示的测量数值明显偏大。经看M03型气敏传感器的严原理和使用说明得知该传感器工作时需加热到300~C左右,因此需预热5分钟,使传感器内部敏感元件恢复到初始状态。便于测量结果准确。找到错误原因,在测量前传感器先预热5分钟,接人后续电路,测量结果正常。 5结论及进一步设想 本课题主要任务是设计一个基于单片机的空气酒精浓度监测仪。通过软、硬件联调,实验结果满足设计的基本要求,达到设计的指标。实现可用键盘输入阈值。并用LCD显示,而对超过阈值的浓度值进行声光报警。本设计过程包括了硬件电路设计和软件程序的编写两部分。硬件电路部分结构简单,使用方便,适合大众化使用。软件部分采用模块化设计思想,各个子程序的功能相对独立,便于调试和修改。 应用单片机编写不同的程序嵌入各种仪器中便形成不同功能的智能仪器。作为广泛应用于工程中的智能仪器将有更大的运用空间。空气酒精浓度监测仪将越来越深入的运用到普通人民的生活中 营销总监:姜丽燕 市场营销本科在读,现任激扬辩论社社长,思路清晰,创意较多,能够冷静的看待和分析问题,有良好的沟通能力,工作认真。有很好的团队精神,符合营销工作的需求。第二篇:酒精测试仪的性能指标
第三篇:《数学建模实验-血液酒精浓度》
第四篇:基于LCD显示的空气酒精浓度监测仪的设计
第五篇:酒精销售