HANWAEI製のガスセンサーMQ-4とMQ-7を使ってArduinoでガス警報器を製作します。メタンガス(CH4)と一酸化炭素(CO)の2つのセンサーで都市ガスのガス漏れや不完全燃焼を知らせます。
上図は少し分かりにくいですがArduino用のシールドになっています。ユニバーサル基板にピンヘッダを取り付けてホットメルトで固めています。
この情報を用いて製作したガス警報器は生命や安全に関わる用途には使用できません。万が一の時に鳴らなかったとしても、当方は、一切の責任を負いません。
ガスセンサには反応するガスの種類によって様々なタイプがあります。また目的のガス以外も検出します。使い方もセンサーの種類によって異なります。測定結果をppmなどに換算するためには変換式が必要です。さらに初期値を校正する必要があります。校正には専用の設備が必要になるので実験的には省略せざるを得ないと思います。なお、正しい測定が必要な場合は市販の測定器を使用します。
まずは測定したいガスを決めるところから始めます。下表は市販のガスセンサーの種類です。あまり一覧表になっているサイトがないので作成しました。
センサ名 | 型番 | 参考価格 | 対応ガス
LPG・煙センサー
| MQ-2
| 924円
| 天燃ガス、液化石油ガス、人工的なガス、煙
| アルコールセンサ
| MQ-3
| 639円
| アルコール、ベンジン
| メタンガスセンサ
| MQ-4
| 639円
| メタンガス、プロパンガス、ブタンガス
| LPG液化石油ガスセンサ
| MQ-5
| 639円
| LPG液化石油ガス、天燃ガス、都市ガス
| LPG液化石油ガスセンサ
| MQ-6
| 639円
| LPG液化石油ガス、ブタンガス、LNG
| 一酸化炭素ガスセンサ
| MQ-7
| 820円
| 一酸化炭素
| 水素ガスセンサ
| MQ-8
| 890円
| 水素ガス、アルコール、LPG、煙
| |
今回はこの中から(一般的なガスセンサーで必要と考えられる)一酸化炭素用(MQ-7)とメタンガス用(MQ-4)を選びました。ご契約のガスにプロパンガスを使用している場合はメタンガス用(MQ-4)よりもLPG液化石油ガス用(MQ-5やMQ-6)の方が良いでしょう。
下図はそれぞれの写真です。左側の赤いプラスチック製の方が一酸化炭素用で、右の金属性の方がメタンガス用です。
ガスセンサを選ぶときのポイントは@検出可能なガスの種類、A検出したくないガスの種類、B使い方の3つです。@は言うまでもありませんが、見落としがちなのはAです。例えば、台所のガス漏れ検出を行いたいのにアルコールや煙に反応してしまうと使い物になりません。それぞれのガスの濃度とセンサー抵抗値の関係がセンサーのデータシートに記載されています。
グラフを見るポイントは2つあります。一つ目は検出したいガスのグラフの傾きです。グラフの傾斜が大きいほど、濃度に対しての反応が高い、つまり高感度であることが分かります。
2つめは検出したいガスと検出したくないガスのセンサー抵抗値の範囲の差です。それぞれの全濃度の抵抗値の範囲について重複が無いかを確認します。それぞれのガスの濃度は同じではありませんので、一点の濃度で確認しても意味が無く、全濃度の範囲で考えなけれなりません。例えば1000ppmの部分ではメタンCH4と水素H2との間に差がありますが、H2が5000ppmに達するとCH4が100ppmと同じ抵抗値を示してしまいCH4の測定に影響することが分かります。検出したくないガスが10000ppmを超える場合を考慮するかどうかは、このセンサの目的にもよると思います。(実験レベルでは不要と思います。)
これらのセンサーは意外と消費電力が大きいです。また発熱も多く、最初に電源を入れた時は部品を壊したかと思うような臭いも放ちます。一酸化炭素センサーは約350mWです。5Vで70mAですが電源回路は150mAを電圧降下なし(4.9V以上)を保つ必要があります。発熱を抑えるために60秒間、熱して、90秒、冷やすというサイクルを繰り返す必要で、そのための外付け回路も必要になります。メタンガスセンサーは750mWと大きいです。消費電力の多くはセンサーを温めるためのヒーターの電力です。電源を入れてから24時間以上経たないと正しい値にならないようなので、通常は定められた条件で動かしっぱなしにするのが無難です。
始めにArduino用のシールドの製作方法について説明します。下図はユニバーサル基板にピンヘッダをハンダ付けした様子です。写真の上側のピンが2本おきになっているのは、作りやすくするためのコツです。この8ピンはユニバーサル基板のグリッドから半分だけ位置をずらす必要があります。つまりランドとランドの真ん中に端子がきます。すべてのピンを斜めに曲げればよいのですが、そうするときれいに並べてハンダ付けするのが難しくなります。そこで8本のうち3本を抜いた5本でハンダ付けしています。
製作後は部品面側をホットメルトで固定します。その後の製作でピンへの配線のハンダ付けをするたびに溶けますので、ハンダ付け作業中や、作業直後は固まったホットメルトに接触しないように気を付けます。
下図は製作例です。きのこが3本ほど生えているような形になっています。ケースに入れた時にセンサーやブザーが露出するように考えたのと、センサーが高価なので取り外せるようにソケットで受けているので、余計に高さが増しました。左側はXBee搭載用の空き地です。
センサーやブザーはピンソケットに接続するようにしました。一番右にメタンガスセンサ、中央付近に一酸化炭素センサ、右上にブザーを装着するようにしています。またセンサーの電源をオフにできるようにスイッチもつけています。スイッチの右側がセンサー出力信号用の負荷抵抗です。一酸化炭素ガス用が10kΩ、メタンガス用が22kΩです。
上部の中央付近のMOS FET(2N7000)とゲート入力抵抗(1kΩ)、プルダウン抵抗(10kΩ)、コンデンサ(0.1uF)は一酸化炭素センサの電源制御用の部品です。5V供給と1.4V供給の切り替えを行いつつ、1.4V供給時はArduinoのPWM出力で電圧を生成しています。なので、ソフトを入れていない状態でArduinoを動かしたり、Arduinoが暴走したりするとセンサーが壊れてしまいます。
ブザーの真下にあるのはArduinoのポート保護のためのダイオードと抵抗です。本機に衝撃が加わった時に圧電ブザーが発電してマイコンを壊してしまうのを防止します。
以上の説明だけで、ほぼ回路図が分かると思いますが、念のためにパターン面も掲載しておきます。ANALOG IN A0に一酸化炭素ガスセンサ、ANALOG IN A1にメタンガスセンサ、Digital 11にCOガスの電源制御(PWM)、Digital 2にブザーを接続しています。
#define | Arduino | 備考
PIN_CO
| ANALOG IN A0
| 一酸化炭素ガスセンサ
| PIN_CH4
| ANALOG IN A1
| メタンガスセンサ
| PIN_CO_VSS
| Digital 11
| COガスの電源制御(PWM)
| PIN_BUZZER
| Digital 2
| ブザー
| PIN_LED
| Digital 13
| 動作確認用LED
| |
測定結果を表示する液晶の配線はDF ROBOT LCD Keypad Shieldと同じです。しかし、液晶シールドを取り付けることが出来ません。したがって、秋月電子で売られているSUNLIKE SSC1602BSLBを使用し、DF ROBOT LCD Keypadと同じ結線( 8, 9, 4, 5, 6, 7)を行います。※Arduino標準ライブラリで使われている配線(12, 11, 5, 4, 3, 2)とは異なります。しかも、ピン11と2はそれぞれセンサー用の電源制御とブザーに使用していますので標準の接続では動作しません。
部品名 | 参考価格 | 数量 | 取扱い | 備考
一酸化炭素ガスセンサ | MQ-7 820
| 1
| スイッチサイエンス
| Sparkfun製の変換基板つき
| メタンガスセンサ | MQ-4 639
| 1
| スイッチサイエンス
| Sparkfun製の変換基板つき
| LCDキャラクタディスプレイ | 16×2行 SC1602BS-B 500
| 1
| 秋月電子
| HD44780コンパチブル
| 圧電スピーカー(圧電サウンダ) | PKM13EPYH4000-A0 30
| 1
| 秋月電子
| 4KHz用
| 片面ガラス・ユニバーサル基板 | Cタイプ(72x48mm) 60
| 1
| 秋月電子
| 基板の端の方までランドがあるタイプ
| MOS-FET Fairchild 2N7000
| 20
| 1
| 秋月電子
| 10個入り200円で販売
| 抵抗1/8W 10k
| 10
| 1
| 各社
| 一酸化炭素センサ出力信号の負荷
| 抵抗1/8W 22k
| 10
| 1
| 各社
| メタンガスセンサ出力信号の負荷
| 抵抗1/8W 1k
| 10
| 1
| 各社
| FETのゲート入力抵抗
| 抵抗1/8W 100k
| 10
| 1
| 各社
| FETのゲート入力プルダウン
| 抵抗1/8W 100
| 10
| 1
| 各社
| 圧電ブザー保護用の直列抵抗
| コンデンサ 0.1uF
| 10
| 3
| 各社
| センサ電源用、FET用
| 保護ダイオード 1N5231B
| 10
| 1
| 各社
| 5.1V用
| 小型スライドスイッチ1回路2接点
| 25
| 1
| 秋月電子
| 4個入り100円で販売
| ピンヘッダ オスL型 1X40
| 50
| 29/50
| 秋月電子
| 必要な長さ(13+8+8)に切断して使用
| 丸ピンICソケット シングル40P
| 100
| 8/40
| 秋月電子
| 必要な長さ(2+2+2+2)に切断して使用
| 分割ロングピンソケット(42P)
| 80
| 3/42
| 秋月電子
| 必要な長さ(3)に切断して使用
| |
#include |
ガスセンサー測定のArduino用スケッチは下記からもダウンロードできます。XBee子機用のサンプルスケッチも含まれています。XBeeつきガスセンサーシールドは、当ページのセンサーシールドの電源とTX、RXを電圧変換してXBeeに接続して製作します。
ダウンロード:Arduino用ガスセンサー測定スケッチ「gas.zip」(2013/5/2->12/1) |
|
このスケッチでは各ガスセンサーの特性グラフに近い近似変換式を使用してppmに変換しています。単純な直線近似なので誤差は大きいと思います。
また一酸化炭素ガス100ppm時とメタンガス1000ppm時の抵抗値をdefineで定義する必要があります。これはガスセンサの個体によって異なる値となります。しかし、実際の100ppm時や1000ppm時の環境を作り出すのが困難につき、設定や校正のしようがありません。そういった環境設備をお持ちの方がいましたら、一個のサンプルの代表例でも結構ですので、当方にも情報を提供していただけるようお願いいたします。
ハードウェアを製作したらテスターなどで各部の導通を確認したうえ、センサーへの電源を供給しない状態でArduinoにソフトを書き込みます。Arduinoのソフトが正しく動作することを確認してからセンサーの電源を入れて測定を開始します。ソフトが動作しているときは、Arduino本体のLED(Digital 13)が0.5秒ごとにフラッシュ点灯しますので、フラッシュ点灯を確認してからセンサーの電源を入れます。
買ったばかりのセンサーは(前述のように)しばらくの間、臭いを放ちます。これが異常なのか正常なのかを直ちに判断する必要がありますので、動作前の回路チェックは普段以上に重要です。
起動すると液晶に一酸化炭素ガス「CO」とメタンガス「CH4」の空気中濃度「ppm」を表示します。数値は前述のとおり目安です。一酸化炭素は150秒ごとに更新します。メタンガスは0.5秒毎です。それぞれ一定の濃度を超えるとブザー音が鳴ります。
起動してしばらくは正しい値が測定できません。冷え切った状態だとブザーが鳴る場合もあります。測定動作はArduino本体のLEDの点滅でも確認できます。
まずはヒーターが動作しているかどうかを確認します。一酸化炭素センサーのヒーターの電圧はセンサーのH1端子とGND端子の間の電圧です。液晶の1行目の右側に「HEATING」と表示されている間に4.9V〜5.1V、「COOLING」表示の時に約1.4Vとなっていることを確認します。
とはいっても製作した回路ではMOS FETのON抵抗が大きくてHEATING時に4.6Vくらいまで下がってしまいます。気になる方はON抵抗の小さなFETに交換してください。また、Arduinoの電源レギュレータの性能やバラつきで4.9Vを多少下回ることもあります。
一酸化炭素ガスセンサーの動作確認は安全性を配慮すると少し難しいので、まずはメタンガスの動作確認から行います。一酸化炭素側の回路の方が複雑なので動作が不安かもしれませんが、メタンガスのテストに慣れてから実施した方が良いと思います。
一酸化炭素、メタンガスともに引火すると爆発の恐れがあります。また、一酸化炭素は低濃度であっても長時間にわたって吸い続けると一酸化炭素中毒にかかる恐れがあり、非常に危険です。
メタンガスセンサーの動作確認には市販のライターでガスだけをセンサーに向けて放出します。もちろん窓を開けるなど喚起を良くした状態でテストを行います。ガスはあまり近づけなくても鋭く反応しますので、直接、吹きかけるとセンサーが傷むような気がするくらいです。見かたを変えれば、それだけ大量のガスを広範囲に放出しているともいえます。
ライターを使い慣れている人もそうでない人にとっても、普段のライターの使用方法とは大きく異なります。テストの際は換気や火気に対して十分に注意が必要です。。
ガスだけを出すことが出来ないライターも多いのですが、一度、ライターを点火してから火を消して近づける方法は、とても危険ですので絶対に点火しないでください。。
ガスセンサーの実験中にライターを点火することは、テストしたガスが思わぬ場所に残留していて引火する危険を伴います。ガス漏れ状態でテストするわけですから、火気厳禁の状態を必ず守ってください。
下図はPanasonicのガス警報器「ガス当番」のオプションとして発売されているテスト用・点検用ガスです。価格も定価105円と安価なので、安全第一で本品を使用することを強くお奨めします。
次に一酸化炭素センサーの動作確認です。これは屋内では無く屋外で実施します。その理由は作業のミスによる爆発の危険性が高まるのと、意図的に不完全燃焼を発生させるので一酸化炭素中毒の危険性を伴うからです。
くどいようですが、製作した本機を屋外に持ち出します。電源はUSB充電用モバイルバッテリなどが便利です。9Vの006P電池では消費電流が得られないので動作しない場合があります。片側のセンサーを外せば動作するかもしれません。
一酸化炭素を集めるためにガラス瓶を用意します。ジャムの空きビンくらいが良いと思います。また一酸化炭素を発生するためにライターを使用します。ガラス瓶を逆さま(開口部が下側になるよう)にして、開口部の下にライターを近づけて点火します。必ず点火していることを確認します。点火していない場合、すぐに中断してガラス瓶の中のガスが抜けるのを待ちます。※ガスがたまった状態で再点火するのは危険です。
始めはガラス瓶の中で完全燃焼しますがガラス瓶中の酸素が減ってくると不完全燃焼に移行します。炎の色が変わってきて、やがて炎が小さくなります。炎が消える瞬間にライターのガスも止めます。すぐに止めないと一酸化炭素がライターのガスに押しのけられて抜けてしまいます。こうして生成した一酸化炭素入りのガラス瓶を逆さまのままセンサーに覆ってテストを行います。
普段、警報器として使用される場合も危険を伴います。何らかの不具合や偶発的な問題でArduinoが停止したり、センサーやブザーが故障したりする可能性があります。シールドやセンサーの接点の接触不良でならない場合もあります。そういった場合に、一酸化炭素濃度の異常やガス漏れを検出できずに事故が発生する危険性は認識をしておく必要があります。
したがって、必ず市販のガス当番などのガス警報器との併用が必要です。製作したものは、市販品の補助的な役割にしてください。例えば、日常の一酸化炭素濃度の履歴から、普段の生活における一酸化炭素中毒に対する危険性を検討するなどの用途に用いることが出来ます。石油ストーブや石油ファンヒータ、ガスファンヒータなどから発生する一酸化炭素に対して、普段から適切な換気が行えているかどうかをチェックするなどの用途です。測定値が誤っていたり警報器が鳴らなかったりしても生命にかかわる事故が発生しないような使い方を想定しています。想定内、想定外を問わず、いかなる事故や損害を被った場合であっても、当方は一切の責任を負いません。
・TECHNICAL DATA MQ-4 GAS SENSOR (HANWAEI ELECTRONICS)
・TECHNICAL DATA MQ-7 GAS SENSOR (HANWAEI ELECTRONICS)
・Arduinoをはじめよう (Massimo Banzi著 船田功訳 オライリージャパン)
・Arduino 日本語リファレンス http://www.musashinodenpa.com/arduino/ref/
・スイッチサイエンス http://www.switch-science.com/ (通販サイト・価格情報)