基于单片机的酒精浓度测试仪本科学位论文.docx
《基于单片机的酒精浓度测试仪本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的酒精浓度测试仪本科学位论文.docx(38页珍藏版)》请在冰点文库上搜索。
基于单片机的酒精浓度测试仪本科学位论文
提供全套,各专业毕业设计
毕业设计论文
基于单片机的酒精浓度测试仪
仇新
指导老师姓名:
张睿
专业名称:
电气自动化技术
班级学号:
11137211
论文提交日期:
2013年11月12日
论文答辩日期:
2013年11月15日
2013年12月30日
摘要
本研究设计的酒精浓度测试仪是一款实用性强、安全可靠的气体乙醇浓度检测工具,采用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度进行检测,利用宏晶公司高性能低成本单片机STC12C5A16AD对检测信号进行A/D转换和处理,最后通过液晶屏显示输出。
本研究设计的酒精浓度测试仪还具有醉酒阈值设定功能,可以根据法律法规或用户需要设定修改醉酒阈值,并进行保存。
本测试仪体积较小便于携带,且操作简单方便,造价较低廉,性价比较高,适合推广使用。
关键词:
酒精浓度;单片机;传感器;阀值
Abstract
Alcoholconcentrationtesterdesignedinthisstudyisthegasconcentrationofethanoldetectiontoolforapractical,safeandreliable,highprecisionofMQ-3alcoholgassensortodetecttheconcentrationofethanolinair,A/Dconversionandprocessingofsignaldetectionusingmacrocrystal,highperformanceandlowcostmicrocontrollerSTC12C5A16AD,finallythroughtheLCDscreendisplayoutput.Alcoholconcentrationtesterdesignedinthisstudyhasdrunkthresholdsettingfunction,canaccordingtolawsandregulationsortheuserneedstosetthethresholdtomodifythedrunk,andsave.Theinstrumentissmallvolumetocarry,simpleandconvenientoperation,lowcost,highperformance,suitableforthepromotionoftheuseof.
Keywords:
alcohol;MCU;Alcoholconcentrationsensor;threshold
第一章绪论
从工厂企业到居民家庭,酒精泄露的检测、监控以及对酒后驾车的监测对居民的人身和财产安全都是十分重要且必不可少的。
同时,随着我国经济的高速发展,人民的生活水平迅速提高,越来越多的人有了自己的私家车,酒后驾车是导致交通事故的一个主要因素,资料显示,我国近几年发生的重大交通事故中,有将近三分之一是由酒后驾车引起的。
由于人们安全意识增强,对环境安全性和生活舒适性要求的提高,为了防止机动车辆驾驶人员酒后驾车,现场实时对人体呼气中酒精含量的检测已日益受到重视,酒精浓度测试仪逐渐得到广泛应用。
此外,酒精测试仪也可应用于食品加工、酿酒等需要监控空气中酒精浓度的场合。
如今,气体传感器向低功耗、多功能、集成化方向的发展,因此,酒精浓度测试仪具有十分广阔的现实市场和潜在的市场要求。
本设计基于STC12C5A16AD单片机设计的酒精气体浓度探测仪,可用来检测酒精气体浓度,酒精气体浓度测试仪在生产生活中有重要的应用,比如,在一些环境要求严格的生产车间,用这种酒精浓度探测仪,可随时检测车间内的酒精气体浓度,当酒精气体浓度高于允许限定值时,发出警报,提醒人们及时通风换气,做到安全生产,此酒精测试仪经过再一步的改进可以使用到酒后驾驶测试上面去,利用该测试仪来告诫驾驶员请勿酒后驾驶。
在这次的设计中,利用了MQ-3型酒精的传感器通过对空气中的酒精浓度测试转换成0~5V的模拟量电压进行输出,把这个0~5V的电压传送到STC12C5A16AD内部自带的A/D转换模块中去,通过模拟量模块的转换输出一个8位0~255的数据给单片机的P1口,再通过单片机进行一些软件程序的处理显示在LCD的液晶上面。
目前对酒精测试的装置有燃料电池型,半导体型,红外线型,气体色谱分析性和比色型五种类型。
但由于价格方面的原因目前市场上用的是燃料电池型和半导体型。
燃料电池型是世界都在研究的环保型能源。
它可以把气体直接转换为电能而不产生污染。
酒精传感器只是它的一个分支。
在燃烧室内充满特种催化剂。
使进入燃烧室内的酒精能进行充分燃烧转换为电能。
也就是在电极上产生电压消耗在外加负载上。
使电压与燃烧室内的酒精浓度成正比。
与半导体型相比,燃料电池型的呼吸酒精测试仪具有稳定性好、精度高、抗干扰性能好等优点。
但由于其传感器结构要求特别高所以生产成本提别高,制造难度特别大所以只有少数国家能够生产。
第二章总体设计
2.1设计要求
本设计的主要内容是用由MQ-3乙醇气体传感器、单片机、EEPROM存储电路、液晶屏和键盘组成的、设计一个酒精浓度测试仪。
实现的功能是:
1)实时测量空气中的乙醇气体浓度,在液晶屏上显示。
2)具有乙醇浓度超高报警功能,当测量得到的乙醇浓度超过预先设定的阈值,则红灯报警。
3)电路设计了两个红灯,另一个红灯是传感器直接输出的模拟报警信号,其阈值通过调节传感器模块上的兰色电位器改变,一般可以不用。
4)醉酒阈值可存储至EEPROM存储器,并在液晶屏显示。
系统掉电后醉酒阈值不失,可以保持。
2.2设计方案
本设计主要由传感器电路、单片机系统、显示电路、存储电路、供电及程序下载电路组成的。
单片机的选择是:
1)STC12C5A16AD芯片为52内核8位单片机,内部集成了10位多路A/D转换模块;
2)单片机STC12C5A16AD工作频率为12MHz。
用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度进行检测,利用宏晶公司高性能低成本单片机STC12C5A16AD对检测信号进行A/D转换和处理,通过按键对芯片写入数据来控制阈值的大小,另外电路外接EEPROM芯片,关闭电源,数据自动存储不会丢失,最后通过液晶屏显示输出。
如图2-1:
数字输出
模拟输出
传感器
控制输出
单片机
LCD显示输出
图2-1系统设计方框图
第三章硬件设计
3.1硬件设计原理分析
本硬件由五部分组成:
单片机模块,酒精传感器模块,显示模块,存储模块供电及程序下载模块。
本系统由单片机STC12C5A16AD控制,其直接控制两个模块:
阀值存储模块将与酒精传感器采集到并输送到单片机控制处理后的数字信号相比较,LCD显示模块可以将经过单片机处理过的酒精气体浓度具体量化值显示出来。
MQ-3乙醇气体传感器输出信号经信号调理电路处理,输出随乙醇浓度变化的电压信号,该电压信号送入单片机系统,经A/D转换,与设定的醉酒阀值进行比较,并显示或报警。
如图3-1:
图3-1酒精浓度测试仪硬件结构图
3.2酒精传感器模块
MQ-3乙醇气体传感器可以应用用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也用于其他场所乙醇蒸汽的检测。
其技术特点为:
●对乙醇蒸汽有很高的灵敏度和良好的选择性
●快速的响应恢复特性
●长期的寿命、可靠的稳定性和简单的驱动回路
3.2.1MQ-3主要技术指标
表3-1主要技术分类
3.2.2MQ-3结构、外形、测试电路
MQ-3气敏元件的结构和外形如图3-2所示,由微型Al2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。
封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流,表3-2对各个部件进行了详细的描述。
图3-2MQ-3气敏元件的结构外形图
表3-2MQ-3气敏元件的组成材料表
部件
材料
1
气体敏感层
二氧化锡
2
电极
金(Au)
3
测量电极引线
铂(Pt)
4
加热器
镍铬合金(Ni-Cr)
5
陶瓷管
三氧化二铝
6
防爆网
100目双层不锈钢(SUB316)
7
卡环
镀镍铜材(Ni-Cu)
8
基座
胶木
9
针状管脚
镀镍铜材(Ni-Cu)
MQ-3乙醇气体传感器灵敏度曲线如图3-3所示,其传感原理为气敏电阻的输出阻值随乙醇气体等浓度变化而变化。
图3-3MQ-3乙醇气体传感器灵敏度曲线
3.2.3MQ-3传感器调理电路
MQ-3乙醇气体传感器及其调理电路原理如图3-4所示,技术指标如表3-3所示。
经过调理,检测信号由电阻值转变成电压值,便于后续电路进行A/D转换和处理。
图3-4传感器及调理模块原理图
该传感器模块具有如下特点(如图3-4),方便与单片机系统接口组成检测仪器。
●具有信号输出指示。
●双路信号输出(模拟量输出及TTL电平输出)
●TTL输出有效信号为低电平。
(当输出低电平时信号灯亮,可直接接单片机)
●模拟量输出0~5V电压,浓度越高电压越高。
●对乙醇蒸汽具有很高的灵敏度,良好的选择性,快速的响应恢复特性。
主要技术指标:
表3-3技术指标
产品型号
MQ-3
产品类型
半导体气敏元件
检测气体
酒精蒸汽
检测浓度
0.04-4mg/L
负载电阻
可调
3.3单片机模块
STC12C5A16AD是宏晶科技生产的新一代8051单片机,包含有中央处理器(CPU)、程序存储器(FLASH)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶振振荡等模块。
STC12C5A16S2单片机相比传统C51功能更加强大,有些特殊功能寄存器被扩展为专用的特殊寄存器。
其引脚图和内部结构如图3-5所示:
图3-5STC12C5A16AD单片机管脚图
3.3.1STC12C5A16AD的功能特性
(1)高速:
1个时钟/机器周期,增强型8051内核,速度比普通8051快8~12倍。
(2)宽电压:
3.3~5.5V。
(3)增加外部掉电检测电路,可在掉电时及时将数据保存进EEPROM,正常工作时无需操作EEP。
(4)增加第二复位功能脚,(高可靠复位,可调复位门槛电压,频率小于12Hz,无需此功能)。
(5)低功耗设计:
空闲模式(可由任意一个中断唤醒);掉电模式(可由外部中断唤醒),可支持下降沿/上升沿和远程唤醒。
(6)工作频率:
0~35MHz,相当于普通8051:
0~4205MHz。
(7)时钟:
外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置。
(8)8/16/20/32/40/48/52/56/60/62K字节片内FLASH程序存储器,擦写次数10万次以上。
(9)1280字节片内RAM数据存储器。
(10)芯片内EEPROM功能,擦写次数10万次以上。
(11)ISP/IAP,在系统可编程/在在应用可编程,无需编程器/仿真器。
(12)8通道,10位高速ADC,高速可达25万次/秒,2位PWM还可当2路D/A使用。
(13)2通道捕获/比较单元(PWM/PCA/CCP),也可用来再实现2个定时器或2个外部中断(支持上升沿/下降沿中断)。
(14)4个16位定时器,兼容8051的定时器T1/T0,2路PCA实现2个定时器。
(15)可编程时钟输出功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在P1.0输出时钟。
(16)硬件看门口(WDT)。
(17)高速SPI串行通信端口。
(18)全双异步串行口(UART),兼容普通8051串口。
(19)先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令。
(20)通用I/O口(37/40/44个),复位后为准双向口/弱上拉(普通8051I/O口)可设置成四种模式:
准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不超过100mA。
3.3.2STC12C5A16AD的引脚说明
单片机采用40引脚的双列直插封装方式。
图3-7为引脚排列图,40条引脚说明如下:
1)主电源引脚Vss和Vcc
2)外接晶振引脚XTAL1和XTAL2
3)控制或与其它电源复用引脚RST,ALE和NA
4)输入/输出引脚P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7
(1)P0口(P0.0~P0.7)是一个漏极开路型准双向I/O口。
在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。
(2)P1口(P1.0~P1.7)是带内部上拉电阻的8位双向I/O口。
在EPROM编程和程序验证时,它接收低8位地址。
(3)P2口(P2.0~P2.7)是一个带内部上拉电阻的8位双向I/O口。
在访问外部存储器时,它送出高8位地址。
在对EFROM编程和程序验证期间,它接收高8位地址。
(4)P3口(P3.0~P3.7)是一个带内部上拉电阻的8位双向I/O口。
在访问外部存储器时,它送出高8位地址。
在对EFROM编程和程序验证期间,它接收高8位地址。
3.3.3单片机系统原理图
该芯片为52内核8位单片机,内部集成了10位多路A/D转换模块,适用于常用检测电路。
由STC12C5A16AD组成的单片机系统原理图如图3-6所示。
图中AOUT为MQ-3传感器模块输出的检测电压信号,送入ADC7端口进行处理,DOUT为传感器模块输出的数字电平信号,该信号可以根据乙醇气体浓度直接输出报警信号,报警阈值通过模块上的电位器进行调节。
图3-6单片机系统原理图
图中,按键K2和K3为醉酒阈值调整键,其中K2为“增加”,K3为“减小”按键。
L2和L3为报警指示灯,分别可以进行酒后和醉酒两级报警。
复位电路用于单片机控制系统开机时所需的信号,通过RST引脚是复位信号的输入端。
复位信号是高电平有效实践单片机整个内部状态初始化。
高电平有效的持续时间应为24个振荡周期以上。
若时钟频率为6MHz,则复位信号至少应持续4微秒以上,才可以使单片机复位。
复位以后,07H写入栈指针SP,P0口一P3口均置1(允许输入),程序计数器PC和其它特殊功能寄存器SFR全部清“0”。
只要该脚保持高电平,单片机便循环复位。
当RST端由高变低后,由ROM的0000H开始执行程序。
单片机的复位操作不影响内部RAM的内容。
本单片机的复位方式是手工复位如下图3-7所示:
图3-7复位电路图
XTAL1(19脚)和XTAL2(18脚):
外接晶体引脚。
当晶振确定后,也确定了单片机的基本时序周期。
一条指令译码产生的一系列微操作信号在时间上有严格的先后次序,这种次序就是计算机的时序。
其基本时序周期有如下四种。
●振荡周期:
指振荡源的周期,若为内部产生方式,则为石英晶体的振荡周期。
T振荡周期=1/fosc。
●机器周期:
一个机器周期含6个时钟周期(S周期)。
T机器周期=6*T时钟周期=12*T振荡周期=12/fosc;STC12CXX系列单片机有1个时钟周期/机器周期。
●时钟周期:
(称S周期)为振荡周期的两倍,时钟周期=2倍的振荡周期T时钟周期=2*T振荡周期。
●指令周期:
完成一条指令占用的全部时间。
805l的指令周期含1—4个机器周期,其中多数为单周期指令,还有2周期和4周期指令。
当使用芯片内部时钟时,两个引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接入外部时钟脉冲信号,晶振电路如图3-8所示。
图3-8晶振电路图
3.4显示模块
显示部分采用SMC1602液晶屏进行数据显示,其主要技术参数如表3-4所示:
显示容量
12×2个字符
芯片工作电压
4.5-5.5V
工作电流
2.0Ma
最佳工作电压
5.0V
字符尺寸
2.95×4.35(WXH)mm
表3-4液晶屏技术指标
接口信号说明如表3-5所示:
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
Data1/0
2
VDD
电源正极
10
D3
Data1/0
3
VL
液晶显示偏压信号
11
D4
Data1/0
4
RS
数据/命令选择端
12
D5
Data1/0
5
R/W
读/写选择端
13
D6
Data1/0
6
E
使能信号
14
D7
Data1/0
7
D0
Data1/0
15
BLA
背光源正极
8
D1
Data1/0
16
BLK
背光源负极
表3-5液晶屏接口信号说明
与单片机接口电路如图3-9所示。
其中J2的3脚为背光引脚,R9和R10电阻用于调节背光亮度。
J2的4、5、6引脚分别接液晶的RS、E/W和E控制引脚,J2的7—14引脚为数据引脚。
图3-9LCD与单片机接口电路
3.5存储模块
醉酒阈值存储在EEPROM芯片AT24C04中,并可以通过“增加”、“减少”按键调节并保存。
AT24C04是IIC接口的EEPROM芯片,可以用于掉电不易失数据的存储。
其电路如图3-10所示。
图中A0、A1和A2为芯片的地址引脚,一般接地即可。
SCL和SDA为AT24C04和单片机IIC通信的时钟线和数据线。
图3-10EEPROM存储电路
3.6供电及程序下载模块
本设计采用USB接口供电,电源电压5V。
同时,USB接口通过内含PL2303芯片的转换电路对单片机进行程序编写。
其电路原理如图3-11所示。
图3-11供电及程序下载电路
第四章软件设计
对于单片机的开发应用中,逐渐引入了高级语言,C语言就是其中的一种。
汇编语言的可控性较高级语言来说更具优越性。
程序编写语言比较常见的有C语言、汇编语言。
汇编语言的机器代码生成效率高,控制性好,但就是移植性不高。
C语言编写的程序比用汇编编写的程序更符合人们的思考习惯。
还有很多处理器都支持C编译器,这样意味着处理器也能很快上手。
且具有良好的模块化、容易阅读、维护等优点,且编写的模块程序易于移植。
基于C语言和汇编语言的优缺点,本程序采用C语言编写方法。
软件编写的主体思路是将系统按功能模块化划分,包括主程序模块,A/D转换模块,按键输入模块,液晶显示输出模块。
然后根据各个模块要实现的功能写各个子程序。
4.1主程序模块
主程序实现的功能:
与硬件相结合实现便携式酒精浓度检测仪的各个功能。
主要是包括A/D转换模块,按键输入模块,液晶显示输出模块。
见图4
-1:
图4-1主程序模块框图
4.1.1A/D转换模块
(1)模数转换模块的主要功能就是将经放大器放大的模拟电压信号转化为MCU能够处理的数字信号,并传送给MCU。
(2)A/D转换的流程图见下图4-2:
图4-2模数转换模块框图
(3)程序介绍:
voidTimer0_ISR(void)interrupt1using0
{
TL0=0xcc;
TH0=0xf8;//定时器赋予初值
//每1秒钟启动一次AD转换
ALCounter++;
if(ALCounter>=500)
{
FlagStartAL=1;
ALCounter=0;
}
}
4.1.2按键输入模块
(1)按键时显现人机对话的一个控制按钮,通过按键的操作,对系统进行发送操作指令,后经与MCU串行通信,然后在液晶上显示。
(2)按键查询式的流程图见下图4-3:
图4-3按键输入模块框图
(3)程序介绍:
//定义按键
sbitKey_Up=P3^6;
sbitKey_Down=P3^7;
//定义LED报警灯
sbitLed_Warn1=P3^4;
sbitLed_Warn2=P3^5;
//定义乙醇传感器TTL电平输出引脚
sbitDOUT=P1^4;
4.1.3液晶显示输出模块
LCD模块在本系统中主要起着开界面汉字显示,以及各控制效果的显示。
采用直接访问方式。
液晶显示的操作流程图见下图4-4:
图4-4液晶显示输出模块框图
(3)程序介绍:
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);
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;//有键弹起标志
charThreshold;//酒精浓度上限报警值
uintALCounter;//酒精转换计时器
intALValue;//酒精测量值
floatALtemp;//计算临时变量
uintkeyvalue,keyUp,keyDown;//键值
char*pSave;//EEPROM存盘用指针
//函数声明
voidData_Init();
voidTimer0_Init();
voidPort_Init();
voidADC_Init();
ucharGetADVal();
voidKeyProcess(uint);
(3)各子程序
//数据初始化
voidData_Init()
{
ALCounter