我手邊有幾個氣體感測器,買了好一段時間了,一直沒有實作接上線路,利用最近實作ESP8266的機會,又將傳感器 MQ-135、 MQ-2及MS-3拿出來,接上 NodeMCU,看看傳感器偵測的狀況。這篇文章要實作的是 MQ-135 空氣品質感測器,如何偵測空氣中的 PPM(parts per million),百萬分點濃度,定義為百萬分之一。
其他氣體類的傳感器,種類很多,包括:
MQ135感測器對氨氣、硫化物、苯系蒸汽的靈敏度高,對煙霧和其他有害氣體的監測也很理想。是一款適合多種應用的低成本感測器。MQ-135可用於家庭環境的有害氣體探測裝置,適宜於氨氣、芳族化合物、硫化物、苯系蒸汽、煙霧等氣體有害氣體的探測,氣體敏感元件測試濃度範圍:10 到 1000ppm。
MQ-135空氣品質感測器,使用前請預熱20秒左右,測量的資料才穩定。如果選擇AOUT,模擬量輸出,那樣就不用管電位器了,直接將AOUT腳接 NodeMCU的 A0,就可以了。
在正常環境中沒有氣體被檢測的情況下,設定感測器輸出電壓值為參考電壓。這時,AOUT端的電壓在1V左右,當感測器檢測到被測氣體時,電壓每升高0.1V,實際被測氣體的濃度增加20ppm (簡單的說:1ppm=1mg/kg=1mg/L=1×10(-6) 常用來表示氣體濃度)。
根據這個參數就可以在 NodeMCU 裏面將測得的類比量電壓值轉換為濃度值。注意:如果是用來做精密儀器,請購買市場上標準的校準儀器,不然存在誤差,因為,輸出濃度和電壓關係的比值並非線性,而是趨於線性。
• 將下載的壓縮檔解壓縮,放在 Arduino 主程式下的 libraries目錄內,以我的電腦來說,Arduino安裝在 C:\Program Files (x86)\Arduino,點進目錄有一個 libraries的子目錄,下載後解壓縮的目錄,整個放進 libraries 目錄,重新啟動 Arduino即可。
其他氣體類的傳感器,種類很多,包括:
- MQ-2:煙霧氣體(液化氣 / 丙烷 / 氫氣)感測器模組
- MQ-3:酒精感測器模組
- MQ-4:天然氣、甲烷感測器模組
- MQ-5:液化氣、天然氣、瓦斯氣體感測器
- MQ-6:丙烷、液化氣氣體感測器模組模組
- MQ-7:一氧化碳感測模組
- MQ-8:氫氣氣體感測器模組空氣檢測模組
- MQ-9:一氧化碳 / 甲烷 / 液化氣可燃氣體感測器模組
- MQ-131:HO3 臭氧氣體感測模組臭氧傳感器模組
- MQ-135:空汙檢測(氨 / 苯 / 酒精)有害氣體感測器模組
- MQ-136:硫化氫液化氣煙霧感測器模組
- MQ-137:氣體 Ammonia 阿摩尼亞 NH3 氨氣檢測模組
- MQ-138:甲醛偵測感測器模組甲醛酮醇類氣體傳感器模組
- MQ-139:氟利昂(氟氯烷)檢測感測器氣體檢測模組
- MQ-214:甲烷感測器 可燃氣感測器模組
MQ135感測器對氨氣、硫化物、苯系蒸汽的靈敏度高,對煙霧和其他有害氣體的監測也很理想。是一款適合多種應用的低成本感測器。MQ-135可用於家庭環境的有害氣體探測裝置,適宜於氨氣、芳族化合物、硫化物、苯系蒸汽、煙霧等氣體有害氣體的探測,氣體敏感元件測試濃度範圍:10 到 1000ppm。
MQ-135空氣品質感測器,使用前請預熱20秒左右,測量的資料才穩定。如果選擇AOUT,模擬量輸出,那樣就不用管電位器了,直接將AOUT腳接 NodeMCU的 A0,就可以了。
在正常環境中沒有氣體被檢測的情況下,設定感測器輸出電壓值為參考電壓。這時,AOUT端的電壓在1V左右,當感測器檢測到被測氣體時,電壓每升高0.1V,實際被測氣體的濃度增加20ppm (簡單的說:1ppm=1mg/kg=1mg/L=1×10(-6) 常用來表示氣體濃度)。
根據這個參數就可以在 NodeMCU 裏面將測得的類比量電壓值轉換為濃度值。注意:如果是用來做精密儀器,請購買市場上標準的校準儀器,不然存在誤差,因為,輸出濃度和電壓關係的比值並非線性,而是趨於線性。
[材料]
- NodeMCU x 1
- MQ-158 x 1
- 麵包板(含電源模組) x 1
- 連接線 x 3
[線路連接]
NodeMCU
|
MQ-135
|
麵包板電源
|
---
|
VCC
|
5V
|
---
|
GND
|
GND
|
A0
|
---
|
A0
|
[安裝 MQ135 Library]
先到 Github 下載 MurrayBoz/NodeMCU-MQ135,按右邊綠色選項「Clone or download」,再選「Download ZIP」。• 將下載的壓縮檔解壓縮,放在 Arduino 主程式下的 libraries目錄內,以我的電腦來說,Arduino安裝在 C:\Program Files (x86)\Arduino,點進目錄有一個 libraries的子目錄,下載後解壓縮的目錄,整個放進 libraries 目錄,重新啟動 Arduino即可。
[程式]
#include <MQ135.h> #define ANALOGPIN A0 int PPMStatus = 0; int PPMStatusOld = 0; float airTemperature, airHumidity, ppm, ppmbalanced, rzero; int initStep=1; // 1 = Connection in progress / 2 = Connection Done MQ135 gasSensor = MQ135(ANALOGPIN); void setup() { Serial.begin(9600); } void loop() { // 當時室內大約的溫度跟濕度,讓 getCorrectPPM進行校正 airTemperature = 28; airHumidity = 50; rzero = gasSensor.getRZero(); //取得rzero 校準值 Serial.print("RZero="); Serial.println(rzero); // 持續顯示 rzero 值 ppm = gasSensor.getPPM(); // 取得 ppm 值 Serial.print("PPM="); Serial.println(ppm); ppmbalanced = gasSensor.getCorrectedPPM(airTemperature, airHumidity); // 取得修正的 ppm 值 Serial.print("PPM Corrected="); Serial.println(ppmbalanced); Serial.println(); delay(5000); }
[實作結果]
最下方的兩個感測值,是使用打火機讓瓦斯漏出在 MQ-135周圍時,測得的數據[參考資料]
- Github: MurrayBoz/NodeMCU-MQ135
- Instructable:Air Quality Check With Arduino Uno
- 露天拍賣:https://goods.ruten.com.tw/item/show?21549272911272
張貼留言