基于STM32单片机的车载酒精检测系统设计
Design of Vehicle Alcohol Detection System Based on STM32
DOI: 10.12677/JSTA.2018.63012, PDF, HTML, XML, 下载: 1,444  浏览: 5,164 
作者: 丁泽源, 何军平*, 宋永献*, 王经卓*, 毕训银:淮海工学院电子工程学院,江苏 连云港;吴传秀:江苏苏云医疗器材有限公司,江苏 连云港
关键词: STM32酒精传感器SIM800C数学模型数字滤波STM32 Alcohol Sensor SIM800C Mathematical Model Digital Filtering
摘要: 本系统设计一种实时检测与上传酒驾信息的车载酒精检测系统。传感器采集车内的酒精浓度、车内温湿度,并通过数字滤波得到检测的数据。采用超声波测距模块测量驾驶员与测试系统的距离,然后根据数学模型换算出驾驶员口腔附近的酒精浓度。采用MATLAB将血液中的酒精浓度与车内温湿度、空气中的酒精浓度进行拟合,将处理后的数据与设置的阈值比较。在与阈值比较前,汽车启动系统处于锁死状态,汽车无法启动。如若此时没有超过上限阈值,继电器常闭触点不动作,正常指示灯亮起,允许驾驶员启动汽车,如若超过上限阈值,则断开点火电路,同时LCD显示屏提醒驾驶员处于酒驾状态,请勿驾驶,此时可以通过按下按键跳转至通信界面,此界面可以选择发送短信或者拨打电话。该系统可以实现实时检测和上传车内酒精浓度,可以很好的减少酒驾引起的交通事故,具有很好的实际应用价值。
Abstract: The system designs a vehicle-based alcohol detection system that detects and uploads drunk driving information in real time. The sensor collects the alcohol concentration in the vehicle, the temperature and humidity in the vehicle, and obtains the detected data through digital filtering. An ultrasonic distance measuring module is used to measure the distance between the driver and the test system, and then the alcohol concentration near the mouth of the driver is converted according to a mathematical model. MATLAB was used to fit the blood alcohol concentration with the temperature and humidity in the car and the alcohol concentration in the air, and the processed data was compared with the set threshold. Before comparing with the threshold, the car startup system is locked and the car cannot start. If the upper limit threshold is not exceeded at this time, the normally closed contact of the relay does not actuate, and the normal indicator lights, allowing the driver to start the car. If the upper limit threshold is exceeded, the ignition circuit is discon-nected and the LCD screen reminds the driver that he is in a drunken driving state, do not drive. At this time, you can press the button to jump to the communication interface. This interface can choose to send an SMS or make a call. The system can realize real-time detection and uploading of alcohol concentration in the vehicle, which can well reduce traffic accidents caused by drinking driving, and has good practical application value.
文章引用:丁泽源, 吴传秀, 何军平, 宋永献, 王经卓, 毕训银. 基于STM32单片机的车载酒精检测系统设计[J]. 传感器技术与应用, 2018, 6(3): 103-111.

1. 引言

由于人们对生活品质的提高,汽车走入越来越多的家庭,同时酒文化的深入人心,导致车祸也频繁发生。如何避免酒后驾驶成为维护社会安全的主要问题之一 [1] 。研究显示,当人的身体中的乙醇含量达到一定阈值时,人的大脑对突然发生事件的反应能力将急速降低,特别在驾车时,一旦出现紧急状况,将会很难处理,最终导致交通事故。大量统计学数据表示,酒后驾驶车辆发生车祸事故的机率是正常驾车的16倍左右 [2] [3] [4] 。目前,我国的车载酒精检测系统对乙醇含量的检测尚未成熟,所以研究和制作有车载酒精检测仪越来越重要。近年来,现代检测技术取得较大的进步,传感器检测的手段渐渐的出现在人们的视野中 [5] 。在此背景下,本文利用现代传感器检测技术、SIM800C和STM32,设计出可以自动检测车内空气中乙醇含量的乙醇检测系统,可以实现酒后驾车者的数据信息采集和发送的功能。本文所设计的检测系统有利于消除酒后行驶抽查的随机性,可以更好的防止酒后驾驶。且可以满足网络化和便携化,可以实现无线数据采集,同时本系统成本低、便于维修。

