室内空气采集系统建立及Matlab数据处理

2018-10-20 10:05萨良兵刘华
科技创新与应用 2018年26期

萨良兵 刘华

摘 要:设计了一个基于Arduino Mega 2560为主控芯片、以MQ-4甲烷传感器、MQ-7一氧化碳传感器、MQ-137氨气传感器、

MH-Z14二氧化碳气体传感器和DHT11温湿度传感器为数据采集模块的室内空气采集系统平台。该系统可以通过A/D、D/A转换和串口实时读取空气中气体浓度,并能与上位机中的Matlab实现数据传输等功能。通过实验室测试和调整,较好地实现了预期功能。

关键词:Arduino;气体传感器;Matlab

中图分类号:TP274+.2 文献标志码:A 文章编号:2095-2945(2018)26-0051-03

Abstract: An indoor air acquisition system platform based on Arduino Mega 2560 is designed, in which MQ-4 methane sensor, MQ-7 carbon monoxide sensor, MQ-137 ammonia sensor, MH-Z14 carbon dioxide sensor and DHT11 temperature and humidity sensor are used as data acquisition modules. The system can read the gas concentration in the air in real time through A/D, D/A conversion and serial port, and can transmit data with Matlab in the host computer. Through the laboratory test and adjustment, the expected function is achieved.

Keywords: Arduino; gas sensor; Matlab

室内空气采集[1],是指对室内某些气体含量进行检测并采集,直接反映了室内空气质量情况,也体现了空气中污染物浓度的高低。根据室内空气质量标准(GB/T18883-2002)[2],室内空气质量参数是指室内空气中与人体健康有关的物理、化学、生物和放射性参数。

美国估计因室内空气质量恶化所造成的损失每年为590亿美元[3]。故出于人体健康安全角度考虑,室内空气质量检测具有立竿见影的效果,即可以让人们随时清楚的知道室内空气污染物的浓度,采取相应的防范措施。

1 系统设计

本系统逻辑可分为三部分,总体结构框图如图1,整体实物图如图2:

读取传感器数据:根据每种传感器输出的数据类型,利用A/D、PWM波将数据采集到核心控制器。

数据转换:将控制器所读取到的数据经过相应的D/A和数学公式转换成实际的气体浓度模拟量。

数据传输:控制器和上位机中Matlab编写相应的程

序,通过串口实现数据传输,将数据保存到Excel中。

2 传感器

2.1 MQ系列气体传感器

MQ-4甲烷传感器、MQ-7一氧化碳传感器和MQ-137氨气传感器等MQ系列采用的气敏材料都是二氧化锡(SnO2),因为其电导率较低。采用简单电路就能把由于气体浓度的变化导致电导率的变化转化为相应的电信号输出[4]。

由模拟信号转换成对应浓度如公式(1)-(3):

2.2 温湿度传感器

DHT11(Digital Humidity Temperature)是能够检测到温度和湿度的数字信号输出的传感器,它内部含有对数据校准的数字信号。传感器内部包括一个NTC测温元件和一个电阻式感湿元件,并和一个8位高性能的单片机相连接。

2.3 二氧化碳传感器

MH-Z14二氧化碳气体传感器(以下简称MH-Z14传感器)利用NDIR(非色散红外)原理对空气中的CO2进行检测。它不仅体积小,而且还非常的智能通用,提供3种不同方式的输出信号(模拟电压、UART和PWM波),内置温度补偿。它还具有很好的选择性,对氧气无依賴,寿命长。

MH-Z14传感器的PWM波输出的整个周期为1004ms,周期起始段为高电平输出2ms,周期结束段为低电平输出2ms。PWM波输出见图10。

PWM转换成浓度如公式(4):

3 系统调试

3.1 软件设计

单片机部分,初始化设置波特率和引脚等,接着主程序读取传感器数据并转换,最后将实际数据传输到串口,供Matlab读取,等待一分钟进行下一次的数据读取。

上位机部分,将传输到串口的数据保存在Matlab的数组当中,再将数据保存在Excel表中。

3.2 数据采集

各个传感器与Mega 2560的接法和输出的信号形式等如表1所示:

系统调试成功后,结果如图12所示。

由图12可知当前甲烷浓度为975.68ppm,一氧化碳浓度为168.22ppm,氨气浓度为41.09ppm,二氧化碳浓度为545.45ppm,温度为24摄氏度,湿度为18RH。

4 Matlab数据处理

4.1 数据归一化

系统连续工18个小时,记为第一次数据采集,原始数据如图13所示。

当数据采集完成后,由于数据中各种参数之间的大小范围或单位都不相同,在作图时就会导致数值较大的数据掩盖了数值较小的数据所发展的趋势,故首先要对数据归一化处理。选用mapminmax()归一化函数,它是Matlab软件中自带的函数,它能按照一种映射方法将数据归一化到[-1,1]之间,并且不改变原数据的规律。

利用Matlab将数据归一化后如图14。

4.2 数据平滑化

由图13可以看出,只有数值较大的CH4和CO2的趋势较为明显,数值较小的温度和湿度变化趋势几乎没有。而图14是经过归一化处理后的数据,就能够很明显的看出每种参数的变化趋势,但是由于数据存在波动问题,因此还要对数据平滑化处理。

在Matlab中数据的平滑函数用的是Z=smooth(Y,pan,method)函数。对于method有moving单纯移动平均、lowess线性加权平滑、loess二次加权平滑等多种选择,对数据平滑化处理选择的是pan=12和method为loess方法。

以CH4为例,图15中红色曲线是归一化后的数据,蓝色曲线是平滑化后的数据。

4.3 数据趋势分析

第一次室内空气采集系统采集到的数据,经过归一化和平滑化处理后,结果如图16。

以CO2数据曲线为例,可见在3个时间段内有数据波动。第一个时间段位有较大的数据波动,实际情况是当时室内人数达到30人左右。以此类推将数据波动与实际情况对比发现都吻合,说明采集到的数据真实可靠。

5 设计总结

本文搭建了通过以Arduino Mega 2560为主控芯片、以MQ-4甲烷传感器、MQ-7一氧化碳传感器、MQ-137氨气传感器、MH-Z14二氧化碳气体传感器和DHT11温湿度传感器为数据采集模块的室内空气采集系统平台。该系统可以准确的实时读取室内指定的气体浓度数据,并通过上位机实现数据传输与处理。数据趋势分析和准确性的验证,结果表明数据真实可靠。

参考文献:

[1]潘小川.室内空气质量对人体健康的影响[J].中国科学基金,2005(04):205-208.

[2]GB/T18883-2002.室内空气质量标准[S].

[3]吕品.室内空气质量控制中关键检测技术的研究[D].大连理工大学,2008.

[4]https://wenku.baidu.com/view/450f8c1352d380eb62946d62.html?from=search[EB/OL].