見出し画像

製品レビュー|電子機器15:Winsen製ガスセンサー(MQ-2/MQ-3B)


1.概要

 購入した製品の使い方および感想用記事です。
 今回は「アルコールセンサー MQ-3B(450円/個(税込))」と「ガスセンサー(煙センサー) MQ-2(300円/個(税込))」をレビューしました。


 今回はセンサーのメーカーが同じであり動作機構も同じ(アナログ出力)のため、まとめて確認しました。

1-1.Winsen社(炜盛)とは

 2003 年に設立された鄭州ウィンセン電子技術有限公司は、30,000 $${m^2}$の敷地をカバーするセンシング製品の研究開発、生産、販売、ソリューションの統合事業を行うハイテク企業です。
  2009年に成長企業市場(GEM)に上場され、総合力は中国のセンサー業界でトップにランクされました。 30 年以上の発展を経て、Winsen は中国のガスセンサー分野のリーダーとなり、世界的に人気のあるセンサー企業の 1 つに成長しました。

1-2.Winsen社の製品

 下記の通り様々なセンサーを取り扱っています。

 過去記事で紹介したセンサもWinsen社の物でした。

2.センサー仕様

 各種センサの仕様を紹介します。両方とも記載しましたが、基本的に構造はすべて同じのため1つ理解すれば他も理解できます。
 各センサの共通事項は下記の通り。

  1. 禁止事項

    • 有機シリコンガス中での使用

    • 腐食ガス中での使用

    • アルカリ、アルカリ金属\、ハロゲンガス中の使用

    • 水中にセンサを浸ける

    • センサーを凍結させる(氷点下条件など)

    • 仕様以上の高電圧の供給

    • ピン設置間違いの無きこと

  2. 避けるべき運転条件

    1. 水の凝集

    2. 仕様以上の高濃度ガスへの長時間の暴露

    3. 長時間の使用(下表参照)

    4. 悪環境(adverse environment)での長時間の使用(高温、多湿など)

    5. 振動

    6. 激しい振動(振とう)

    7. 仕様から外れたはんだ付け

  3. 校正:工場出荷前に検査はしているが、校正はしていない

  4. 連続運転時間:数時間から数年は問題なく動きます。

  5. 長期間の保管:長期間保管した場合はAging処理した方がよい

表 長期間保存時のaging timeの目安

2-1.アルコールセンサー MQ-3B

 アルコールセンサの仕様を紹介します。

 MQ-3Bは、センサ検出部の素材にSnO2(酸化スズ)を使用したガスセンサです。センサ周囲の空気中に検出可能なガスがあると、センサの抵抗値(導電率:Conductivity)が低下するため抵抗値の変化を読み取ることで、空気中のアルコール濃度を電気的な信号に変換することができます。
 アルコールへの高い感度に対して、ガソリン、煙、水蒸気には感度が低いため、アルコールを選択的に検出できます。

 この商品はホビー用として個人の趣味の範囲でお楽しみ頂くことを前提に販売しており、防災用途を想定されておりません。

 2-1-1.基本仕様

 基本の概要は下記参照。

  • 電源電圧:DC5.0V(Max:24V)

  • 検出ガス:アルコール(EtOH)

  • 出力:アナログ出力(AO)

  • 出力電圧:電源電圧と設置する抵抗に依存

    • 参考値だと2.5~4.0V

  • 出荷前校正:基本的に無し

  • 応答速度:10~20sec

  • 計測値の振れ:下図参照

 2-1-2.図面

【回路図】
 回路図より各確認できます。

  • センサーには2種類の電源が必要

    • $${V_H}$$(ヒーター電源):センサーの動作温度まで加温するため電源。負荷抵抗(Load Resistance)$${R_L}$$がセンサと直列(in series with)に接続されているなら電源はDC/ACどちらでも可

    • $${V_C}$$(回路電源):負荷抵抗(Load Resistance)$${R_L}$$に検出電圧(detect voltage)を供給。本電源はDCであること。

  • Pin2とPin5(センサの中央)はヒーター電源用ピン

  • Pin1,3とPin4,6は試験用ピン


 2-1-3.詳細仕様

【センサー特性:感度カーブ(出力電圧)】
 
負荷抵抗$${R_L}$$=4.7kΩにおける出力電圧$${V_RL}$$[V]の関係図は下図の通り。

【センサー特性:ガス濃度と抵抗値の変化】
 $${R_0}$$:が検出ガス濃度=0ppmであり、$${R_S}$$:ガス濃度が特定の時の抵抗値(導電率)より、ガス濃度の抵抗値変化の相関図である。
 結果として他のガス成分の影響は小さく、目的ガス成分のみ計測できると言いたいことを表現した図となる。