2. 系统结构设计

系统中由主控模块(STM32F103ZET6)、数据采集模块(MQ-3、DHT11、HC-SR04)、通信模块(SIM800C)、显示模块(TFT-LCD)以及报警模块构成。从综合性能和成本考虑,选用一款以Cortex-M3为核心的 STM32F103ZET6做控制器。其相比于传统单片机,处理速度更快,性价比更高。酒精检测传感器采用的是MQ-3,MQ-3酒精检测器件它的电阻率就会随着乙醇浓度增加而减少。这种电阻率的变化可以通过设计的电路变为电信号的变化,从而检测出空气中的乙醇含量。温湿度检测模块采用DHT11数字温湿度检测器件。模块测距主要采用HC-SR04超声波测距传感器,系统结构如图1所示。

Figure 1. Car alcohol detection system structure

图1. 车载酒精检测系统结构图

3. 硬件电路设计

由于车载酒精检测系统要求实时性好,稳定性好,性价比高。从综合性能和成本考量,选用一款以Cortex-M3核心的32位增强型ARM微处理器STM32F103ZET6做为车载酒精检测系统的主控芯片。其主要负责将传感器采集到的数据进行处理,然后与事先设定的阈值进行比较,如果未超出设定阈值,则继续检测,如若超出,则控制系统进行通信与显示。

3.1. 酒精检测电路设计

当空气中含有乙醇分子时,MQ-3的电阻率就会随着乙醇的浓度增加而减少。这种电阻率的变化可以通过设计的电路变为电信号的变化,在将电信号的变化转换为浓度的变化,从而检测出空气中的乙醇含量。

图2所示的电路中,有两种输出,一种是输出模拟量,一种是输出数字量。如果选择测量数字量,可以通过改变电阻Rp的值,来控制输出0或者1。正常工作时,将200 ppm浓度酒精所对应的电压,设置在比较器的正极,当检测的浓度高于酒驾浓度时,此时数字量将变为0,此时可以检测到是否酒驾。如果选择测量模拟量,可以与STM32的AD转换引脚相连,此时可以直接将模拟电压读入STM32,然后调用算法程序,将读到的电压值转换成酒精浓度。

3.2. 温湿度检测电路设计

DHT11有专用的数字模块采集和温湿度检测传感技术。DHT11数字温湿度检测器件可以直接和STM32连接。DHT11的供电电压为3~5.5 V。当DHT11上电以后,要等待一秒,等待期间不用发送命令。其数据包由5个Byte (40 Bit)组成。

3.3. 超声波测距检测模块设计

由于系统采集车内酒精浓度时,驾驶员与传感器之间的距离会影响测量的结果。一般距离越远,测到的酒精浓度就会越低。为了更精确的检测酒精浓度,本系统采用超声波测距模块测量驾驶员与测试系统的距离,然后根据数学模型换算出驾驶员口腔附近的酒精浓度,这样测得的酒精浓度将更精确。

本模块采用HC-SR04测距传感器,其测试电路如图3所示。HC-SR04选用IO口触发从而进行测距,

Figure 2. Alcohol concentration detection circuit

图2. 酒精浓度检测电路

Figure 3. Ultrasonic distance measuring module circuit

图3. 超声波测距模块电路

当给IO口持续10 μs的高电平时,HC-SR04将会自动发送8个频率为40 khz的方波,然后将自行检查有没有信号返回。如果此时有信号返回,则IO口就会产生一个高电平,并且高电平持续的时间就是超声波发送出去到返回的时间。所以,测量的距离 = (高电平持续时间*声音传播速度(340 M/S))/2。

