基于51单片机的便携式酒精检测系统

发表时间:2021/6/25   来源:《中国电业》2021年3月第7期   作者:孔晓龙 静宇航 洪莹 柏植
[导读] 综观现有的酒精检测器系统以单片机AT89S51单片机为基础[1],并借助相应的外围电路,将检测结果通过LED、LCD 等显示方式告知使用者
        孔晓龙 静宇航 洪莹 柏植
        宿州学院机械与电子工程学院安徽省宿州市234000

摘要
        综观现有的酒精检测器系统以单片机AT89S51单片机为基础[1],并借助相应的外围电路,将检测结果通过LED、LCD 等显示方式告知使用者。MQ-3酒精传感器就是一种对气体敏感的化学传感器,它能随着外部气体的浓度或不同而改变敏感膜的电阻。酒精检测报警器利用MQ-3酒精传感器检测酒精浓度,然后采样的值送给ADC0832进行A/D转换,将被测模拟量转换成数字量,并用数字方式显示出测量结果。A/D转换器的精确度影响数据显示的准确度,本设计采用ADC0832对输入模拟信号进行转换,控制核心STC89C51单片机对转换的结果进行运算和处理,最后驱动LCD1602显示数字信号,并将数值与设定值做比较控制声光报警和继电器是否吸和,系统可自行设定上下限报警值。通过keil软件对所设计程序进行编译和调试,keil软件提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个uViSion集成开发环境将这些部分组合在一起。
    
        【关键词】STC89C51;ADC0832;LCD1602;



一、设计背景及意义
        近年来,随着中国经济的高速发展,仪器仪表产业也得到了快速发展, 科学技术的进步为酒精浓度检测仪行业的发展提供了条件,新技术新产品正在成为未来酒精检测仪器的主流。
        未来一段时间,使用半导体和催化原理的气体检测仪器仪表依靠着价格优势仍会占据部分低端市场。电化学传感器及检测仪器,在精度要求高的领域综合优势突出。红外气体传感器及仪器适用于监测各种易燃易爆,具有精度高、选择性好、可靠性高、不中毒、不依赖于氧气、受环境干扰因素较小、寿命长等显著优点。这些优点将导致电化学、红外原理的检测仪器占领更广泛的行业高端市场,并在未来逐步成为市场主流[4]。
        气体检测仪器仪表行业的广阔前景、快速发展及较高利润水平,也吸引了相关工业仪器仪表巨头的高度关注。部分工业仪器仪表巨头迅速调整方向介入气体检测仪器仪表行业,市场竞争越来越激烈。可以预见国内一些小型的酒精浓度检测仪器企业面临洗牌的危险,而规模相对较大的企业也需要加强研发和技术创新,扩大生产规模,提高市场占有率,并迅速建立核心气体传感器研发和生产能力,以便尽快做大作强,才有足够实力与跨国巨头竞争。
        近年来我国人均汽车保有量呈大幅度增长,因此每年因为酒后驾驶所导致的事故多达数万其,大约50%—60%的交通事故都和酒后驾驶有关,其中造成死亡的事故中50%以上都与酒后驾驶有关,目前酒后驾驶已经成交通事故的一大“杀手”。2011年2月25日通过《刑法修正案八》新增的133之一的规定,以危险驾驶罪立案追究。为了有效的防止酒后驾驶带来的危害,研究一种酒精浓度检测仪来测量驾驶员呼气中的酒精含量是否超标是非常必要的,可以实时的提醒驾驶员是否处于酒驾危险的状态,以达到警示作用。   
        
        
         
        
二、总体设计方案
2.1系统的功能要求
        本系统的研制主要包括以下几项功能:
        (1)准确监测环境中酒精的浓度值;
        (2)灯光蜂鸣器报警功能:当环境酒精浓度过大时,报警器要进行灯光报警。
