薩良兵 劉華
摘 要:設計了一個基于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].