图3中,可以通过改变R3的阻值,改变超声波的测距范围。当R3的阻值越大,超声波测距的范围就越大,测距的角度也会越大,但是此时会非常容易检测到前方两侧的物体。但当R3的阻值变小时,可以将测距角度变小,随之测距的范围也会相应的减小。当R3的阻值为 3.9 时,此时超声波测距范围最远为 4 .5 m ,测距角度小于 15 o ,当R3的阻值为 4 .7 时,超声波测距范围最远为 7 m ,测距角度小于 30 o 。一般测距模块中,出厂默认R3的阻值为 3 .9 ,即测距最远距离为 4 .5 m

3.4. 电源电路设计

因为汽车内部有12 V电压供电,所以需要电平转换来给STM32供电。本系统采用的是MP2359是DC-DC芯片。DC_IN是接直流电源,电压输入范围是6~24 V。可以将输入的电压转换成5 V电压。其中D4防止电源反接的二极管。

在系统工作时,由于MQ-3乙醇检测器件的模拟输出电信号的范围是0~5 V,而主控芯片STM32F104的ADC最大电压为3.3 V,所以本系统需要进行电平转换,将5 V变为3.3 V后,以保证车载酒精检测系统的ADC正常工作。

1) 5 V转3.3 V最常用且简单的方法就是电阻分压法。5 V电平经一个1.6 k电阻和一个3.3 k电阻分压,此时分出的电压就是3.3 V。

2) 另一种方法就是使用电平转换芯片。因此在本系统中,我们采用的是AMS1117作为电平转换芯片。电容是为了滤掉纹波。

3.5. 显示电路设计

显示电路是采用16位数据线并行方式和外部相连接,之所以不采用8位数据线的方式,是因为当数据量很大时,8位数据线连接方式,会比16位数据线连接方式慢一倍以上。CS为TFTLCD片选信号,WR为STM32向TFTLCD写入数据的接线口。RD为STM32从TFTLCD读取数据接线口。D [15:0]是16位双向数据线与STM32的I/O口进行通信。RST是硬复位TFTLCD。

3.6. 通信电路设计

通信电路如图4所示,通信模块可以直接将SIM800C与STM32连接,其中通信模块的RXD与TXD接外部设备的输出和输入端。通过STM32发送AT命令可控制SIM800C数据传输。SIM800C与STM32连接图如下所示。55、56、57是电源输入;62、63、64、65连接GND。通信模块的26脚外接电源,可以给SIM800C供电。PWRKEY脚可以控制SIM800C的开关机,其实现方式是通过给PWRKEY引脚一个低电平信号,并持续1秒钟的时间,然后释放,就可以实现SIM800C开机,如果要实现通信模块关机,则需重复开机操作。其中STATUS和NETLIGHT是SIM800C的运行状态和网络状态指示灯,不使用该引脚时,保持悬空状态。

4. 酒精浓度检测算法设计

4.1. 酒精浓度扩散的数学模型

4.1.1. 模型的假设

1) 酒精浓度的传播可以简单地看做是空中某一点向四周等强度的瞬时释放,酒精在无穷空间扩散,不计风力和大地的影响。

2) 酒精浓度的扩散服从扩散定律。即单位时间通过单位法向面积的流量与它的浓度梯度成正比。

4.2.2. 模型的建立

将吹气点选为坐标原点,将吹起时刻记为 t = 0 。在时刻 t 的车内空间中任意一点的 ( x , y , z ) 的乙醇浓度记为 C ( x , y , z , t ) 。由假设2可知,单位时间通过单位法向面积的流量为

q = k × g r a d C (1)

Figure 4. Communication interface circuit

图4. 通信接口电路

其中 k 是酒精在空气中的扩散系数, g r a d 为酒精的浓度梯度,负号表示酒精浓度高的地方向酒精浓度低的地方扩散。考察车内空间域 Ω ,设 Ω 的体积为 V ,包围 Ω 的曲面为 S S 的外法线向量为 n ,则在 [ t , t + Δ t ] 内通过 Ω 的流量为

