一种基于ARM的新型车内酒精监测仪∗
2021-04-04赵云敏
李 荟 赵云敏
(1.东北石油大学计算机与信息技术学院 大庆 163318)
(2.大庆油田第一采油厂 大庆 163318)
1 引言
为了减少酒驾现象的出现,目前几乎所有国家都采用呼气酒精监测仪对驾驶人员进行现场检测监控[1],但是现场检测监控仪只能被动的工作,起不到预防的作用,而目前的车内酒精监测仪价格昂贵、安装程序复杂。针对这些缺陷,我们设计了一款基于ARM的酒精监测仪,它是基于S3C2410(Samsung公司推出的16/32位RISC处理器)与MQ-3型气敏传感器模块的呼气式酒精浓度监测仪。硬件部分的处理器采用较为先进的ARM处理器,这样可以很大程度地增加系统处理速度,并且提升系统的准确度,同时我们采取了相应查验方法来实现对密闭环境中酒精浓度的检测。其中比较核心的硬件模块有MQ-3气体传感器电路设计、LCD电路设计、蜂鸣器电路设计。本系统主要实现车内环境检测,特别是车内酒精浓度检测,这部分是通过MQ-3气体传感器来完成。MQ-3气体传感器可以较好地检测空气浓度,当发现浓度超过设定的阈值时则会立刻提示并且报警,还会在LCD上给出相应的告知信息,并且通过触摸屏控制实验的开始与结束。
2 系统基本架构
基于ARM酒精监测仪系统主要由嵌入式微处理器、气体传感器模块、液晶显示模块、蜂鸣器报警模块及其他外围相关电路组成。本设计采用的硬件开发平台是深圳优龙科技有限公司开发的FS2410实验板。
首先采集到模拟信号,气体传感器模块会把他送至A/D转换器,在这里变为数字信号,然后将数字信号交给处理器部分;处理器的信息会在LCD液晶显示屏展现;而报警部分的任务就是实现当出现阈值之外的情况进行报警。微处理器是要控制这个车内酒精检测系统的核心部分,在整个系统中起了决定性作用。系统的硬件框架如图1所示。
图1 系统硬件结构框图
酒精监测仪融合了嵌入式、传感器、A/D转换和LCD液晶汉字显示技术,可实时获取空气中酒精浓度。根据酒精浓度的不同,系统设定不同级别的阈值,分为不同情况报警。
本系统主要研究内容包括MQ-3气敏传感器数据采集,不同的酒精浓度对传感器的阻值影响不同,通过MQ-3传感器电路测量空气中酒精浓度;AD模数转换,酒精传感器电路数据采集的模拟电压结果经过A/D模数转换成为数量值;LCD屏幕显示,设计汉字字库,使用LCD液晶显示相关汉字及字符,并且在监测状态下实时显示酒精浓度相关信息;酒精含量超过阈值自动报警,酒精浓度超标时,酒精监测仪自动利用蜂鸣器报警,并根据酒精超标的程度不同,分别设定一级报警和二级报警。
3 系统硬件设计
3.1 MQ-3气体传感器
MQ-3上使用的是金属氧化物SnO2构造的N型半导体元件。这种部件的精确元件采用的是金属氧化物的半导体微结晶粒子烧结体。当这种粒子的表面上有被检测的物品时,该粒子接触表面的电阻比会调整,从而使该部件电阻比改变,或增或减。此时发生的变化是可以反复实现的,所以是可重复使用的[2~5]。部件阻值的改变是跟着金属氧化物面上对物品的吸收和排除而导致的。我们一般可以使用加热器对气敏部件提高温度来提高这种反应速率。在半导体气敏器件的温度达到某种恒定的状况时,表面吸附的物体会在表面传播,有一些分子在这个过程会消失,其他的部分由于热分解作用会停留在表面。所以当吸附分子的电子亲和力大于部件的功函数,那么吸附分子将从部件获得离子,这时会产生负离子吸附的情况。电子接收性气体也叫氧化性气体,就是带着负离子吸附趋势的气体像O2、NOx等。当吸附分子的离开能力小于部件的功函数,那么吸附分子会朝部件发射电子从而形成正离子吸附。我们把这种现象叫做电子供给性气体或还原性气体,像H2、CO、乙醇等。如果N型半导体表面附着了氧化性气体,此时载流子会降低,从而敏感部件的阻值变大了。相反,如果N型半导体表面附着了还原性气体,载流子会变得数量增多,从而电阻阻值会降低很多。考虑到我们含氧量在空气中一般时一定的,所以吸氧量不变,而阻值所以应该也是恒定的。可是当环境改化时,阻值也会变化。我们可以按照分析,根据阻值的改变情况了解吸附气体的一些情况。
MQ-3气体传感器可以根据气敏元件的制造工艺把他归类伟烧结型。主要是把测量电极、三氧化二铝粘结剂和加热丝融在SnO2部件里,通过700~900的温度进行制陶加压工艺。我们还加了很小的贵重金属,目的是使其成为激活剂。底座的引出线处加了测量电极和加热器,就做为了传感器部分。所以此传感器的硬件部分是有封装体、加热器、气敏元件等构成。其中气敏元件的组织及传感器的封装型式如图2所示。气敏元件四个管脚实现信号取出有,两个管脚实现提供加热电流,总共其共有六只针状管脚。
图2 MQ-3气体传感器
包含此敏感元件的传感器可以对很多气体进行检测,例如一氧化碳、酒精等,它的敏感程度会跟随环境而变化。如在检验酒精时,会随浓度变化影响大,同时灵敏程度也更大。我们在SnO2中放入的贵重金属可以改变其性能。此传感器比较容易受到湿度和温度的干预,所以采取此传感器还必须反馈操作。加热器还可以将器件表面的尘埃、油污去除,提高气体的吸附速率从而提升灵敏度和速率。我们把加热器设定在200℃~400℃之间。把该传感器放于车内检测驾驶员酒精浓度多少,从而判断该驾驶员是否喝酒,如果喝酒则不应开车。
3.2 A/D转换器
MQ-3整合到的信号非电量,所以需要转换成电量,我们采取A/D转换器。S3C2410片内集成了一个8通道模拟输入的10位CMOS模数转换器(ADC)[6]。该片把输入的模拟信号转换成10位的二进制数字代码。当A/D转换器时钟为2.5MHz时,最大转化速率能够接近500KSPS。
按照工作模式可以将A/D转化器的分为分离的X/Y轴坐标转换模式、普通转换模式、自动、连续X/Y轴坐标转换模式、等待中断模式、静态(Stand⁃by)模式。本部分不涉及触摸屏,只用到普通转换模式和静态(Standby)模式。
普通转换模式(XY_PST=0,AUTO_PST=0)可以完成一般目的下的ADC转换。可以设置ADCTSC和ADCCON对AD转换完成初始化;然后读ADCDAT0(ADC数据寄存器0)的XPDATA域(普通ADC转换)的值来实现转换的过程。
我们把位于STDBM位的ADCCON寄存器设定成1时,会激活静态(Standby)模式。此时,结束A/D转换操作,ADCDAT1寄存器的YPDATA(正常ADC)和ADCDAT0寄存器的XPDATA域的值不会改变。
接下来把传感器采集到的酒精浓度信息通过A/D转换器,将其变为数字信息进行操作。微处理器和MQ-3气体传感器的接口电路如图3所示。
图3 MQ-3与微处理器接口电路图
3.3 触摸屏和LCD接口电路设计
触摸屏可以分类为电容、红外线扫描、电阻、表面声波以及矢量压力传感器等,而最为人们广外接受的是四线或五线电阻触摸屏[7~8],四线电阻触摸屏的主要部件是两个透明电阻膜,通过垂直和水平电阻网进行检测电压,经过计算确定坐标。
触摸屏与ADC的工作模式:
1)ADC普通转换模式:普通转换模式是一般的ADC转换时使用的,比如想要用ADC检测电压等。
2)独立X/Y轴坐标转换模式:独立的X/Y轴坐标转换模式分为Y轴模式和X轴模式。首先需要转换X轴坐标,X轴相关信息会写入XPDAT中,如果完成转换由控制器会发出中断。接下来完成转换Y轴坐标,Y轴相关信息会写入YPDAT中,如果完成转换由控制器会发出中断。
3)自动X/Y轴坐标转换模式:自动X/Y轴坐标转换模式的工作是自动地进行X轴和Y轴的转换操作,完成以后发出中断信号。
4)中断等待模式:当触摸屏被触摸,那么开启中断模式。此时产生中断信号。在此期间,Y轴和X轴相关信息都可以从其对应存储的寄存器中获得。
5)闲置模式:此时转换寄存器中的值都被设定成为上一次转换时的相关信息。
我们使用的S3C2410的YL-LCD35-V1.0它是一个四线电阻触摸屏。由于触摸经常发生在触摸屏的B面,所以我们将该面采用ITO材料,该材料是非常轻薄的,所以难免操作时,会出现微微的缝隙,如果有了缝隙,那么原本应该平均分散的电压就不平均分散,也就是表现缝隙处电压不准。当缝隙越来越多,越来越大,触摸屏便会无用,所以年限太短是四线电阻触摸屏的致命缺陷。
针对四线触摸屏的问题,五线电阻进行问题提升:首先五线触摸屏的A面不再采用导电涂覆层,而是使用了导电玻璃,而这样做可以将A面的使用年限增加很多,与此同时透光率也得到了改进。另外,五线触摸屏的B面仅仅是导体作用,选择了镍金透明导电层做导体,因为其延展性较好同时电阻率也较低,所以B面的使用年限也得到了改进。五线触摸屏有一个特别的工艺。在工艺工程过程中极有可能会由于存在不平均而使得电压场分布的不均匀,精密的电阻可能会经过许多的电流,所以需要补偿可能会发生的线性失真问题。五线触摸屏是截至当前表现最为出色的电阻技术触摸屏,非常适用于医疗、军事、航空等方面。同时,YL-LCD35-V1.0用的是TFT LCD液晶显示器的显像原理是采用“背透式”原理。当出现光源时,从下偏光板向上透出光源,传导光线通过液晶分子。YL-LCD35-V1.0与用户系统的连接只是用了一根软排线,如图4所示。连接器用的是市场上非常用已买到的IDC连接器,双排50针(25*2),引脚间距2.00mm。
3.4 蜂鸣器报警接口电路设计
预警提示功能我们用蜂鸣器报警电路来完成,在S3C2410上添加了蜂鸣器,并用I/O口P0.7来管理蜂鸣器。采用8550进行驱动控制来放大TTL电平,而其放大的倍数非常高的特点正好是系统需要的。采用R36电阻来减少三极管的基极电流。蜂鸣器的电路如图5所示。
图4 优龙LCD连接器IDC50-2.00mm信号分配图
图5 蜂鸣器报警电路
4 系统软件设计
系统上电后首先初始化各个硬件模块,控制器主要运行在主程序模块下,MQ-3气体传感器检测模块、液晶显示及蜂鸣器报警以查询方式执行。
主程序部分需要初始化多任务环境,然后第一个任务模块被启动。该模块的工程时对各硬件和目标板进行启动程序。而其他的子模块则要进行数据的处理、显示、存储以及报警等。
根据中华人民共和国《车辆驾驶人员血液、呼气酒精含量阈值与检验》国家标准(GB19522-2004)规定,我们设定引起蜂鸣器报警依据是:
1)如果驾驶员血液中酒精含量小于80mg/100mL大于或等于20mg/100mL那么可以认为是饮酒驾车。也就是MQ-3气敏传感器如果探测出酒精浓度大于20/100mL,蜂鸣器应该要发出警报。
2)如果驾驶员每100mL血液中酒精含量达到或者超过80mg,即可以认为其是醉酒驾车。也就是MQ-3气敏传感器如果探测处酒精浓度大于80mg/100mL,蜂鸣器应该要发出警报。
4.1 酒精浓度检测软件设计
当酒精浓度模块准确运行时,由于探测需要A/D转换模块,我们第一步要先设定ADCR初值,让其设置ADC工作模式、ADC转换时钟和转换通道,同时开始A/D转换。将转换数据存储在ADDR寄存器里面。ADCR部分参数设置如下:转换时钟为1MHz;SEL=1,BURST=0,选择通道0;CLKDIV=Fp⁃clk/1000000-1,软件控制转换操作;CLKS=0,使用11个时钟转换;正常工作模式;TEST1:0=00,正常工作模式;START=1,直接启动ADC转换;EDGE=0,CAP/MAT引脚下降沿触发ADC转换。
VDDA电压不要小于模拟输入引脚的信号,如果不然会得出无用的A/D值。当MQ-3气敏传感器探测出酒精类似的气体出现,经过A/D转换器将酒精浓度进行转换,将其变成电压,而后以中断通知处理器,接着将数据放到ADDR中。随后读取存在ADDR的数据,并把DONE归零为下次操作做准备,将数据经由I/O口传给处理器。依照酒精浓度与电压值的关系方程y=0.0034e1.2789x,可以换算得到对应的酒精浓度,最后将值在LCD上显示输出。
我们依据蜂鸣器的报警标准来设定,通过I/O口的操作实现这个过程。首先分辨酒精浓度所在区域,如果在20mg/100mL~80mg/100mL之间,可以认为饮酒驾车,那么设定鸣笛一次;如果高于80mg/100mL,可以认为醉酒驾车,那么设定鸣笛两次。我们通过两类鸣笛对上述两类情况进行区分,同时对驾驶员进行提醒警示。除了以上的情况就说明驾驶员未饮酒。
4.2 A/D转换模块软件设计
首先通过MQ-3传感器把当前电压的模拟量送到模拟输入通道中,ADC共有AIN0~AIN7 8个模拟输入通道,本系统选用的是其中的AIN2,经过ADC转换之后的二进制数存放在ADCDAT0的低十位中。把转换所得的数字量转换成十进制数赋值给一个定义的变量a2。同时,根据a2的值计算出当前空气酒精浓度,再通过LCD显示当前酒精浓度并且判断是否需要报警。
4.3 LCD显示模块软件设计
本系统的字库自己设计制作,因为YL-LCD35-V1.0是没有汉字字库的附加的。我们以“液晶汉字”距离来解释如何显示汉字。汉字在液晶屏上的显示如图6所示。液晶屏上的显示点这里用图6中的正方形表示,所以黑色的点组合在一起形成了文字。而图6中每一个黑色的正方形可以对应液晶屏上的一个显示点。
图6 “液晶汉字”的字模图
4.4 触摸屏模块软件设计
采用外部晶体管连接触摸屏到S3C2410的接口电路,一般在程序中选择连续的、自动的X/Y轴坐标转换或是分离的X/Y轴坐标转换模式以获取触摸点的X/Y坐标,本系统采用的是后者。设置触摸屏接口为等待中断模式,等待的是INT_TC中断。如果中断(INT_TC)发生,那么立即激活相应的AD转换,在得到触摸点的X/Y轴坐标值后,返回到等待中断模式。
4.5 蜂鸣报警器模块软件设计
FS2410开发板上集成的蜂鸣器首先需要跳线J5控制使能,接上短路帽,使能蜂鸣器,在S3C2410中通过GPIO驱动控制蜂鸣器。GPIO(General Pur⁃pose Input Output)为通用的输入、输出端口。嵌入式系统的外部设备通常数量比较多,可是结构相对不复杂,CPU对这些设备进行操作,有的也被CPU当成输入。微控制器芯片中大多会有通用可编程IO接口,该接口包括两个以上的寄存器,数据寄存器和控制寄存器。有多达117个多功能I/O引脚集成在S3c2410芯片上。所有引脚都可以为系统实现复杂功能。
5 关键技术
传感器因其巨大的应用前景而受到学术界和工业界越来越广泛的重视[9~13]。本系统按照功能需求采用了气体传感器实现探测酒精的浓度值。接下来说明通过传感器实现探测酒精的浓度值的原理。
1)气体传感器的应用及特性
该系统主要采用的是MQ-3气体传感器,原因是他包含许多优点。包括它的敏感度很高,响应时间较短,寿命较长,稳定性较高等。
MQ-3气体传感器目前应用在乙醇的探测、驾驶员现场检测等场所。
2)MQ-3气体传感器的测量及构造原理
气体传感器有四个针状管脚,可以进行信号取出,两个针状管脚,可以进行加热电流,共计六只针状管脚。因为其内部结构比较特殊,元件的阻值会在加热以后变化,当酒精浓度降低时阻值会增大,该系列气敏元件的灵敏度变化曲线图如图7所示,我们根据图7所示可以看出电阻值和浓度值的关系。
酒精浓度与电压值的曲线图如图8所示,因为不同酒精浓度会使得电阻值不一样,所以相应的电压值会写在负载电阻上,传感器会完成将采集出的物理量转变成电量的工作。
图7 灵敏度特性曲线图
图8 酒精浓度与电压值的曲线图
在实验室环境中,将系统得出的100组电压值与酒精浓度的结果展示。在实验过程里,将1ml酒精浓度为95%(mg/l)从0倍依次稀释为100倍,接下来得出酒精浓度值和电压值的对应关系图。酒精浓度与电压值的曲线关系如图9所示,总结出对应的公式是y=0.0034e1.2789x,其中x为电压值,y为酒精浓度值。
图9 酒精浓度与电压值的曲线图
6 结语
系统开发的结束阶段,完成各个功能模块应用程序的开发后,需要进行软硬件集成,实现整个系统的融合,生产出一个产品。因此,在系统测试之前需要将应用程序烧写到FS2410的NAND Flash中。
考虑实现方便性与可重复性我们选使用在BI⁃OS下用USB Download应用程序并且烧写到NAND Flash中。FS2410开发板所带的BIOS的功能包括设订启动参数、启动下载文件、烧写Flash,设置Wince或Linux自启动。
BIOS附带的NAND Flash烧写功能,是支持三星的64M和32M的。同时BIOS将NAND Flash分区,用0代表B00T区,可以将BIOS、Bootloader存储在里面,用1代表存储内核,可以将手写程序存储在里面,用2代表根文件系统。启动BIOS 5s后,若没有收到用于控制串口的信息,那么就会把放在1分区的程序读到SDRAM中的Ox30200000位置,然后开始运行。当然也可以选择不运行,则在输入2以后,选择合适的分区在NAND FLASH中将要下载的程序写进去。经过实验数据的测试,并对结果进行分析,可以得出系统达到了理想的效果。