2.2系统的组成及方案设计
        方案一:本设计用MQ-2酒精传感器采集气体信号,并通过数模转换器将模拟信号转换成数字信号送至单片机,单片机对数字信号进行分析处理,并将所得的结果显示出来,可以通过键盘设置不同环境下酒精浓度的不同阀值,如果所检测出的酒精浓度超过了所设定的阀值,那么单片机就能控制蜂鸣器发出声音报警。键盘采用3个独立键盘进行数据输入设定;显示部分采用LCD1602液晶显示器。温度采集采用DS18B20,与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。经过软件处理送1602显示当前环境温度。系统设计方框图如图2.1所示。
       
        
                                 图2.1 系统方框图
                  
                  
        方案二:基于AT89S51单片机用MQ-3型气体传感器实现酒精气体浓度的检测,需要信号采集模块用于对酒精浓度信号的采集,该信号是通过MQ-3气体传感器和负载电压得到分压电信号。信号转换模块用来把采集到的模拟信号转换为可以用单片机处理的数字信号。数码管显示模块是对单片机处理后的数字信号的显示,用来显示酒精的浓度。报警模块是对设定值提供报警功能,该共跟你过用发光二极管显示以及用蜂鸣器来产生声音报警。根据各功能的设计,可得到它的系统总框图如图2..2所示。
图2.2系统方框图



三、系统的硬件设计
总体电路



        实时显示当前的浓度值,共有1个报警值(可以通过按键设定),默认开机时报警值是25,当浓度值小于25时,绿灯闪烁,当浓度值大于25时,红灯闪烁,蜂鸣器报警。测试完毕可以按下复位按键进行复位方便下次使用。
        
3.1 STC89C51单片机
        STC89C51是一种低功耗、高性能CMOS8位微控制器,具有 4K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 4k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。
        
        
        
        
3.2 酒精检测电路的设计
             
        在这个电路中,有两个部分,主要是酒精传感器检测气体浓度,将电压信号给ADC0832,模数转换电路将模拟信号转换成数字信号给单片机,单片机再读取相应的数值和处理。
        
3.3 MQ-3介绍
        MQ-3型气体传感器用于以乙醇为主要成分的气体的测量,而且它抗干扰能力强,水蒸气、烟等干扰气体对它的影响小。
        MQ-3型气敏元件的特点:
        (1) 具有信号输出指示。
        (2) 双路信号输出(模拟量输出及TTL电平输出)
        (3)TTL输出有效信号为低电平。
        (当输出低电平时信号灯亮,可直接接单片机)

3.4 LCD1602液晶显示
        LCD1602A 是一种工业字符型液晶,能够同时显示16x02 即32个字符。(16列2行)。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单。
        
3.5 灯光声音报警电路
        
        LED,声音报警电路
                                         
        单片机输出高电平使得Q1三极管导通蜂鸣器报警并且led灯闪烁,蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

四、系统的软件设计
4.1 主程序流程图


        
图5 主程序流程图
        
        
        
        
        
        

4.2关键程序
        下面介绍main.c主程序编写,其他程序略。
#include <reg52.h>             //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义    变量范围0~255
#define uint  unsigned int     //无符号整型 宏定义    变量范围0~65535

#include <intrins.h>
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 - 100;        //首先减去零点漂移,一般是1V
            if(dengji < 0)
                dengji = 0;   
            dengji = dengji * 2;         //将mV转变成mg/L      

            write_sfm2(1,9,dengji);          //显示酒精浓度
        }
    }
}
        
        
        
【参考文献】
        [1] 冯博琴.微型计算机原理与接口技术[M]. 北京:清华大学出版社,2004
        [2] 张毅刚.MCS-51单片机应用设计[M]. 哈尔滨工业大学出版社,2004
        [3] 张淑清,姜万录等.单片微型计算机接口技术及应用[M]. 国防工业出版社,2003
        [4] 吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用[M]. 北京:清华大学出版社,2001
        [5] 赵亮,侯国锐.单片机C语言编程与实例[M]. 北京:人民邮电出版社,2003
        [6] 王振红,李洋,郝承祥.WT588D语音芯片的工作原理及其在智能控制系统中的应用[J]. 电子器件2002年3月第25卷第1期

        (宿州学院国家级大学生创新创业训练计划项目资助     项目编号:S202010379153)
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: