酒精浓度测试仪的设计.docx
- 文档编号:8104206
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:28
- 大小:1.61MB
酒精浓度测试仪的设计.docx
《酒精浓度测试仪的设计.docx》由会员分享,可在线阅读,更多相关《酒精浓度测试仪的设计.docx(28页珍藏版)》请在冰点文库上搜索。
酒精浓度测试仪的设计
酒精浓度测试仪的设计
[摘要]:
本研讨设计的酒精浓度测试仪是一款适用性强、平安牢靠的气体乙醇浓度检测工具,采用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度停止检测,应用宏晶公司高功用低本钱单片机STC12C5A16AD对检测信号停止A/D转换和处置,最后经过液晶屏显示输入。
本研讨设计的酒精浓度测试仪还具有醉酒阈值设定功用,可以依据法律法规或用户需求设定修正醉酒阈值,并停止保管。
[关键词]:
单片机A/D转换和处置醉酒阈值MQ-3乙醇气体传感器
Alcoholconcentrationtestinstrument
Abstract:
Thisstudydesignalcoholtesterisanewpractical,safeandreliablegasethanolconcentrationtestingtool,AdoptinghighprecisionMQ-3ethanolgassensorstodetecttheconcentrationofethanolintheair,theuseofmacrocrystalcompanyhighperformancelowcostSTC12C5A16ADmicrocontrollertodetectionsignalA/Dconversionandprocessing,finallythroughtheLCDscreendisplayoutput.Thisstudydesignalcoholtesteralsohasdrunkthresholdsettingfunction,canaccordingtolawsandregulationsortheuserneedtosetmodifydrunkthreshold,andsave.
Keywords:
ScmA/DconversionandprocessingDrunkthresholdMQ-3ethanolgassensor
第一章绪论
1.1本课题的研讨的背景以及理想意义
自«刑法修正案(八)»和修正后的«路途交通平安法»正式实施,〝醉酒驾驶〞正式入刑。
不只交警部门,而且很多车主都期盼可以有便携仪器方便地测量气体酒精浓度,为平安驾驶提供保证,有效增加严重交通事故的发作。
2000年以来,随着中国经济的高速开展,人民生活水平的迅速提高,中国逐渐步入〝汽车社会〞,酒后驾驶行为所形成事故越来越多,对社会的影响也越来越大,酒精正在成为越来越凶残的〝马路杀手〞。
据有关资料统计,全世界每年因车祸丧生的人数就超越60万人,留下永世性伤残者在400万以上,普通受伤者那么不可胜数。
在许多国度,车祸已成为第一位不测死亡缘由。
此外,由交通事故形成的经济损失也相当惊人。
据事故调查统计,大约50%—60%的车祸与饮酒有关。
中国公安部在2020年8月,在全国各地增强查处酒后驾驶的力度,以增加由酒后驾驶形成的恶性交通事故。
要查处就触及到检测人体内的酒精含量和运用设备来停止检测的效果。
图1-1毕业设计设计产品
1.2关于本课题的简介
本研讨设计的酒精浓度测试仪是一款适用性强、平安牢靠的气体乙醇浓度检测工具,采用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度停止检测,应用宏晶公司高功用低本钱单片机STC12C5A16AD对检测信号停止A/D转换和处置,最后经过液晶屏显示输入。
本研讨设计的酒精浓度测试仪还具有醉酒阈值设定功用,可以依据法律法规或用户需求设定修正醉酒阈值,并停止保管。
酒精浓度测试仪如图1所示,由MQ-3乙醇气体传感器、STC12C5A16AD〔或STC12C5A32AD〕单片机、EEPROM存储电路、液晶屏和键盘组成。
检测原理:
当具有N型导电性的氧化物暴露在大气中时,会由于氧气的吸附而增加其外部的电子数量而使其电阻增大。
其后假设大气中存在某种特定的恢复性气体,它将与吸附的氧气反响,从而使氧化物内的电子数添加,招致氧化物电阻减小。
半导体氧化物传感器就是经过该阻值的变化来剖析气体浓度。
从实际上说,要判别能否是酒后驾驶,最复杂可行的方法是现场检测驾驶人员呼气中的酒精含量。
少量的统计研讨结果说明,假设被测者深吸气后以中等力度呼气达三秒钟以上,这时呼出的气就是从肺部深处出来的气体,呼气中的酒精含量与血液中的酒精含量。
依据国度质量监视检验检疫局发布的«车辆驾驶人员血液、呼气酒精含量阈值与检验»(GB19522—2004)中规则,该规则指出,饮酒驾车是指车辆驾驶人员血液中的酒精含量大于或许等于20mg/100ml,小于80mg/100ml的驾驶行为。
醉酒驾车是指车辆驾驶人员血液中的酒精含量大于或许等于80mg/100ml的驾驶行为。
1.3课题论述总体结构布置
第一章表达了酒精浓度测试仪背景以及简介
第二章硬件设计。
第三章主要讨论运用Protel硬件开发软件
第四章软件设计
第五章为酒精浓度测试仪装置与调试。
第六章为总结和展望,总结本课题设计的总体思绪,产品的功用以及关于产品功用晋级等停止情形展望。
第二章硬件设计
2.1设计框图
本研讨设计的酒精浓度测试仪框图如图1所示。
MQ-3乙醇气体传感器输入信号经信号调理电路处置,输入随乙醇浓度变化的电压信号,该电压信号送入单片机系统,经AD转换,与设定的醉酒阈值停止比拟,并显示或报警。
图1酒精浓度测试仪方框图
2.2乙醇信号检测及调理电路
MQ-3乙醇气体传感器可以运用用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也用于其他场所乙醇蒸汽的检测。
其技术特点为:
●对乙醇蒸汽有很高的灵敏度和良好的选择性
●快速的照应恢复特性
●临时的寿命和牢靠的动摇性
●复杂的驱动回路
主要技术目的:
MQ-3乙醇气体传感器灵敏度曲线如图2所示,其传感原理为气敏电阻的输入阻值随乙醇气体等浓度变化而变化。
图2MQ-3乙醇气体传感器灵敏度曲线
Q-3乙醇气体传感器管脚与测试电路如图3所示。
(a)管脚图(b)测试电路
图3MQ-3乙醇气体传感器管脚及测试电路
MQ-3乙醇气体传感器及其调理电路原理如图4所示。
其外形如图5所示。
经过调理,检测信号由电阻值转变成电压值,便于后续电路停止A/D转换和处置。
图4传感器及调理模块原理图
图5MQ-3传感器模块外形图
该传感器模块具有如下特点,方便与单片机系统接口组成检测仪器。
●具有信号输入指示。
●双路信号输入〔模拟量输入及TTL电平输入〕
●TTL输入有效信号为低电平。
(当输入低电往常信号灯亮,可直接接单片机)
●模拟量输入0~5V电压,浓度越高电压越高。
2.3单片机电路
本设计选用宏晶公司高功用单片机STC12C5A16AD,其管脚如图6所示。
图6STC12C2052AD单片机管脚图
该芯片为52内核8位单片机,外部集成了10位多路A/D转换模块,适用于常用检测电路。
由STC12C5A16AD组成的单片机系统原理图如图7所示。
图中AOUT为MQ-3传感器模块输入的检测电压信号,送入ADC7端口停止处置,DOUT为传感器模块输入的数字电平信号,该信号可以依据乙醇气体浓度直接输入报警信号,报警阈值经过模块上的电位器停止调理。
图7单片机系统原理图
图7中,按键K2和K3为醉酒阈值调整键,其中K2为〝添加〞,K3为〝减小〞按键。
L2和L3为报警指示灯,区分可以停止酒后和醉酒两级报警。
2.4显示电路
显示局部采用SMC1602液晶屏停止数据显示,其主要技术参数为:
表1液晶屏技术目的
接口信号说明如表2所示。
与单片机接口电路如图8所示。
其中J2的3脚为背光引脚,R9和R10电阻用于调理背光亮度。
J2的4、5、6引脚区分接液晶的RS、E/W和E控制引脚,J2的7—14引脚为数据引脚。
图8LCD与单片机接口电路
2.5阈值存储
醉酒阈值存储在EEPROM芯片AT24C04中,并可以经过〝添加〞、〝增加〞按键调理并保管。
AT24C04是IIC接口的EEPROM芯片,可以用于掉电不易失数据的存储。
其电路如图9所示。
图中A0、A1和A2为芯片的地址引脚,普通接地即可。
SCL和SDA为AT24C04和单片机IIC通讯的时钟线和数据线。
图9EEPROM存储电路
2.6供电及顺序下载电路
本设计采用USB接口供电,电源电压5V。
同时,USB接口经过内含PL2303芯片的转换电路对单片机停止顺序编写。
其电路原理如图10所示。
图10供电及顺序下载电路
第三章Protel硬件开发软件
3.1Protel软件组成
Protel软件主要由电路原理图设计模块、印制电路板设计模块〔PCB设计模块〕、电路信号仿真模块和PLD逻辑器件设计模块等组成,各模块具有弱小的功用,可以很好的完成电路设计与剖析。
(1)原理图设计模块〔Schematic模块〕
电路原理图是表示电气产品或电路任务原理的重要技术文件,电路原理图主要由代表各种电子器件的图形符号、线路和结点组成。
图4.1所示为一张电路原理图。
该原理图是由Schematic模块设计完成的。
Schematic模块具有如下功用:
丰厚而灵敏的编辑功用、在线库编辑及完善的库管理功用、弱小的设计自动化功用、支持层次化设计功用等。
(2)印制电路板设计模块〔PCB设计模块〕
印制电路板〔PCB〕制板图是由电路原理图到制造电路板的桥梁。
设计了电路原理图后,需求依据原理图生设计成印制电路板的制板图,然后在依据制板图制造详细的电路板。
印制电路板设计模块具有如下主要功用和特点:
可完成复杂印制电路板〔PCB〕的设计;方便而又灵敏的编辑功用;弱小的设计自动化功用;在线式库编辑及完善的库管理;完备的输入系统等。
(3)电路信号仿真模块
电路信号仿真模块是一个功用弱小的数字/模拟混合信号电路仿真器,能提供延续的模拟信号和团圆的数字信号仿真。
它运转在Protel的EDA/Client集成环境下,与ProtelAdvancedSchematic原理图输入顺序协同任务,作为AdvancedSchematic的扩展,为用户提供了一个完整的从设计到验证仿真设计环境。
在Protel中停止仿真,只需从仿真用元器件库中放置所需的元器件,衔接好原理图,加上鼓舞源,然后单击防真按钮即可自动末尾。
3.2PCB板设计
(1)定元件的封装
①翻开网络表〔可以应用一些编辑器辅佐编辑〕,将一切封装阅读一遍,确保一切元件的封装都正确无误并且元件库中包括一切元件的封装,网络表中一切信息全部大写,一面载入出效果,或PCBBOM不延续。
②规范元件全部采用公司一致元件库中的封装。
③④⑥⑤元件库中不存在的封装,应自己树立元器件库。
(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屏蔽维护
对应地线回路规那么,实践上也是为了尽量减小信号的回路面积,多用于一些比拟重要的信号,如时钟信号,同步信号;对一些特别重要,频率特别高的信号,应该思索采用铜轴电缆屏蔽结构设计,行将所布的线上下左右用地线隔离,而且还要思索好如何有效的让屏蔽地与实践地平面有效结合。
④走线方向控制规那么
相邻层的走线方向成正交结构,防止将不同的信号线在相邻层走成同一方向,以增加不用要的层间窜扰;当由于板结构限制〔如某些背板〕难以防止出现该状况,特别是信号速率较高时,应思索用地平面隔离各布线层,用地信号线隔离各信号线。
⑤电源与地线层的完整性规那么
关于导通孔密集的区域,要留意防止孔在电源和地层的挖空区域相互衔接,构成对平面层的联系,从而破坏平面层的完整性,并进而招致信号在地层的回路面积增大。
第四章软件编程
4.1软件流程图
本设计软件主顺序流程图如图13所示。
图13主顺序流程图
4.2主顺序
下面引见main.c主顺序编写,其他顺序略
(1)头文件和一些宏定义
#include"STC12c5A.h"
#include"1602.h"
#include"2402.h"
#defineucharunsignedchar
#defineuintunsignedint
(2)常量、变量定义和函数声明
//声明常量
#defineALCH80//醉驾规范80mg/L
//K_MG_MV和K_ZERO为传感器校准系数,要依据每个MQ-3模块校准
#defineK_MG_MV160/60//传感器灵敏度系数,可以自行校准
#defineK_ZERO0//传感器零点漂移
//定义按键
sbitKey_Up=P3^6;
sbitKey_Down=P3^7;
//定义LED报警灯
sbitLed_Warn1=P3^4;
sbitLed_Warn2=P3^5;
//定义乙醇传感器TTL电平输入引脚
sbitDOUT=P1^4;
//定义标识
volatilebitFlagStartAL=0;//末尾转换标志
volatilebitFlagKeyPress=0;//有键弹起标志
//全局变量定义
ucharThreshold;//酒精浓度下限报警值
uintALCounter;//酒精转换计时器
intALValue;//酒精测量值
floatALtemp;//计算暂时变量
uintkeyvalue,keyUp,keyDown;//键值
char*pSave;//EEPROM存盘用指针
//函数声明
voidData_Init();
voidTimer0_Init();
voidPort_Init();
voidADC_Init();
ucharGetADVal();
voidKeyProcess(uint)
(3)各子顺序
//数据初始化
voidData_Init()
{
ALCounter=0;
ALValue=0;
Led_Warn1=1;
Led_Warn2=2;
keyvalue=0;
keyUp=1;
keyDown=1;
}
//定时器0初始化,中缀时间约2毫秒
//计算:
晶振11.0592MHz,定时器时钟11059200/12=921600,每毫秒922个脉冲
//16位定时器初值65536-1844=63692=0xf8cc
voidTimer0_Init()
{
ET0=1;//允许定时器0中缀
TMOD=1;//定时器任务方式选择
TL0=0xcc;//
TH0=0xf8;//定时器赋予初值,大约为2毫秒中缀1次
TR0=1;//启动定时器
}
//定时器0中缀
voidTimer0_ISR(void)interrupt1using0
{
TL0=0xcc;
TH0=0xf8;//定时器赋予初值
//每1秒钟启动一次AD转换
ALCounter++;
if(ALCounter>=500)
{
FlagStartAL=1;
ALCounter=0;
}
}
//端口初始化
voidPort_Init()
{
P1M0=0x80;//10000000,P1.7作为AD输入
P1M1=0x80;//
}
//ADC初始化
voidADC_Init()
{
uinti;
P1ASF=0x80;//设P1.7为AD输入
ADC_RES=0;//清先前的结果
ADC_CONTR|=0x80;//POWER=1,翻开ADC电源
for(i=5000;i>0;i--);//延时
ADC_CONTR=ADC_CONTR&0xE0;//1110,0000清ADC_FLAG,ADC_START和低3位
ADC_CONTR=ADC_CONTR&0xf8|0x07;//设置以后通道号为P1.7
for(i=2500;i>0;i--);//延时
}
//停止AD转换,失掉以后酒精值
ucharGetADVal()
{
uinti;
ADC_CONTR&=0xf7;
for(i=250;i>0;i--);//待输入电压动摇后末尾转换
//ADC_RES=0;
ADC_CONTR|=0x08;//ADC_Start=1,启动转换
while((ADC_CONTR&0x10)==0);//等候转换完毕ADC_FLAG=1
ADC_CONTR&=0xe7;//清ADC_FLAG和ADC_START位,中止转换
returnADC_RES;
}
//存入设定值
voidSave_Setting()
{
pSave=(char*)&Threshold;//地址低位对应低8位,高位对应高8位
wrteeprom(0,*pSave);//存醉酒阈值低8位
DELAY(300);
pSave++;
wrteeprom(1,*pSave);//存醉酒阈值高8位
DELAY(300);
}
//载入设定值
voidLoad_Setting()
{
pSave=(char*)&Threshold;
*pSave++=rdeeprom(0);
*pSave=rdeeprom
(1);
if((Threshold>=255)||(Threshold<0))Threshold=80;
}
//按键处置顺序,参数为键值,1为Up键,2为Down键
voidKeyProcess(uintnum)
{
switch(num)
{
case1:
if(Threshold<255)Threshold++;
break;
case2:
if(Threshold>1)Threshold--;
break;
default:
break;
}
L1602_int(2,9,Threshold);
Save_Setting();
}
voidmain()
{
uinti,j;
EA=0;
Data_Init();//数据初始化
Timer0_Init();//定时器0初始化
Port_Init();//端口初始化
ADC_Init();//ADC初始化
EA=1;
L1602_init();
L1602_string(1,1,"WelcometoALCT!
");
L1602_string(2,1,"DesignedbyAAA");
//延时
for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
{;}
//清屏
L1602_string(1,1,"");
L1602_string(2,1,"");
L1602_string(1,1,"Alcohol:
mg/L");
L1602_string(2,1,"Thresho:
mg/L");
//载入设定值
Load_Setting();
L1602_int(2,9,Threshold);
while
(1)
{
//假设FlagStartAL标志置位,那么停止AD转换
if(FlagStartAL==1)
{
//酒精浓度换算,50mg/L=62.5ppm,传感器灵敏度应事前校准
ALValue=500*GetADVal()/256;//8位ADC,首先失掉电压值,单位10毫伏
ALValue=ALValue-K_ZERO;//首先减去零点漂移,普通是130mV
if(ALValue<0)ALValue=0;
ALValue=ALValue*K_MG_MV;//将mV转变成mg/L,K_MG_MV系数需求校准
L1602_int(1,9,ALValue);
if(ALValue>Threshold)Led_Warn1=0;//超越阈值,那么Led_Warn1灯报警。
elseLed_Warn1=1;
FlagStartAL=0;
}
//查询乙醇传感器TTL电平,该指示灯为传感器模块报警
if(DOUT==0)Led_Warn2=0;
elseLed_Warn2=1;
//键盘查询,在弹起时照应
if((Key_Up)&&(keyUp==0)){FlagKeyPress=1;keyvalue=1;}
elseif((Key_Down)&&(keyDown==0)){FlagKeyPress=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 酒精 浓度 测试仪 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)