基于单片机的酒精浓度检测仪设计*
2016-07-21孙静
孙 静
(黎明职业大学 机电工程与自动化学院,福建 泉州 362000)
基于单片机的酒精浓度检测仪设计*
孙静
(黎明职业大学 机电工程与自动化学院,福建 泉州 362000)
摘要:设计一款简易酒精浓度检测仪,采用单片机控制系统,利用MQ-3酒精传感器采集酒精浓度,能够实现对酒精浓度的实时采集,并通过液晶屏显示.同时,当酒精浓度超标时进行声光报警.
关键词:酒精检测;MQ-3酒精传感器;单片机; 液晶显示;声光报警
本文所设计的酒精浓度测试仪是一款实用性较强的气体浓度检测工具,采用MQ-3乙醇气体传感器对空气中的酒精浓度进行检测,利用单片机STC89C52RC完成检测信号的转换和处理,最后通过液晶屏显示输出.设计的酒精浓度测试仪还具有设定浓度值功能,体积较小便于携带,且操作简单方便,造价较低廉,适合推广使用.
1系统硬件电路设计
系统采用单片机为主控芯片,由酒精传感器采集气体浓度,经过单片机对采集来的信号处理后将当前空气中的酒精浓度值显示在液晶屏上.同时系统还设置了声光报警电路,系统硬件设计组成如图1所示.
图1 系统硬件电路结构框图
1.1主控芯片的选择
本系统采用STC公司生产的STC89C52RC单片机,是一种低功耗、高性能CMOS8位微控制器,具有 8K 系统可编程Flash存储器,并在经典的MCS-51内核基础上进行很多改进,使得芯片具有传统51单片机不具备的功能,使得控制应用系统更加灵活.
1.2传感器的选择
气体传感器是气体检测系统的核心[1].考虑到稳定性、灵敏度、选择性和抗腐蚀性[2],系统采用MQ-3型气体传感器.MQ-3气体传感器对酒精的灵敏度高,当所处环境中存在酒精蒸汽时,传感器的电导率随空气中酒精气体浓度的增加而增大.同时具有双路信号输出(模拟量输出及TTL电平输出),能够输出0~5V电压信号,且浓度越高电压越高.图2为传感器连接电路.
1.3A/D转换电路
考虑到传感器输出的是0~5伏的电压值,系统需要采用A/D转换器将电压信号转换成数字信号送入单片机进行处理.本系统采用模数转换芯片ADC0809.该芯片是一个8位A/D转换器,具有8路模拟信号输入端口,但每个瞬间只能转换一路,各路之间的切换由软件改变A、B、C引脚上的代码来
实现.本设计是对酒精传感器的输出电压信号进行转换,所以只需连接其中一路模拟信号输入端口.据此,系统选用模拟输入通道IN0与传感器输出端进行连接,其A/D转换电路如图3所示.当MQ-3检测到周围环境有酒精浓度变化时,其两电极端电阻将发生变化,对应负载电阻的分压也相应发生变化.而负载电阻的一端与ADC0809的模拟输入通道IN0相连.所以当单片机启动模数转换后,则可将转换后的酒精浓度值读取出来.
图2 信号采集电路
图3 模数转换电路
1.4液晶显示电路
本系统采用液晶显示芯片LCD1602对酒精浓度进行显示.LCD1602是一种工业字符型液晶屏,专门用来显示字母、数字、符号等的点阵型液晶模块[3],能够同时显示两行,每行16共32个字符液晶模块,满足本系统的显示要求.液晶显示模块接口电路如图4所示.图中7-14脚是1602的8位双向数据线,与单片机P0口相连;6脚是LCD的使能端,与P2.4相连;RS是寄存器选择端,当它为高电平时,选择数据寄存器,反之选择指令寄存器.LCD显示包含当前酒精浓度值和酒精浓度超标时的浓度值两部分,分别用ET和WA表示.MQ-3 型气敏传感器使用时,在初始阶段,传感器先预热,此时液晶显示初始值,当预热完毕后,此时液晶屏显示酒精浓度初始设定值和超标值,并进入实时测量显示结果阶段[4],显示情况如图5所示.
图4 液晶显示接口电路
图5 酒精测试仪硬件电路板
1.5报警电路
本系统设置了蜂鸣器报警电路,蜂鸣器通过三极管9012驱动,三极管的第一脚接在单片机的P2.5上,当酒精浓度超标即超过25mg/100mL时,将单片机引脚置低,则蜂鸣器响起,同时连接单片机P2.2的红色LED闪烁,达到声光报警的功效.电路如图6所示.
图6 蜂鸣器报警电路
2系统软件设计
本系统软件部分主要由主程序、酒精检测子程序、显示子程序、按键子程序和声光报警等部分组成.系统初始化完成后,进入显示界面,通过按键设置超标时的酒精浓度值,确定后返回,如此循环执行.软件系统总流程图如图7所示.
2.1数据采集模块
系统使用的模数转换器ADC0809是一种逐次比较式8路模拟输入、8位数字量输出的A/D转换器.START为A/D转换启动脉冲输入端,当下降沿时启动A/D转换.EOC 为A/D转换结束标志,当转换结束时,输出高电平.OE为数据输出允许信号,当A/D转换结束时,此端输入一个高电平,并输出数字量.AD转换子程序如下.
图7 程序流程图
//ADC0809读取信息
uchar ADC0809()
{
uchar temp_=0x00;
OE=0;
//转化初始化
ST=0;
//开始转换
ST=1;
ST=0;
//外部中断等待AD转换结束
while(EOC==0)
//读取转换的AD值
OE=1;
temp_=Data_ADC0809;
OE=0;
return temp_;
}
2.2LCD1602液晶显示
LCD1602液晶模块内部有一个字符发生器CGRAM,已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码通过标准字库表查找其对应代码即可.它的读写操作、屏幕和光标的操作都是通过指令编程来实现的.显示字符时需要先送地址(写命令),然后再送字符(写数据).如果要
显示字符库外的字符,则需要利用CGRAM编制显示.本系统液晶显示模块包括LCD的初始化、写命令、写数据、LCD数据显示部分.系统初始的显示状态分两行显示,包括当前酒精浓度和报警浓度值,初始均为000mg/L.LCD初始化程序如下.
//1602初始化
void Init1602()
{
uchar i=0;
write_com(0x38);//屏幕初始化
write_com(0x0c);//打开显示 无光标 无光标闪烁
write_com(0x06);//当读或写一个字符是指针后一一位
write_com(0x01);//清屏
write_com(0x80);//设置位置
for(i=0;i<18;i++)
{
write_data(Init1[i]); //1行初始化显示
}
write_com(0x80+0x40);
for(i=0;i<18;i++)
{
write_data(Init2[i]);//2行初始化显示
}
}
3结论
本系统设计了基于STC89C52RC单片机控制的简易酒精浓度测试仪,包括硬件电路系统设计和软件程序设计.经测试,本系统结构简单,使用方便,具有实时显示酒精浓度值和超限报警功能,且酒精浓度检测效果较好.
参考文献:
[1]周鸿武.基于单片机的酒精浓度检测仪设计[J].制造业自动化,2012(1).
[2]夏骏,李国兴,郝卜.基于单片机的防酒后驾驶控制装置[J].科技信息,2012(5).
[3]高美霞,柏建普.单片机控制的超声波测距仪汽车倒车系统的设计[J].仪器仪表与检测技术,2011(11).
[4]冉伟刚.气体酒精浓度检测报警器设计[J].农业网络信息,2011(10).
(责任编辑:王前)
DOI:10.13877/j.cnki.cn22-1284.2016.06.002
*收稿日期:2015-11-08
基金项目:2013年福建省中青年教师教育科研项目“多功能防酒驾智能控制系统”(JB13352);泉州市科技局2013年度科技计划项目“基于单片机的多功能防酒驾智能制动系统”(2013Z48)
作者简介:孙静,女,河北邯郸人,副教授.
中图分类号:TP273
文献标志码:A
文章编号:1008-7974(2016)03-0004-03