- MQシリーズガスセンサー
- ハードウェアの準備:
- MQガスセンサーからPPMを測定するアプローチ:
- クリーンエアでのRoの値の計算:
- Rsの値を測定します。
- Rs / Ro比とPPMの関係:
- MQセンサーを使用してPPMを計算するプログラム:
- ArduinoとMQ-137を搭載したハードウェアでのPPM値の表示:
産業革命の時から、私たち人類は急速に発展してきました。進歩するたびに、私たちは環境を汚染し、最終的には環境を悪化させます。現在、地球温暖化は憂慮すべき脅威であり、私たちが呼吸する空気でさえ重要になっています。そのため、大気質の監視も重要性を増し始めています。したがって、この記事では、ArduinoでMQシリーズガスセンサーを使用する方法と、出力をPPM(parts per million)で表示する方法を学習します。PPMは、ミリグラム/リットル(mg / L)としても表されます。これらのセンサーは一般的に入手可能であり、以下に示すさまざまなタイプのガスの測定にも信頼性があります
MQシリーズガスセンサー
- 二酸化炭素(CO2):MG-811
- 一酸化炭素(CO):MQ-9
- 総揮発性有機化合物(TVOC):CCS811
- 等価二酸化炭素(eCO2):CCS811
- 金属酸化物(MOX):CCS811
- アンモニア:MQ-137
- 大気質:MQ-135
- LPG、アルコール、煙:MQ2
煙の検知にはMQ2を、大気質の監視プロジェクトにはMQ-135をすでに使用しています。ここでは、sainsmartのMQ-137センサーを使用してアンモニアをppmで測定します。センサーを手にした状態で、利用可能なすべてのチュートリアルを実行しましたが、ガスをppmで測定する方法に関する適切なドキュメントがないことがわかりました。ほとんどのチュートリアルでは、アナログ値のみを扱うか、すべてのタイプのガスの測定に信頼できない定数をいくつか紹介しています。それで、長い間オンラインでいじった後、私はついにこれらのMQシリーズガスセンサーを使用してArduinoを使用してppmを測定する方法を見つけました。この記事を利用可能なガスセンサーに使用できるように、ライブラリなしで下から説明しています。
ハードウェアの準備:
MQガスセンサーは、モジュールとして購入することも、センサーのみとして購入することもできます。ppmのみを測定することが目的の場合、モジュールはデジタルピンの使用にのみ適しているため、センサーのみを購入することをお勧めします。したがって、モジュールをすでに購入している場合は、さらに説明する小さなハックを実行する必要があります。今のところ、センサーを購入したとしましょう。センサーのピン配置と接続を以下に示します。
ご覧のとおり、「H」の一方の端を電源に接続し、「H」のもう一方の端をアースに接続するだけです。次に、両方のAと両方のBを組み合わせます。一方のセットを供給電圧に接続し、もう一方をアナログピンに接続します。抵抗R Lは、センサーの仕事をする上で非常に重要な役割を果たしています。したがって、使用している値をメモしてください。47kの値をお勧めします。
すでにモジュールを購入している場合は、あなたのRの値を見つけるためにあなたのPCBトレースを追跡する必要がありますLボードでは。Grauonlineはすでにこの作業を行っており、MQガスセンサーボードの回路図を以下に示します。
もし抵抗R見ることができるようにL(R2)を、Aoutはピンとグランドの間に接続されているあなたがRの値モジュール有するさそうである場合LはVOUT端子とVcc端子の間の抵抗モードでマルチメータを用いて測定することができますモジュール。私のsainsmartMQ -137ガスセンサーでは、RLの値は1Kで、下の写真に示すようにここにありました。
しかし、それはRの変数ポット提供するウェブサイトの主張Lあなたは明確に回路図に見ることができるように真実ではない、ポットは、オペアンプのための可変電圧を設定するために使用し、Rとは何の関係もありませんLを。したがって、上記のSMD抵抗(1K)を手動ではんだ付けする必要があり、RLとして機能するGroundピンとVoutピンの間に独自の抵抗を使用する必要があります。データシートに示されているように、RLの最適値は47Kであるため、同じ値を使用します。
MQガスセンサーからPPMを測定するアプローチ:
R Lの値がわかったので、これらのセンサーから実際にppmを測定する方法に進みましょう。すべてのセンサーと同様に、開始する場所はそのデータシートです。 MQ-137データシートをここに示しますが、センサーに適したデータシートを見つけてください。データシート内では、(Rs / Ro)VS PPMに対してプロットされるグラフが1つだけ必要です。これは、計算に必要なグラフです。だからそれを手に取って、どこかに手元に置いてください。私のセンサー用のものを以下に示します。
MQ137センサーはNH3、C2H6O、さらにはCOを測定できることがわかりました。しかし、ここではNH3の値にのみ興味があります。ただし、同じ方法を使用して、任意のセンサーのppmを計算できます。このグラフは、ppmの値を見つけるための唯一のソースであり、Rs / Ro(X軸)の比率を何らかの方法で計算できれば、このグラフを使用してppmの値(Y軸)を見つけることができます。Rs / Roの値を見つけるには、Rsの値とRoの値を見つける必要があります。ここで、Rsはガス濃度でのセンサー抵抗、Roはクリーンサーでのセンサー抵抗です。
はい…これは私たちがこれをどうやって回避できるか見てみましょう…計画です
クリーンエアでのRoの値の計算:
グラフでは、Rs / Roの値は空気に対して一定であることに注意してください(太い青い線)。これを利用して、センサーが新鮮な空気で動作している場合、Rs / Roの値は3.6になると言うことができます。図を参照してください。未満
Rs / Ro = 3.6
データシートから、Rsの値を計算するための式も得られます。式を以下に示します。この式がどのように導き出されるのかを知りたい場合は、ジェイコンシステムを介して読むことができます。また、これを整理するのに役立ったと思います。
この式では、Vcの値は供給電圧(+ 5V)であり、R Lの値はすでに計算した値です(私のセンサーでは47K)。小さなArduinoプログラムを作成すると、V RLの値を見つけて、最終的にRsの値を計算することもできます。以下に、センサーのアナログ電圧(V RL)を読み取り、この式を使用してRsの値を計算し、最終的にシリアルモニターに表示するArduinoプログラムを示しました。プログラムはコメントセクションでよく説明されているので、この記事を短くするために、ここでは説明をスキップします。
/ * *新鮮な空気の状態で既知のRLのR0の値を測定するプログラム*プログラム:B.Aswinth Raj *ウェブサイト:www.circuitdigest.com *日付:28-12-2017 * ///このプログラムは最適に機能します温度:20℃、湿度:65%、O2濃度21%、R1の値が47Kの場合#define RL 47 //抵抗RLの値は47Kvoid setup()//実行のみ一度{Serial.begin(9600); //値を表示するためにシリアルCOMを初期化します} void loop(){float Analog_value;フロートVRL;フロートRs;フロートRo; for(int test_cycle = 1; test_cycle <= 500; test_cycle ++)//センサーのアナログ出力を200回読み取る{analog_value = Analog_value + AnalogRead(A0); // 200の値を追加します} analog_value = Analog_value / 500.0; //平均VRLを取得= analog_value *(5.0 / 1023.0);//アナログ値を電圧に変換します// RS =((Vc / VRL)-1)* RLは、データシートから取得した式ですRs =((5.0 / VRL)-1)* RL; //データシートのグラフから得られたRS / ROは3.6ですRo = Rs / 3.6; Serial.print( "Ro at fresh air ="); Serial.println(Ro); //計算されたRodelay(1000);を表示します// 1秒の遅延}
注: Roの値は変動します。センサーを少なくとも10時間予熱してから、Roの値を使用してください。
私があることろの値を締結30私のセンサ用KΩ(式中、R Lは、であるに47kΩ)。あなたのものは少し異なるかもしれません。
Rsの値を測定します。
Roの値がわかったので、上記の2つの式を使用してRsの値を簡単に計算できます。以前に計算されたRsの値は新鮮な空気の状態に対するものであり、アンモニアが空気中に存在する場合は同じではないことに注意してください。Rsの値を計算することは、最終的なプログラムで直接対処できる大きな問題ではありません。
Rs / Ro比とPPMの関係:
RsとRoの値を測定する方法がわかったので、その比率(Rs / Ro)を見つけることができます。次に、チャート(以下に表示)を使用して、PPMの対応する値に関連付けることができます。
NH3ライン(シアン色)は線形に見えますが、実際には線形ではありません。見た目は、目盛りが不均一に分割されているためです。したがって、Rs / RoとPPMの関係は実際には対数であり、次の式で表すことができます。
log(y)= m * log(x)+ bここで、y =比率(Rs / Ro)x = PPM m =線の傾きb =交点
mとbの値を見つけるには、ガスライン上の2つの点(x1、y1)と(x2、y2)を考慮する必要があります。ここではアンモニアを使用しているので、上の写真(赤でマーク)に赤のマークが付いているように、私が検討した2つのポイントは(40,1)と(100,0.8)です。
m = / m = log(0.8 / 1)/ log(100/40)m = -0.243
同様に(b)については、上の図(青でマーク)に示すように、グラフから中点値(x、y)を(70,0.75)で取得しましょう。
b = log(y)-m * log(x)b = log(0.75)-(-0.243)* log(70)b = 0.323
mとbの値を計算したので、次の式を使用して(Rs / Ro)の値をPPMと同等にすることができます。
PPM = 10 ^ {/ m}
MQセンサーを使用してPPMを計算するプログラム:
MQセンサーを使用してPPMを計算するための完全なプログラムを以下に示します。以下に、いくつかの重要な行について説明します。
プログラムを続行する前に、負荷抵抗(RL)、勾配(m)、切片(b)の値、および外気中の抵抗(Ro)の値を入力する必要があります。これらすべての値を取得する手順はすでに説明されているので、ここでそれらをフィードしてみましょう
#define RL 47 //抵抗RLの値は47Kです#definem -0.263 //計算された勾配を入力します#defineb 0.42 //計算された切片を入力します#defineRo 30 //見つかったRo値を入力します
次に、センサーの両端の電圧降下(VRL)を読み取り、それを電圧(0V〜5V)に変換します。これは、アナログ読み取りでは0〜1024の値しか返されないためです。
VRL = analogRead(MQ_sensor)*(5.0 / 1023.0); //電圧降下を測定し、0〜5Vに変換します
これで、VRLの値が計算されたので、上記の式を使用して、Rsの値と比率(Rs / Ro)を計算できます。
比率= Rs / Ro; //比率Rs / Roを見つける
最後に、対数式を使用してPPMを計算し、以下に示すようにシリアルモニターに表示できます。
double ppm = pow(10、((log10(ratio)-b)/ m)); //数式を使用してppmを計算しますSerial.print(ppm); // ppmを表示
ArduinoとMQ-137を搭載したハードウェアでのPPM値の表示:
すべての理論で十分ですが、PPMでガスの値を表示するセンサーとLCDを備えた簡単な回路を構築しましょう。ここで使用しているセンサーは、アンモニアを測定するMQ137です。セットアップの回路図を以下に示します。
回路図に示すようにセンサーとLCDを接続し、プログラムの最後に記載されているコードをアップロードします。上で説明したように、Ro値を変更する必要があります。4.7K以外のRLとして他の抵抗を使用している場合も、パラメータ値を変更してください。
読み取りを行う前に、セットアップの電源を少なくとも2時間そのままにしておきます(より正確な値を得るには、48時間をお勧めします)。この時間は加熱時間と呼ばれ、その間にセンサーがウォームアップします。この後、以下に示すように、PPMの値とLCD画面に表示される電圧を確認できるはずです。
ここで、値が実際にアンモニアの存在に関連しているかどうかを確認するために、このセットアップを密閉容器内に配置し、その中にアンモニアガスを送って、値が増加しているかどうかを確認しましょう。私は適切なPPMメーターを持っていません。それを校正します。メーターを持っている人がこの設定をテストして、私に知らせてくれるといいですね。
以下のビデオを見て、アンモニアの存在に基づいて測定値がどのように変化したかを確認できます。あなたがその概念を理解し、それを学ぶことを楽しんだことを願っています。疑問がある場合は、コメントセクションに残してください。詳細については、こちらのフォーラムを使用してください。