【センサー特性:温度・湿度と抵抗値の変化】
 結論は十分に換気された安定した環境下(湿度一定)において、十分な予熱(ヒーターがセンサーを温め終わった)で計測しないと誤差がでることを意味します。
 下図は各温度・湿度における抵抗値の変化を示します。温度や湿度の影響は大きく出るため、測定時のセンサ状態が安定していないと、検出値が安定しなくなります。

2-2.ガスセンサー(煙センサー) MQ-2

 ガスセンサの仕様を紹介します。

 MQ-2は、センサ検出部の素材にSnO2(酸化スズ)を使用したガスセンサです。センサ周囲の空気中に検出可能なガスがあると、センサの抵抗値(導電率:Conductivity)が低下するため、抵抗値の変化を読み取ることでガスの濃度を電気的な信号に変換することができます。
 プロパンや煙に高い感度を持ちます。また、天然ガス、その他の可燃性ガスにも対応しています。低コストで、各種可燃性ガスの検出用途にお使いいただけます。

 この商品はホビー用として個人の趣味の範囲でお楽しみ頂くことを前提に販売しており、防災用途を想定されておりません。

 2-2-1.基本仕様

 基本の概要は下記参照。

  • 電源電圧:DC5.0V(Max:24V)

  • 検出ガス:アルコール(EtOH)

  • 出力:アナログ出力(AO)

  • 出力電圧:電源電圧と設置する抵抗に依存

    • 参考値だと2.5~4.0V

  • 出荷前校正:基本的に無し

  • 応答速度:10~15sec

  • 計測値の振れ:下図参照

 2-2-2.図面

【回路図】
 回路図より各確認できます。

  • センサーには2種類の電源が必要

    • $${V_H}$$(ヒーター電源):センサーの動作温度まで加温するため電源。負荷抵抗(Load Resistance)$${R_L}$$がセンサと直列(in series with)に接続されているなら電源はDC/ACどちらでも可

    • $${V_C}$$(回路電源):負荷抵抗(Load Resistance)$${R_L}$$に検出電圧(detect voltage)を供給。本電源はDCであること。

  • Pin2とPin5(センサの中央)はヒーター電源用ピン

  • Pin1,3とPin4,6は試験用ピン

 2-2-3.詳細仕様

【センサー特性:感度カーブ(出力電圧)】
 
負荷抵抗$${R_L}$$=4.7kΩにおける出力電圧$${V_RL}$$[V]の関係図は下図の通り。

【センサー特性:ガス濃度と抵抗値の変化】
 $${R_0}$$:が検出ガス濃度=0ppmであり、$${R_S}$$:ガス濃度が特定の時の抵抗値(導電率)より、ガス濃度の抵抗値変化の相関図である。
 結果としてAirの影響は小さく目的ガス成分のみ計測できるが、アルコールを含む可燃性ガスが入るとそれも検出すると判断できる。

【センサー特性:温度・湿度と抵抗値の変化】
 結論は十分に換気された安定した環境下(湿度一定)において、十分な予熱(ヒーターがセンサーを温め終わった)で計測しないと誤差がでることを意味します。
 下図は各温度・湿度における抵抗値の変化を示します。温度や湿度の影響は大きく出るため、測定時のセンサ状態が安定していないと、検出値が安定しなくなります。

3.製品原理

 製品の動作原理に関する部分を説明します。

3-1.検出器の種類

 ガスセンサの検出器の種類は下記があります。本センサは半導体式になります。原理より酸化スズの表面上の酸素と反応するものはすべて検知します。

半導体式

接触燃焼式

電気化学式
 電気化学式センサは大きく分けて「固体電解質型」と「電解液型」に分けることが出来ます。
出典:第7章 固体電解質による 小型・低消費電力の半導体ガス・センサ CO2ガス・センサの基礎と使い方

NDIR式
 詳細はCO2センサの記事参照のこと

3-2.半導体式ガスセンサの仕組み

 半導体式ガスセンサは還元性ガスである可燃性ガスにセンサが曝露されると電気抵抗が変化するという性質を持っております。この性質を利用してガスの検出を行っており、1968 年に酸化スズを材料とした製品が世界で初めて量産化されました。
出典:半導体式ガスセンサ セラミックスアーカイブズ

 一般的にはヒーターによって感ガス部を300~450℃程度に加熱して使用します。

 加熱された酸化スズが還元性ガスである可燃性ガスに暴露されると酸化スズの表面でこれらのガスと吸着酸素との酸化反応が起こり、酸化スズの表面に吸着していたサンは減少してポテンシャル招聘気が低下し電気が動きやすくなります(電気抵抗が低下する。)。

 よってガス濃度で電気抵抗が変化するため、これを回路で検出することでガス濃度を計測できます。