Q 1 = t t + Δ t S q n d σ d t (2)

Ω 的酒精浓度的增量为

Q 2 = V [ C ( x , y , z , t ) C ( x , y , z , t + Δ t ) ] d V (3)

由质量守恒定律

Q 1 = Q 2 (4)

根据曲面积分的奥–高公式

S q n d σ = V d i v q d v (5)

d i v 是散度记号。根据(1)-(5)式,由积分中值定律得

C t k d i v ( g r a d C ) = k ( 2 C x 2 + 2 C y 2 + 2 C z 2 ) , t > 0 , < x , y , z < (6)

这是偏微分方程无界区域的抛物线型偏微分方程。由假设1可知,系统的初始条件可为作用在坐标原点的点源函数,记为

C ( x , y , z , 0 ) = Q δ ( x , y , z ) (7)

Q 表示呼气时释放的酒精总浓度, δ ( x , y , z ) 是单位发光强度的点源函数。

方程(6)满足条件(7)的解为

C ( x , y , z , t ) = Q ( 4 π k t ) 3 2 e x 2 + y 2 + z 2 4 k t (8)

表达式(8)显示,在任意时刻 t 时,酒精浓度的等值面为 x 2 + y 2 + z 2 = R 2 所表示的曲面(球面),其中 R 的值越大,即球的半径越大, C ( x , y , z , t ) 的值将越小。

4.2. 数据处理

4.2.1. 限速滤波法

本系统为了防止突然的干扰信号,采用三次采样值来决定结果。设转换时刻 t n 1 t n t n + 1 ,转换数值为 Y ( n 1 ) Y ( n ) Y ( n + 1 ) 。限速滤波算法即流程如下:

| Y ( n ) Y ( n 1 ) | Δ Y 时,则 Y ( n ) 作为结果;

| Y ( n ) Y ( n 1 ) | > Δ Y 时,则 Y ( n ) 不作为结果,但继续保留,继续转换;

| Y ( n + 1 ) Y ( n ) | Δ Y 时,则 Y ( n + 1 ) 作为结果;

| Y ( n + 1 ) Y ( n ) | > Δ Y 时,则 ( Y ( n ) + Y ( n + 1 ) ) / 2

4.2.2. 滑动平均滤波算法

本系统为了防止周期干扰,在限速滤波后加入滑动平均滤波法,如图5所示。连续取12个AD转换值放入一个队列,队列长度固定为12,每次取这12个AD转换值的平均值作为有效数据处理。当有新的AD转换值时,将这个新的AD转换值放入队尾,丢掉队首的旧数据。这种方法可以很好的抑制周期干扰。

4.3. 呼气中乙醇含量和血液中乙醇含量的关系

由于呼气中乙醇含量与血液中乙醇浓度的换算不是固定不变的,会随着温度,身体状况,时间等因素的改变而不断的改变,所以不能简单地乘以2200进行换算,这样算得的血液中乙醇分子的浓度不够

Figure 5. Smoothing average filter

图5. 平滑平均滤波图

准确 [6] - [12] 。由于呼气中乙醇浓度和血液中乙醇浓度几乎成一次函数关系,所以本系统将根据BA307中呼气中乙醇含量与血液中乙醇含量的对照表进行一次拟合,将其关系变为一个线性函数。此时得到的转换将不会产生较大的误差。用MATLAB中的拟合工具箱cftool,得其函数关系为 f ( x ) = 221.9 x 0.3103 ,其拟合图如图6所示。

5. 系统调试

