【《基于STM32F103C8T6单片机的酒精测试仪设计与实现》13000字(论文)】_第1页
【《基于STM32F103C8T6单片机的酒精测试仪设计与实现》13000字(论文)】_第2页
【《基于STM32F103C8T6单片机的酒精测试仪设计与实现》13000字(论文)】_第3页
【《基于STM32F103C8T6单片机的酒精测试仪设计与实现》13000字(论文)】_第4页
【《基于STM32F103C8T6单片机的酒精测试仪设计与实现》13000字(论文)】_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于STM32F103C8T6单片机的酒精测试仪设计与实现摘要:酒精的使用范围很广,在我国的化学工业、医疗健康、食品工业和其他工业和农业的生产中都是有着相当重要的作用。在酒精的加工、生产和运输过程中,无法避免的会使得酒精挥发一部分,当环境下的酒精达到一定的浓度时,就会存在很大的安全隐患,甚至会引发重大的安全事故,进而造成巨大的经济损失。因酒后驾车所造成的交通事故已占到交通事故总数的相当大比例。为了避免发生现存的酒精生产使用中产生的安全问题,本文设计了一种基于单片机的酒精测试仪。仪器采用STM32F103C8T6最小系统作为芯片的主控模块,利用最小系统模数转换进行酒精浓度值的输出,保证了测量精度。选用OLED12864液晶显示模块显示测量酒精浓度的相关数据,包括阈值的设定、模式的选择、浓度的实时显示。使用按键实现模式选择、阈值设定功能。使用LED灯和蜂鸣器发出光亮和声音从而实现声光报警的功能。仪器设计了有无换气两种模式,采用继电器控制风扇实现换气的功能。软件部分采用Keil为平台,使用C语言进行开发。实现对环境下的酒精浓度的测量和显示。关键词:酒精测试仪;单片机;模式选择;浓度测量目录1 绪论 11.1背景及目的 11.1.1背景 11.1.2目的 11.2国内外研究状况和相关领域中已有的成果 11.2.1国外研究状况 11.2.2国内研究状况 21.2.3相关领域中已有的研究成果 21.3本课题的意义 21.4研究方法 31.5理论依据和具体条件 31.5.1理论依据 31.5.2具备的条件 31.6论文构成及主要研究内容 41.6.1论文构成 41.6.2主要研究内容 41.7本章小结 42系统总体设计 52.1系统结构设计 52.2硬件设计思路 52.3软件设计思路 62.4系统工作原理 62.5本章小结 63硬件系统的设计与实现 73.1硬件设计总体设计 73.2单片机最小系统介绍 73.2.1单片机芯片介绍 73.2.2主控模块芯片介绍 83.2.3最小系统电路 93.3按键模块电路设计 113.3.1独立按键介绍 123.3.2按键模块电路设计 123.4MQ-3酒精检测模块电路设计 123.4.1酒精检测模块介绍 123.4.2STM32内置模数转换器介绍 143.4.2酒精检测模块电路设计 143.5液晶显示模块 153.5.1液晶显示模块介绍 153.5.2液晶显示模块电路设计 153.6换气模块电路设计 163.6.1换气模块介绍 163.6.2换气模块的电路设计 163.7声光报警模块电路设计 173.7.1声光报警模块介绍 173.7.2声光报警模块电路设计 173.8本章小结 184软件系统的设计与实现 194.1软件开发环境介绍 194.2总体程序设计流程 194.3按键模块程序 214.4酒精检测模块程序 234.5液晶显示模块程序 244.6换气模块程序 254.7声光报警模块程序 264.8本章小结 275仪器测试 285.1系统测试 285.2实物界面显示 285.3本章小结 296 结论 306.1设计总结 306.2未来展望 30参考文献 31绪论1.1背景及目的1.1.1背景酒精的使用范围很广,在我国的化学工业、医疗健康、食品工业和其他工业和农业的生产中都是有着相当重要的作用。在酒精的加工、生产和运输过程中,无法避免的会使得酒精挥发一部分,当环境下的酒精达到一定的浓度时,就会存在很大的安全隐患,甚至会引发重大的安全事故,进而造成巨大的经济损失。汽车的数量随着人们生活水平的提升而大幅增加。但在最近几年中,因酒后驾车导致的交通事故已经造成严重的经济损失以及人员伤亡,酒后驾车是对公共安全的严重威胁[1]。从工厂、企业到家庭,检测和监测酒精泄漏,控制饮酒驾车对于居民的人身和财产安全都非常重要。1.1.2目的 为保障工厂企业的环境安全和人民群众生命财产的安全,在食品工业、啤酒工业、石化工业、环境监测、交通管理、公共安全、社会公共服务等领域从事国民经济生产和人民生活工作。有必要检测特定环境中酒精气体的浓度。对酒精生产车间和石化装置的酒精浓度进行监测,可预防火灾、爆炸事故的发生;对工矿企业的酒精浓度进行监测,可以防止职工酒精中毒等恶性事故的发生。检测司机的酒精含量可以预防酒后驾驶,减少严重交通事故的发生。因此,对酒精检测仪的研究具有广泛的现实意义和潜在的市场需求,同时也具有重要的意义[2]。因此设计研究一款酒精检测仪十分重要。1.2国内外研究状况和相关领域中已有的成果1.2.1国外研究状况 现在,在欧洲和美国,红外线酒精检测器,血液和尿液检测可以作为基于证据的酒精检测器。燃料电池和半导体酒精检测器只能作筛查使用。美国国家公路交通安全管理局的调查报告指出,由于检测精度高、易受环境温度限制、抗干扰能力差等原因,可吸入空气中产生的其他成分可能会对乙醇的浓度测定产生影响。过去10年里,美国汽车厂商安全联盟(Acts)成立了司机酒精检测系统(DADSS)项目,通用、大众、丰田、宝马、奔驰等汽车生产商许多先进的试制试验技术提案,主要指压检查技术和非接触式气体集中检查技术。 (1) 手指按压检测技术和指纹采集器一样,用手指按下车钥匙(与酒精检测仪一体化)或车内的电子钥匙,就能进行同步检测,让驾驶者在醉酒时无法启动车辆。但是,技术无法持续下去。为了在启动后进行监视,不能随时随地连续监视驾驶者的实际状态[3]。(2) 与汽车整车高度融合的非接触气息探测技术司机的周围设置了多种的检测器(方向盘、座椅枕头、变速排档等),驾驶人员在自然的状态下,使司机呼出空气和分泌的体液,可以进行实时连续的检测,确认司机是否喝酒[4]。1.2.2国内研究状况目前,国内酒精检测仪主要采用电化学法。主要有两种方式:LED显示;数字显示。根据测试情况,相应指示灯亮。另外一种为数字显示酒精测试仪,检测的结果将会以数字直接呈现。由于价格和易用性等因素,目前各地公安机关购买的循证酒精检测设备主要是血液酒精检测设备。酒精检测仪作为现场执法的警察设备,主要用于检测呼出气体中的酒精含量。传感器基于检测原理,可分为电池类型(即电化学型)、半导体型、红外线型等[5]。然而,燃料电池酒精传感器由于结构精确、制造要求高和材料成本高,比半导体酒精传感器更昂贵。1.2.3相关领域中已有的研究成果 检测气体中酒精含量的设备有五种基本类型,即:燃料电池型(电化学)半导体型红外型气相色谱型和比色型但是,由于价格和便捷性的原因使得在目前只常用燃料电池型(电化学型)和半导体型。燃料电池酒精传感器采用贵金属铂作为电极,在燃烧室内填充特殊催化剂,使进入燃烧室的酒精充分燃烧并转化为电能,即在两个电极上产生电压,而电能消耗在外载上,它与进入燃烧室的气体的酒精浓度成正比。1.3本课题的意义从目前酒精浓度检测技术的发展现状来看,非接触式正成为研究的热点[6]。但其检测精度和检测鲁棒性一直没有有效解决,导致其无法广泛应用[7]。在生产生活过程中,酒精检测也显得十分重要的应用,在一些工厂车间或者运输等密闭环境下可以随时监测当前环境下的酒精浓度,以防止发生安全事故。因此,酒精测试仪在生产生活中都有着非常重要的作用,同时也具有着相当大的前景和意义。在检测结果上,基于单片机的酒精测试仪得到的结果要比传统的机械检测仪器精度更高,灵敏度也优于传统仪器。还有着可靠性好,准确方便,扩展简单,控制功能强大的优点。1.4研究方法酒精测试仪的设计分为硬件和软件两个部分,硬件采用系统所需模块,软件采用C语言完成。选用STM32系列芯片作为控制核心,通过酒精浓度传感器检测当前环境下空气中的酒精浓度,显示到OLED液晶显示屏幕上。本设计具有自动警示以及自动换气功能,用户使用时可选择相应的模式,键入设置阈值,超过阈值后测试仪自动做出相应的操作,如声光报警和换气措施。主要设计步骤以下几点:(1)总体设计:构建系统软件框架,搭建开发环境。(2)硬件设计:选择系统合适的传感器、主控芯片、模块等,设计电路图,完成电路设计。(3)软件设计:根据系统需求分析,进行开发并实现各个功能模块。(4)利用Protel绘制电路原理图。(5)使用Proteus仿真软件对设计进行仿真,模拟实现酒精测试仪的功能。(6)总体测试:在对软件和硬件的各个部分完成后,进行连接电路调试,实现酒精浓度测试仪的全部功能。1.5理论依据和具体条件1.5.1理论依据酒精测试仪主要由酒精检测电路、酒精浓度显示电路、独立键盘、继电器换气电路和电源电路组成。酒精浓度的检测前端是通过传感器实现的,经过处理将非电量转换为电量,输出电压在0V-5V之间,后端将传感器输出的电压信号经过模数转换装置转换后,单片机再对由传感器输出数据进行处理,并且显示出来[8]。酒精浓度的具体转换过程是由酒精检测电路将检测到的酒精浓度信号转换为模拟电压信号传入到芯片内置AD模数转换器,经由AD模块转化为数字量,再将得到的数字信息存储到寄存器中,供主控芯片进行数据处理,处理后的数据就得到了环境下的酒精浓度数值,再由主控模块将数据传输给OLED12864液晶显示器显示数据。由主控模块根据酒精浓度的不同、按键键入的模式和所设定的阈值来控制其他模块如:声光报警模块、换气模块。1.5.2具备的条件硬件条件:购买STM32F103C8T6最小系统版、独立按键、MQ-3气敏传感器、0.96寸OLED12864液晶屏幕、电机、蜂鸣器、继电器、杜邦线若干、串口线。1.6论文构成及主要研究内容1.6.1论文构成本文分为六个章节,对基于单片机的酒精测试仪的设计实现的操作过程的要点进行了阐述。(1)绪论说明了设计的背景和目的,研究国内外的技术发展状况,并简要介绍了研究的内容和方向以及论文的结构。(2)系统总体设计系统结构的总体设计。给出了系统结构化的设计图并详细介绍了系统的结构工作原理以及系统的硬件和软件思路。(3)硬件系统的设计与实现根据课题的硬件要求确定设计思路,从而进行设计与实现完成各个模块的软组件和相关硬件的电路。(4)软件系统的设计与实现根据课题的要求,软件设计思路,设计每个功能模块的流程图,并设计分析时序流程图,完成各个模块和整个仪器系统的程序设计。仿真与测试使用Proteus仿真软件对酒精测试仪进行仿真测试。对硬件实物进行测试,验证实物是否达到预期要求,是否实现各模块的相关功能等。(6)结论总结酒精测试仪的整体设计完成的情况,反思设计工作的不足之处,并且说明了对未来的设计及进行展望。1.6.2主要研究内容 酒精浓度测试仪采用STM32F103芯片来控制工作,使用C语言进行开发编程,设计并实现基于单片机的酒精测试仪。仪器将具备的功能由酒精浓度检测、液晶显示、按键控制、声光报警、排气换气等功能;实现测量酒精浓度测量范围为0.01mg/L~10mg/L,测量误差小于±0.001mg/L;设置按键控制测量阈值;设计模块连接接口,方便用户更减模块;电路连接简单正确。1.7本章小结 本章主要对本课题所研究物品的意义、作用、目的、国内外研究现状和现有的仪器及技术进行调查并分析,对本设计具体研究内容和模块进行说明。系统总体设计2.1系统结构设计仪器的设计思路为:明确功能,根据功能的实现方法分为不同的模块,在对各模块进行硬件电路设计和底层驱动的编写。在硬件电路设计和驱动的编写基础上,将仪器分为六个模块:单片机主控模块液晶显示模块独立按键模块酒精检测模块声光报警模块换气模系统结构设计图如图2-1所示。图2-1系统结构设计图2.2硬件设计思路系统各模块的实现方式如下:(1)单片机主控模块:选择STM32F103C8T6最小系统板来实现对酒精测试仪的总体控制。(2)独立按键模块:在用户使用时需要进行模式选择和阈值设定的操作,所以需要独立按键进行输入参数。(3)酒精检测模块:在气体采集的要求上需要传感器对酒精敏感而对其他气体敏感[9]。为了确保测量结果的准确性,综合选用MQ-3气敏传感器进行当前环境下空气中酒精浓度的检测和测量。(4)声光报警模块:根据酒精传感器检测出来的酒精浓度值,以用户所设定的阈值为准,与检测到的浓度值进行比较,为了结果准确性,需要排除气体浓度测量的误差值[10],若测定超出规定浓度值,系统控制蜂鸣器长鸣,并且LED灯光闪烁达到警示效果。选用MH-FMD无源蜂鸣器,LED发光二极管。液晶显示模块:因需要实时显示酒精浓度和汉字较多,考虑到用户的使用体验,故选用0.96寸OLED12864液晶显示屏幕作为液晶显示模块的硬件设备。换气模块:选用JQC-3FF-S-Z继电器进行控制风扇的转动,来达到换气改变当前环境的酒精浓度的作用。2.3软件设计思路该仪器设计软件层面主要使用Keil5软件进行C语言的编写工作。软件设计参照任务书的功能要求,实物电路,硬件设计,系统结构设计和软件设计思路根据功能模块的顺序进行相应的代码编写。软件设计包括6个主要模块:主程序模块、液晶显示模块、独立按键模块、酒精检测模块、声光报警模块、换气模块。2.4系统工作原理系统初始化完成后,由单片机主控芯片对用户选择的按键进行判别选择何种模式启动。当按下按键1后,系统进入模式一,无风扇模式,该模式下用户需要进行按键输入调整阈值,按下确认按键后进入检测界面。此时由MQ-3气敏传感器检测到酒精浓度通过AOUT口输入到STM32F103C8T6最小系统板中,因本设计选择模拟量输出,所以需要将数据通过ADC模数转换将测得的模拟电压值转换为浓度值。再将结果实时输出到OLED液晶显示屏上[11]。主控模块判断测得当前环境下酒精浓度值超过阈值时,对LED灯和蜂鸣器进行控制,此时声光报警模块开始工作,LED灯闪烁,蜂鸣器长鸣达到警示效果。当按下按键2后,系统进入模式二,有风扇模式,该模式与模式一的不同之处在于多增加了换气模块。超过阈值后不仅会进行声光报警还会启用换气模块进行换气处理从而达到降低环境下酒精浓度的作用。2.5本章小结本章介绍了酒精测试仪的设计实现的思路和方法,设计了总体流程,并将整个仪器进行模块化,进一步分析各模块所需要完成与实现的功能,确定了模块实现所采用的具体元器件。硬件系统的设计与实现3.1硬件设计总体设计酒精测试仪开机后,OLED12864液晶显示屏显示有两种模式可供选择。用户可以根据测试仪所使用的环境键入选择不同的模式,使用测试仪的不同功能,选择完功能后进入阈值设定界面。键入设定阈值,按下确定按键后测试仪进入到酒精浓度检测界面,液晶屏将会实时显示环境下的酒精浓度。声光报警模块和换气模块根据环境下的酒精浓度具体数值情况进行工作。系统硬件总体设计图如图3-1所示。图3-1系统硬件总体设计图本设计采用STM32F103C8T6最小系统核心板作为测试仪的控制核心对系统进行总体的控制,对独立按键进行扫描输入数据的采集;采用MQ-3气敏传感器对环境下酒精浓度进行检测,并通过最小系统版中带有的AD模数转换模块进行数据的处理[12]。将处理好的数据实时通过OLED12864液晶显示屏幕显示出来;声光报警模块通过LED灯和无源蜂鸣器,在接收到主控模块的控制下完成声光报警[13];换气模块采用继电器在收到主控模块的控制下控制风扇转动达到改善环境下的酒精浓度的功能。3.2单片机最小系统介绍3.2.1单片机芯片介绍本系统选用STM32F103C8T最小系统核心板,具体硬件实物如图3-2所示。该核心板属于加强型的32位微处理控制器。核心板内部集成了最小系统,提供多个可接入外设模块的IO口,具备问多种外围设备的功能,并且支持多种通信接口协议[14]。从而一定程度地减少了外部硬件电路的设计难度。图3-2STM32F103C8T6核心板实物图3.2.2主控模块芯片介绍STM32F103C8T6最小系统板内部的主控制芯片使用的是由意法半导体(ST)集团公司开发的STM32F103C8T6芯片,具体芯片实物如图3-3所示。该芯片以Cortex-M3为内核,芯片内集成了60KB的FLASH和20KB的SRAM,最大工作频率可以达到72MHz,调试方式为SWD[15]。芯片原理图如图3-4所示。该主控制芯片不仅价格低廉,而且可实现丰富多样的功能,具有损耗低、体积小、集成度高、稳定可靠、编程简单的特点。因此,该核心板可以广泛地应用于嵌入式智能设备,完全满足本设计的系统功能需求。图3-3STM32F103C8T6主控芯片实物图图3-4STM32F103C8T6主控芯片原理图3.2.3最小系统结构STM32F103C8T6最小系统板的电路是维持最小系统能够正常工作的前提。最小系统板的电路包含晶振电路、电源电路、复位电路、稳压电路、去耦电路、下载电路。(1)本仪器的设计所采用的电源电路如图3-5所示。稳压电路如图3-6所示。图3-5电源电路图图3-5稳压电路图(2)晶振电路晶振电路的作用是为了给芯片提供时钟信号,通过晶振产生的频率生成时钟脉冲信号。晶振电路主要由晶振和电容组成,原理图如图3-6所示。图3-6晶振电路图STM32F103XX系列微控制器支持三种不同的时钟(SYSCLK),分别是:HSI振荡时钟、HSE振荡时钟、PLL时钟,具有两种二级时钟源:内部振荡器和外部晶振,任何一个时钟源都可以独立使用并工作,时钟电路的作用是控制单片机运行的指令传输节奏[16]。(3)复位电路STM32有三种复位方式:电源复位、系统复位和后备域复位。电源复位时,当NRST引脚被拉低,产生外部复位,并产生复位脉冲,从而使系统复位。复位电路如图3-7所示。图3-7复位电路图(4)去耦电路去耦电路的作用是为了滤除杂波,从而保持引脚电压的稳定,让系统能够正常工作。如图3-8所示。图3-8去耦电路图(5)下载电路在下载时,STM32可以使用串口下载、JLINK下载和MDK下载三种下载方式。选择不同的下载模式需要不同的BOOT选择。BOOT电路和下载电路如图3-9和3-10所示。仪器的设计采用串口下载的方式,使用STM32芯片中自带的Bootloader实现串口下载,无需购买JLINK下载器。在下载程序时需要将BOOT1的键帽由2、4引脚改变到4、6引脚,待下载完成后再改回原来的连接。图3-9BOOT电路图图3-10下载电路图3.3按键模块电路设计按键的作用主要是用户进行模式的选择,与检测前的阈值设置,作为提供参数给主控芯片的作用。3.3.1独立按键介绍在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入时与软件结构密切相关的过程。单片机控制系统中,如果只需要几个功能键,此时,可采用独立式按键结构。独立按键式直接用I/O口线构成的单个按键电路,其特点式每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态[17]。独立按键的典型应用如图所示。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口线。本设计所采用的独立按键电路原理图如图3-11所示。3.3.2按键模块电路设计 设计中按键的作用是输入参数给主控模块,主控模块根据按键的参数做数据处理再做出控制其他模块工作的相应操作。在测试仪选择模式时,按键K1对应模式一,按键K2对应模式二;在测试仪进行阈值设定时,按下按键K1阈值增加1mg/L,按下按键K2阈值减小0.01mg/L,通过两个按键差值,在测试仪精度要求范围内能够达到遍历量程中每个值,选择好阈值后按下K3按键确定按键,进入到酒精浓度测量界面。该过程都会在OLED12864液晶显示器上显示出对应的操作结果。按键模块电路如图3-11所示。图3-11独立按键电路图3.4MQ-3酒精检测模块电路设计3.4.1酒精检测模块介绍 本系统采用酒精浓度采集模块为MQ-3气体传感器,其使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在酒精蒸汽时,传感器的电导率随空气中酒精蒸汽浓度的增加而增大[18]。当传感器所处环境中存在酒精蒸汽时,传感器的电导率随空气中酒精气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号[19]。MQ-3气体传感器对酒精的灵敏度高,可以抵抗汽油、烟雾、水蒸气的干扰。这种传感器可检测多种浓度酒精气氛,是一款适合多种应用的低成本传感器。其实物图如图3-12所示。图3-12MQ-3实物图MQ-3型气敏传感器由陶瓷管和二氧化硅敏感层、测量电极和加热器构成的敏感元件固定在塑料或者不锈钢腔体内,加热器为气敏元件的工作提供了必要的工作条件[20]。在工作时,气敏传感器的加热电压选取交流或直流5v均可。当其被受热后,加温室环境中的可燃气体浓度迅速增大,传感器的内阻阻值将会迅速降低,利用该特性并结合电路分析中的分压原理,分析便得知Vout的值将逐渐增大,当超过预设定的阈值时,可产生相应的操作。MQ-3的结构图如图3-13所示。图3-12MQ-3酒精传感器结构图3.4.2STM32内置模数转换器介绍STM32F103X系列芯片上内嵌的模数转换器为12位,是一种逐次逼近型模拟数字转换器。该模数转换器拥有18个通道,包括16个外部和2个内部通道,可以测量不同信号源,每个通道都可以单独执行工作,在扫描模式下自动进行在选定的一组模拟输入信号上的转换,转换结果以设定好的方式存储在寄存器当中,并且可以通过直接存储器进行访问。本设计利用模数转换器的一个通道进行采样,最后利用采样数值计算得出所测酒精浓度值。3.4.2酒精检测模块电路设计 MQ-3原理图如图3-13所示。图3-13MQ-3酒精传感器电路原理图经过传感器后所输出的电压为模拟信号,要想获取到具体数值就需要用到ADC转换,即将模拟信号转换为数字信号。设计所选取的主控模块STM32F103C8T6最小系统板自带ADC功能,应用方便,不需要自行添加AD芯片。MQ-3传感器上自带LED,用来表示是否检测到酒精气体。当检测到有酒精气体时,输出低电平LED点亮,当空气中酒精气体浓度降低,LED熄灭输出高电平。MQ-3传感器引脚功能如表3-4所示。表3-4MQ-3引脚功能表pin名称注释1VCC供电5V2DOUT输出TTL电平3AOUT输出模拟信号4GND接地,电源负极在本设计中选用MQ-3模块的AOUT的输出,作为判断当前环境是否具有酒精气体的依据。根据MQ-3的电路原理图可知,在本模块的设计中需要将4号脚的输出电压接入STM32F103C8T6最小系统中的内部AD芯片,通过ADC转换得到数据。通过ADC1的通道采集外部电压的具体数值,将采集到的数值进行转换后显示到OELD12864液晶显示模块上。对ADC配置允许端口和ADC时钟,将0引脚配置为模拟输入方式,之后设置ADC的分频因子,对ADC参数进行初始化等。然后使能ADC并校正,最后读取ADC转换值。3.5液晶显示模块3.5.1液晶显示模块介绍 本系统采用的酒精浓度实时显示模块为0.96寸12864OLED显示屏,具体实物如图3-14所示。该显示屏具备厚度薄、体积小、辨识度高、价格低廉和反应迅速等较为良好的优势性。与传统的LCD点阵液晶屏对比,OLED屏因具备自发光的特性而不需要背光,同时可支持黄白蓝三种颜色,这使得同样的显示OLED具有更为良好的界面直观性,分辨程度也更可观。该模块可大大提高用户与系统的交互性,同时也符合本系统对外部显示设备的需求。图3-14液晶显示模块实物图3.5.2液晶显示模块电路设计目前我们经常使用的OLED屏幕一般有两种接口,IIC或者SPI,本设计将采用四针IIC协议的OLED12864液晶显示屏幕,将OLED12864的第一个脚接地,第二脚接5V电源;第三第四两脚分别接STM32F103C8T6最小系统的PB6、PB7管脚,这两个管脚为STM32F103C8T6芯片的IIC接口。其中SCL为时钟信号引脚,SDA为数据引脚。通过编写相关驱动,使OLED12864能实时显示测量的酒精浓度、选择的模式、阈值设定等信息。其电路图如图3-15所示。图3-15液晶显示模块电路图3.6换气模块电路设计3.6.1换气模块介绍 继电器(英文名称:Relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。实物图如图3-16所示。图3-16继电器实物图3.6.2换气模块的电路设计 继电器受控于主控模块,当环境下酒精浓度超过阈值时,主控模块给继电器一个高电平是继电器工作,进而继电器驱使风扇转动,达到换气目的。继电器三个引脚分别为VCC、GND、IN。其中VCC和GND分别接最小系统板3.3V电源和GND接地管脚,IN引脚接PA2管脚,由主控模块进行数据处理即对被检测环境下的酒精浓度值与用户设定的阈值比较,若大于所设置的阈值,主控模块发出控制信号给继电器,在接收到高电平时触发继电器从而使其工作,带动风扇转动。其电路原理图如图3-17所示。图3-17继电器电路原理图3.7声光报警模块电路设计3.7.1声光报警模块介绍 声光报警模块在检测仪中的功能是提醒用户,起到警告作用。当环境中,酒精浓度已经超过设置的阈值时,该模块及进行工作,通过蜂鸣器发出声响并且闪烁LED灯,提醒用户环境内酒精浓度已经超过阈值。在本设计中,声光报警模块所使用的是无源蜂鸣器和LED灯。该蜂鸣器属于压电式蜂鸣器,要启动该蜂鸣器需要给蜂鸣器提供一个高电平信号。蜂鸣器实物图如图3-18所示。图3-20蜂鸣器实物图3.7.2声光报警模块电路设计 蜂鸣器和LED电路原理图如图3-19,图3-20。图3-19蜂鸣器原理图图3-20LED原理图3.8本章小结 本章主要介绍STM32单片机的最小系统,然后分析整个系统,并详细介绍每个模块电路的设计与实现。

软件系统的设计与实现4.1软件开发环境介绍 本设计的程序编写选择STM32开发常用的KeilμVision5软件。该软件开发语言为C语言,软件提供了丰富的库函数和功能强大的集成开发调试工具。代码编写主要用于对控制器各模块的指令控制。保证模块功能的实现。开发环境如图4-1所示。图4-1软件开发环境4.2总体程序设计流程 仪器上电后,系统首先对各模块进行初始化操作(如酒精检测模块、独立按键模块、声光报警模块等),初始化完成后,进行按键选择模式启动。选择完模式后,按键输入设置阈值,设置完成后按下确定按键进入酒精检测界面。MQ-3气敏传感器将模拟量电压数据输入到最小系统AD模数转换模块中,使用ADC模数转换将电信号转为数字量经主控模块进行数据处理后,由主控模块输出给OLED12864液晶显示屏实时显示当前环境下酒精浓度。当检测到环境下酒精浓度超过设定的阈值时,主控芯片控制声光报警模块或换气模块进行工作。总体程序流程图如图4-2所示:图4-2总体程序流程图 在各个模块程序中实现对输入的酒精浓度信号转换的电压信号的数字量转换,信息显示等过程。仪器在开机时,STM32芯片使用Init函数初始化相关的模块和引脚。然后等待数据的输入,再根据输入的参数进行处理后输出相关的具体数据,达到对酒精浓度的检测和声光报警或风扇换气处理。分别调用模数转换、OLED、按键、LED灯、蜂鸣器、继电器等模块器件,实现总体功能。具体时序图如图4-3所示。图4-3总体程序流程时序图4.3按键模块程序测试仪的三个独立按键分别的功能为:按键K1:模式选择时按下选择模式一;阈值设定时按下为报警阈值增加调整按键。按键K2:模式选择时按下选择模式二;阈值设定时按下为报警阈值减小调整按键。按键K3:报警阈值设定后的确认按键。键接的VCC就将相应IO口设置成下拉输入模式,接地就上拉输入模式(没按下的时候就要默认高电平),按键模块流程图如图4-4所示:图4-4按键模块流程图 独立按键模块的程序首先需要使用KEY_Init()函数对其进行初始化,后再通过Key_Scan()函数对三个独立按键进行按键扫描,检测那个按键按下。函数Key_Action()得到值进行执行相应的模式切换和报警阈值的加减操作。独立按键模块时序图如图4-5所示。图4-5按键模块时序图4.4酒精检测模块程序 上电后开始初始化,等待主控模块接收模拟电信号,待做完模式选择和阈值设定后进入到检测环节时,MQ-3通过AOUT口向主控模块输入模拟电信号,主控新模块将信号传入STM32F103C8T6芯片ADC模数转换模块。通过ADC模数转换得到酒精浓度数据。酒精检测模块设计的流程图如图4-6所示。图4-6酒精检测模块流程图 酒精检测模块首先配置ADC模数转换器,使用ADC1_GPIO_Init()函数将PA0管脚作为输入引脚,进行引脚的初始化。再调用ADC1_Init()函数对ADC1进行初始化的配置,通过对ADC_Mode的配置将ADC1配置为独立工作模式;配置ADC_ScanConvMode为单通道模式;将ADC_ContinuousConvMode设置为单次转换;把ADC_ExternalTrigConv触发方式设置为软件触发;右对齐。设置参数ADC_SampleTime_239Cycles5采样时间为239.5周期。 ADC_GetDate()函数将转换次的数据累加得到均值存到ad_value[2]数组中,再经由MQ_Scan()函数对数组中的数据通过转换公式计算后的到真实的酒精浓度数值value。酒精检测模块时序图如图4-7所示。图4-7酒精检测模块时序图4.5液晶显示模块程序 首先初始化OLED,IIC接口采用SCL作为时钟管脚,SDA作为数据管脚。单片机上一般有对应的两个管脚,可用于硬件IIC通讯。但是我们一般采用软件模拟IIC通讯,好处是代码移植性更高,而且,可以采用任意两个IO口进行通讯,不需要特定的接口。显示模块的流程图如图4-8所示:图4-8液晶显示模块流程图OLED显示模块时序如图4-9所示,使用OLED_Init()和IIC_Configuration()函数进行初始化操作。初始化完成后,通过OLED_ShowStr()调用IIC接口函数进行数据读写,完成数据的显示。图4-9液晶显示模块时序图4.6换气模块程序 上电后继电器进行端口初始化。等待主控模块发出的指令,当检测到当前环境下的酒精浓度大于阈值时,主控模块会给继电器一个高电平触发继电器,继电器上触发后上电给风扇驱使风扇转动。具体流程图如图4-10所示。图4-10换气模块流程图 首先对继电器进行初始化引脚,使用RELAY_Init()函数。打开继电器需要给继电器IN引脚一个高电平,关闭给低电平。其时序图如图4-11所示。图4-11换气模块时序图4.7声光报警模块程序 初始化蜂鸣器和LED的引脚。当主控模块判断当前环境下的酒精浓度超过设定的阈值时,会同时给蜂鸣器和LED的引脚电信号,使其同时工作。达到声光报警的目的。模块具体流程图如图4-12所示。图4-12声光报警模块流程图 进入主函数,通过TIM3时钟初始化TIM3_Init,TIM3_Init(1000,72)配置TIMER3定时1ms。声光报警模块时序图如图4-13所示。图4-13声光报警模块时序图4.8本章小结本章对软件开发环境进行了介绍,对软件的设计流程和步骤进行了阐述。 5仿真与测试5.1仿真5.1.1Proteus介绍 Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件,深受单片机爱好者、从事单片机教学的教师和致力于单片机开发应用的科技工作者的青睐。使用Proteus可以实现电路原理图布图、程序调试和单片机与外围电路的协同仿真,是目前世界上唯一能将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。它支持各种类型的单片机、Cortex和DSP系列处理器,支持IAR、Keil和MPLAB等多种编译器[21]。5.1.2软硬件联合仿真 本设计选择Proteus8.9版本作为仿真的平台,依据硬件电路图和原理图在Proteus中选择相应的器件连接,使用Keil软件编写C语言程序,将生成的*.HEX文件装入仿真电路中,查看仿真结果[22]。 总体仿真图如图5-1所示。图5-1总体仿真图 由于Proteus仿真软件中部分器件没有,所以对部分电路以及元器件的调整:(1)在Proteus仿真软件固件库中,酒精传感器MQ-3没有,所以在这里选择滑动变阻器进行对酒精传感器进行模拟。对滑动变阻器进行调节以此来改变输入的电压大小,达到模拟酒精传感器在酒精浓度检测时输出不同电压的效果。输入模拟仿真如图5-2所示。图5-2酒精检测模块模拟仿真图 (2)删除部分电路。在Proteus仿真中,电源电路相关的电路不再需要,例如稳压电路,复位电路等,所以需要去除。在仿真时,开始仿真即表示芯片上电。 (3)由于在Proteus8.9版本中没有STM32F103C8T6的固件型号,所以将主控模块的控制芯片由STM32F103C8更改为STM32F103C6。 通过使用Proteus仿真软件对仪器所设计的模块进行仿真测试,验证仪器的功能模块设计是否合理。酒精测试仪的仿真测试内容为:酒精浓度显示模块是否正常;按键的模式切换和阈值调整是否正常,经仿真测试,本次设计的酒精测试仪的所有功能均以实现,仿真结果如图5-3所示。图5-3仿真测试结果图Proteus仿真测试结果中,显示当前环境下酒精浓度值、仪器当前所处的模式、仪器所设置的报警阈值。5.2系统测试 在各个模块的驱动都编写完成,经仿真测试后。连接硬件,下载驱动程序。经检测基于单片机的酒精测试仪实现了预期的功能和作用。在此次测试中,主要测试了以下功能:酒精浓度的检测是否灵敏;超过阈值时各个模块是否工作正常;经检测,本次设计软件设计要求的所有功能全部实现。5.3实物界面显示 仪器开机后上电后进入模式选择界面,按下K1按键进入模式一,无换气功能模式。按下K2按键进入模式二,有换气功能模式。如图5-1为仪器开机选择模式界面。图5-1仪器模式选择界面模式选择完成后进入到阈值设定界面,按下K1按键将报警阈值增加1mg/L的值,按下K2按键将报警阈值减小0.01mg/L。选择好设定的阈值,需要按下K3确认按键,进入到酒精检测界面。图5-2为按键设定阈值界面,图5-3为酒精检测界面。图5-2仪器阈值设定界面图5-3仪器酒精检测界面5.4本章小结 本章主要测试了仪器的基本功能和其所使用的技术要求,并且对声光报警,酒精检测,独立按键,换气模块和显示模块进行了对应的测试,仪器所必要的控制功能均以实现,并且达到课题要求的量程和精度。6结论6.1设计总结 本文主要设计了一个采用STM32F103C8T6最小系统为核心的以MQ-3气敏传感器、OLED12864液晶显示屏、继电器风扇,蜂鸣器、LED灯以及独立按键等元器件所组合设计的酒精测试仪。本仪器利用主控芯片强大的控制端口外接相关模块,连接芯片完成了对环境下酒精浓度的检测功能,并且能够实时显示,具有简便的阈值设定,模式选择,声光报警等功能,通过相关设计,使测试仪在精度上达到了最初设定的要求。 总结如下:(1)针对任务书需求,选择STM32F103系列芯片作为主控芯片,采用STM32F103C8T6最小系统作为仪器的控制模块,在强大的主控模块的控制下实现仪器的各项功能。(2)详细介绍了MQ-3、OLED12864等元器件的功能与优点,通过合理的电路设计,实现了数据采集、模数转换、数据显示、自动控制等功能。(3)当所测酒精浓度值超过用户设定的阈值时,蜂鸣器与LED指示灯将进行声光报警并且进行换气。 为了更好的实现测试仪的相关功能,在设计之初我选择了让测试仪拥有两个不同功能的模式,在经过自己所搭建的硬件以及软件设计框架下,最终按照预期的功能实现了本次测试仪的所有功能。也满足了最初框架系统的设计要求。6.2未来展望 由于仪器的设计周期太短,和系统自身功能的限制,尽管整个仪器已经按照最初的设计要求和思路,基本完成。但在某些功能的实现上,还有可以改进的空间。(1)增加语音播报、时间显示等功能。(2)优化布局设计,使用户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论