$$
センサ抵抗R_S=\frac{回路電圧V_C-V_{OUT}}{両端電圧V_{OUT}}\times 負荷抵抗R_L
$$

$$
\begin{aligned}
R_S \times V_{OUT} =R_L\times (V_C - V_{OUT})\\
V_C \times R_L = V_{OUT} \times R_S + V_{OUT} \times R_L  \\
V_C \times R_L = V_{OUT} \times (R_S + R_L) \\
\frac{V_{OUT}}{V_C} = \frac{R_L}{R_S + R_L} \\
両端電圧V_{OUT} = (\frac{R_L}{R_S + R_L}) \times V_C
\end{aligned}
$$

4.部材購入

4-1.購入品

 部品は本体のみ購入しました。

 参考までにこれらのセンサは比較的モジュール(基板付き)で販売されており、こちらの方が取り扱いは圧倒的に楽です。今回は学習用としてセンサ本体で実装しました。

4-2.準備必須品

 その他必需品は下記の通りです。
 なおセンサーのヒーターに供給する電源はRaspberry Pi Picoだと電力不足のため、別途5Vの直流(DC)電源(900mW=180mA以上)を用意しました。

  • マイコン/シングルボード(Raspberry Pi/Pico)

  • ブレッドボード

  • ジャンピングワイヤー/ワニ口クリップ

  • 抵抗器

  • 5ADC電源


5.環境構築

5-1.マイコン準備

 センサを制御するためのシングルボードやマイコンの準備を行います。
Raspberry PiやPicoの準備は下記記事参照のこと

 Raspberry PiにGPIOを制御するためのライブラリが無い場合は”RPi.GPIO”を事前にインストールしておきます。
 Picoの場合はMicropythonを使用できるようにしておきます。

[Terminal]
pip install rpi.gpio

5-2.ライブラリのインストール

 5-2-1.Case1:Pico

 Raspberry Pi Picoは組み込み関数と標準ライブラリで対応できるため、追加の環境構築は不要です。

 5-2-2.Case2:Raspberry Pi

 外付けADCを使用しない場合、Raspberry Piは組み込み関数と標準ライブラリで対応できるため、追加の環境構築は不要です。
ADCが無いとON/OFFの判定しかできません。

6.使用前の準備

6-1.はんだ付け

 本製品の既にピンがつけられているため、はんだ付けは不要です。

6-2.抵抗器の選定

 結論としては1.7kΩの抵抗器を選定しました。

 6-2-1.アナログ出力の計測方法

 基本回路は下記の通りであり、内部のセンサ(酸化スズ)の抵抗$${R_S}$$と、自分で追加設置する抵抗$${R_L}$$の分圧回路からアナログ出力を得ることができます。
 分圧回路については「過去記事:圧力センサ」をご確認ください。

$$
\begin{aligned}
R_S \times V_{OUT} =R_L\times (V_C - V_{OUT})\\
V_C \times R_L = V_{OUT} \times R_S + V_{OUT} \times R_L  \\
V_C \times R_L = V_{OUT} \times (R_S + R_L) \\
\frac{V_{OUT}}{V_C} = \frac{R_L}{R_S + R_L} \\
両端電圧V_{OUT} = (\frac{R_L}{R_S + R_L}) \times V_C
\end{aligned}
$$

 本センサの回路図は下記の通りであり、1,3, 4,6で分圧回路を作ります。

  6-2-1.抵抗値の計算

 負荷抵抗$${R_L}$$=4.7kΩにおける出力電圧$${V_RL}$$[V]の関係図は下図の通りです。図よりガス濃度の増加により内部抵抗が低下するため出力電圧が増加しており、この値は追加する抵抗の値で調整できます。

 Raspberry Pi PicoのADCは3.3Vまでのため500ppmくらいで3.3Vになる※抵抗を設置したいと思います。
※前述の通り温度や湿度で値が異なるため、あくまで参考レベル
 上図のデータから各ガス濃度でのセンサ抵抗$${R_S}$$を計算し、負荷抵抗$${R_L}$$を変えた時の両端電圧$${V_{OUT}}$$が3.3Vになる値を確認しました。
 結果として1.7kΩ程度となりました。