系统上电,进入系统初始界面,此时可以通过按KEY0键进入密码输入界面。进入输入密码界面后,输入正确的6位密码即可进入检测,如若输错密码,则无法检测。当输入密码正确后,进入自动检测界面,此时系统可以检测酒精浓度以及车内温湿度,并显示出来。如果检测到酒精浓度超过设定的阈值,则进入酒驾提醒界面,并且可以通过按键KEY1进入通信选择界面。按下KEY1键进入通信选择界面,此界面显示的为运营商和信号质量以及电池电量,通信选择提示信息。若按下KEY0键,则进入拨号界面,此时LCD弹出键盘,使用者可以输入电话号码,进行呼叫。如果按下KEY1键,则进入短信发送选择界面。此时,可以选择手动发送或者自动发送,选择手动发送时,LCD显示屏显示短信内容,并弹出键盘,此时可以通过按键输入号码。如果选择自动发送短信,可以按下按键,此时短信可以发送出去(图7)。

Figure 6. Curve fitting results (wherein the abscissa is breath alcohol concentration mg/L, and the ordinate is blood alcohol concentration mg/100mL)

图6. 曲线拟合结果(其中横坐标为呼气酒精浓度mg/L,纵坐标为血液酒精浓度mg/100mL)

Figure 7. Overall physical connection diagram

图7. 总体实物连接图

6. 总结

本系统以酒精检测为研究对象,设计一种车载酒精自动检测系统,传感器采集车内的酒精浓度、车内温湿度以及测试距离。为了防止周期干扰和脉冲干扰,采用限速滤波法和滑动平均滤波法两种数字滤波算法进行处理数据分析,并分析空气和血液中乙醇含量的区别,获得乙醇含量转换关系,采用MATLAB进行一次多项式拟合,从而获得两者之间线性关系。采用酒精浓度扩散数学模型建立空气中和口腔中酒精浓度的关系,从实现酒精浓度的精确检测。实验结果表明,该系统能够精确检测酒精浓度,具有很好的使用价值。

参考文献

[1] 赵丽君. 非接触式车载酒精检测仪研制[D]: [硕士学位论文]. 合肥: 安徽工业大学, 2017.
[2] 罗清. 便携式酒精分析仪设计[J]. 南方农机, 2018, 49(3): 16-22.
[3] 秦永益. 基于STM32的车载酒精检测系统设计[D]: [硕士学位论文]. 曲阜: 曲阜师范大学, 2014.
[4] 宋晓宇, 高国伟, 李世川, 吴冰洋, 李孟楠, 黄璐. 基于单片机控制的酒精浓度检测系统的设计[J]. 传感器世界, 2017, 23(8): 18-23.
[5] 孙艳波, 苏凤, 刘美丽. 基于STM32的车载酒精检测系统的设计[J]. 电子技术与软件工程, 2015(24): 112-113.
[6] 刘旭. 交通执法中人体酒精含量检测相关问题分析[J]. 法制博览, 2017(8): 126-127.
[7] Pintoa, A.R., Montezb, C., Araújob, G., Vasquesc, F. and Portugal, P. (2014) An Approach to Implement Data Fusion Techniques in Wireless Sensor Networks Using Genetic Machine Learning Algorithms. Information Fusion, 15, 90-101.
[8] 胡稳. 基于ARM的呼气式酒精浓度检测系统设计[D]: [硕士学位论文]. 郑州: 郑州大学, 2016.
[9] 贾安冰. 基于STM32F407ZG的呼气式酒精含量检测仪的研究[D]: [硕士学位论文]. 天津: 河北工业大学, 2015.
[10] 姚慧芳, 郗美琪. 涉嫌醉驾人员体内乙醇含量呼气值与血液检测值差异原因探究[J]. 湖北警官学院学报, 2017, 30(5): 68-73.
[11] Sakakibara, K., Taguchi, T., Nakashima, A., et al. (2008) Development of a New Breath Alcohol Detector without Mouthpiece to Prevent Alcohol-Impaired Driving. IEEE International Con-ference on Vehicular Electronics and Safety, Columbus, 22-24 September 2008, 299-302.
[12] 刘旭. 交通执法中人体酒精含量检测相关问题分析[J]. 法制博览, 2017(8): 126-127.