6-3.部品の組付け

 部品の組付けはジャンパー線を使用して下記の通り繋ぎました。

 6-3-1.参考回路図

 仕様書の回路図からだけだと配線方法が理解できなかったので、下図を参照しました。

 6-3-2.実態配線図

 実際の配線は下記の通りです。なお回路図は下図の通りであり、番号がふられていますがセンサーは左右対称であり印もありません。おそらく向きは気にしなくて良いはずです。

【Raspberry Pi】
 今回は未実装

【Raspberry Pi Pico】
 抵抗は手持ちの抵抗から値が近い2kΩを使用

$$
\begin{array}{|c|c|c|} \hline \textbf{No.} &\textbf{センサー} & \textbf{Raspberry Pi Pico} \\
\hline \text{1} & \text{PIN1} & \text{GPIO26(ADC0)}\\
\hline \text{2} & \text{PIN2} & \text{DC5V+※別電源}\\
\hline \text{3} & \text{PIN3} & \text{抵抗RL▶GND}\\
\hline \text{3} & \text{PIN4} & \text{PIN40|VBUS(5V)}\\
\hline \text{3} & \text{PIN5} & \text{GND※別電源}\\
\hline \text{3} & \text{PIN6} & \text{PIN40|VBUS(5V)}\\
\hline \end{array}
$$

7.MicroPythonスクリプト(Pico)

 Micropythonでコードを作成しました。下記参照しました。参考記事は下記の通りです。

7-1.任意:デバイス接続の確認

 通信はないため、外観チェックだけしておきます。

[IN]
-
[OUT]
-

7-2.コードの設計思想

 設計思想は下記の通りです。

  1. ガス濃度により電圧が変わるため、出力をADCでとれるようにした。

  2. 湿度や温度データによって値が変わるが補正するための追加センサはないため、とりあえずは電圧値をそのまま取得

    • 校正ガスがないため検量線の作成は無し

    • 一応参考レベルで濃度を確認

  3. 他は特になし

7-3.スクリプト実行

 スクリプトを作成し、実行しました。
 アルコールに近づけると濃度(電圧)を検出しました。

[IN]
from machine import Pin, ADC
import time

#アルコールセンサー MQ-3B
adc = ADC(Pin(26))  # GPIO 26:ADC0

while True:
    val_raw = adc.read_u16()  # 0-65535
    val_VOLT = val_raw * 3.3 / 65535  # 0-3.3V
    print(f'ADC raw: {val_raw}  ADC voltage: {val_VOLT:.2f}V')
    time.sleep(1)
[OUT]
ADC raw: 8786  ADC voltage: 0.44V
ADC raw: 8706  ADC voltage: 0.44V
ADC raw: 9778  ADC voltage: 0.49V

8.Pythonスクリプト(Raspberry Pi)

 Raspberry PiはADCがないため外付けADCが必要となります。

https://akizukidenshi.com/catalog/g/g109485/

 Raspberry PiのGPIOのINPUTの電圧閾値はHigh 1.34~3.3Vのはずですので、RPi.GPIOのGPIO.input()を用いれば、ON/OFFは検出可能です。

9.実験:飲酒とアルコール濃度

9-1.酒気帯び運転のアルコール濃度

 せっかくなので飲酒と呼気アルコール濃度の影響を確認しました。参考までに酒気帯び運転になるのは0.15mg/L以上です。

 ガス濃度で換算すると70ppmくらいとなります。

9-2.実験結果

 実際にどのような数値になるのか実験してみました。標準試験条件はセンサーに電源をいれてから48hですが、原理的には温まり酸化スズの表面に酸素が吸着飽和したタイミングなので、ある程度温まったらいけると思います。今回は3hくらい放置しました。
 電圧と濃度の参考値は下図の通りです。

【0本目:ブランクテスト】
 しらふの状態でチェックしました。少し反応しました。

【1本目】
 
1本の時点で最大3V程度でてるため濃度でいうと推定320ppmくらいです。

【2本目】
 
2本目の時点でADCの分解能最大値3.3Vまで到達したので試験終了です。校正してないので正確な数値がわからない+環境温度と湿度の影響も大きいため実際の製品に使うなら補正値は合った方が良いと思います。

10.所感

 簡単な所感は下記の通り

  • シンプルなアナログ出力なので理解は簡単

  • ハードウェアの配線がまだ十分に理解できない。もう制御とか関係ない


参考資料

別添1 Python関係

別添2 技術関係

あとがき

 いったんセンサーは終わり。時間あればスイッチ、リレー、LED、センサーで簡単な検出器作ってからArduino、通信、PLCに移行かな。
 仕事でAI使う機会なさ過ぎてモチベが上がらないので、まずはこっちから進める。


この記事が気に入ったらサポートをしてみませんか?