← ポチっていただけると嬉しいです
Elecお買い物

CO2センサーモジュールを買ってみた

キャンプとかだと一酸化炭素(CO)センサーになるんでしょうが、一般家庭だと二酸化炭素(CO2)センサーの方が必要なのかもしれません。

厚生労働省も1000ppmを超えないようにっていう指標出してたりしますし、経済産業省も二酸化炭素濃度測定器の選定等に関するガイドライン なんてものを出してたりします。

https://www.meti.go.jp/covid-19/index.html#10r

で、そのガイドラインによると光学式(NDIR)を推奨されています。
しょぼいやつだとアルコールに反応したりするようですが、光学式であればアルコールごときには反応しないらしい。

光学式ってのは赤外線を照射しどれだけCO2が吸収されたかってので濃度を測るようです。

既存品だとこういうのをよく見かけますね。

どこかのラーメン屋さんでも最近見かけた記憶があります。

こういったちゃんとした測定器を買うと高いので、センサのみの部品を買ってみました。
一応エンジニアなので作る楽しみも欲しいですので。

ググると一番良く引っかかるのがWinsenのMH-Z19*っていうデバイス。

Winsenってのは中国河南省鄭州市にある会社です。ガスセンサー専門の会社なのかな?

Winsen Gas Sensor_CO2 Sensor_Air Quality Sensor_Dust Sensor_CO Sensor-Winsen Electronics
Zhengzhou Winsen Electronics Technology Co., Ltd.-Professional gas sensing solution supplier with over 30-year gas senso...

秋月ではMH-Z19Cってのを取り扱ってますね。
Amazonは秋月より高い。
アリエクもありました。

ざっと調べてみたいくつかのラインナップの比較です。

小さな違いはありますが正直わざわざラインナップ分けるほどのものなのか?って感じがします。
ひょっとしたら全部現行品じゃなくてディスコンになって置き換わっている製品なのかもしれません。

MH-Z19Eの購入

で、私はアリエクからMH-Z19Eを買いました。
安いですし中国製なんで中国から買うのがいいでしょ。

https://s.click.aliexpress.com/e/_DEwWI3b

安いって言っても1000円超えてしかも送料までかかってトータルで1577円もかかったのでワタシ的にはかなり高いイメージです。

それでも国内で買うより安いです。ってことはこのモジュールは本当に高いものなんでしょうね。

ピンヘッダが出ててピンソケットに刺さるピンタイプとハーネスで引き出すターミナルタイプってのがあります。
私が買ったのはピンタイプ。ユニバーサル基板にそのまま挿せる方が便利かなぁって程度で深い意味はありません。

4月10日注文で4月18日着。最近は早くていいですね。


※この白いテープな部分が検出部のようです。剥がしても圧力をかけてもいけません。

メーカーのProductsページからデータシートが落とせます。

MH-Z19E NDIR CO2 Sensor for HVAC and IAQ--Winsen
Winsen Electronics, research, design, and manufacture NDIR CO2 sensor, infrared carbon dioxide sensor module for HVAC in...

MH-Z19Eの制御方法

使い方ですが、まぁググれば色々とでてくるのでまぁ使えるかと思いますが、ちゃんと使うにはメーカーに聞かないとわからない部分はいくつかありました。

↑で紹介したProductsページにあるデータシートには測定値の読み出し方法とか書いてないんです。

MH-Z19Cとかの方のデータシートにはちゃんと書いてあります。

MH-Z19C NDIR CO2 Sensor for HVAC and IAQ--Winsen
Winsen Electronics, research, design, and manufacture NDIR CO2 sensor, infrared carbon dioxide sensor module for HVAC in...

ただし、PWMは係数が、UARTはコマンドが違う可能性があります。
UARTのコマンドでいうとMH-Z19Cだと
0x86:値読み出し
0x79:セルフキャリブレーション
の2つのコマンドが載ってます。

MH-Z19BだとUARTはサポートされているんですが、データシートにはPWMの記載のみ。

商品ページが見つからないMH-Z19はデータシートだけ見つけられます。

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiiu4v648P-AhXKc94KHYQDDsoQFnoECA8QAQ&url=https%3A%2F%2Fwww.winsen-sensor.com%2Fd%2Ffiles%2FPDF%2FInfrared%2520Gas%2520Sensor%2FNDIR%2520CO2%2520SENSOR%2FMH-Z19%2520CO2%2520Ver1.0.pdf&usg=AOvVaw2ff7vpJgk0UjiD-bJ7U2hy

これによると
0x86:値読み出し
0x87:キャリブレーション(ZERO)
0x88:キャリブレーション(SPAN)
となっています。

値読み出しは変わらないと思うのですが、キャリブレーションがコマンドでできるのかどうか?ってのが不明ですね。

ちなみにメーカーに聞いた際には0x86しか教えてくれませんでした(後述します)。

このメーカーとのやりとりですが、問い合わせて最初はセールス担当かな?って人とやり取りして、最後にはプロジェクトマネージャーさんが出てきました。
どちらもMsです。中国は女性進出は進んでいるんでしょうか。

MH-Z19Eの使い方

電気的な使い方ですが、
Vin-GND間には電源5Vを与えて、
TX/RXからUART通信を行うか、PWM端子から出てくる波形の幅を見るか
の2つの方法で測定できます。
Hd端子をLowに7秒以上落とすことでキャリブレーションできますので測定前にはキレイな空気の環境でキャリブレーションを行っていたほうがいいでしょうね。

で、実際にはモジュールにはSR、Vo、AOTといったピンがあり、データシートには何にも書いてありません。
一般的にデータシートには使わないピンでもNCにするとかVDD/GNDに接続するとか、空きピン処理を指定しているのが普通だと思うんですが、まったく記載がないってのも困りますよね。
で、この件についても聞いてみましたが、全てテスト用で無視しろとのことなのでNCでいいんでしょう。

MH-Z19E 波形確認(PWM)

マイコンで使うにはUARTで見るのが楽なんだと思います。
メーカーの人もほとんどの人がUARTで制御しているようですって言ってました。

ただ、UARTが余ってて表示デバイスのあるマイコンキットが手元になくて、ラズパイで使うには電力消費が大きすぎるしでかすぎて使い勝手が悪いので、最終的にはなんらかのマイコンキットでも買ってこようと思います。

実を言うとEFM32GGという昔もらったキットがあるんですが、開発環境に馴染めなくてあまり使いたくないんです。サンプルでLEDやLCDの制御はできるんですが、例えばLEDblinkのプロジェクトで始めてそこにLCDを使えるように追加するってことがうまくできない。

手元にある昔もらったキットをいじる中で色々と試した中では開発環境としてはSTM32CubeIDEが抜群に使いやすいと思ってますので、STM32+LCD(OLED)あたりでCO2計測器を作ろうと思ってますが、私のことなのでこれまたいつになるかわかりません。。。

いつになるかわからないのを待っている前にとりあえず動作確認だけでもしておこうと、安定化電源で5Vを与えてPWMピンをオシロで測定してみました。
電流プローブも借りれたのでついでに電流も測れました。

電源を入れると数秒後に波形が出始めます。
なのでUARTのみとかPWMのみとかっていう設定はないんだと思います。

まず何もしない普通の環境での波形

仕様上は周期は1004ms±5%。
波形上997msなので十分仕様内です。
PWM出力電圧レベルは3.3Vです。
High期間は119ms
Low期間は878ms
2000x(High期間-2ms)÷(周期-4ms)
で計算すると236ppm

あれ?ひょっとしてキャリブレーションしなかったのがいけないのか。
HdピンをGNDに接続して10秒くらい待ってこれでキャリブレーションできたんでしょう。
再度測定

もっと細くなりました。

998ms(82ms+916ms)
これで計算すると160ppm うすいーーー

問い合わせの結論から言うと2000という係数は2000ppmモデルが使うもので、私の買ったのは5000ppmモデルなので5000を使うそうです。
5000で計算すると402ppmなのでまさにそのとおりです!

仕様に

って書いてあったんで、てっきりピンやコマンドでレンジを切り替えれたりするのかな?って思ってたんですがどうやら違っていて決め打ちで買うようです。

私の買ったモデルは裏にレンジが書いてありました。

ちなみにアリエクの商品説明には

と書いてありますが、Optionalっていう表現もありますし、まぁ解釈の仕方でどうとでもなりますかね。
こんなことで怒ってはアリエクで買い物できません。
5000ppmまで測れれば十分でしょう。

で、こんな感じで約1秒単位の周期で波形は出続けています。

2パルスに一回ノイズらしき波形がありますよね。
電流(紫)も測定するとこんな感じになります。

測定時の電流なのかな。2秒に一回測定しているってことなんでしょうか。
ちなみに2秒に一回くらいこの部分がオレンジに光ってました。

赤外線LEDだとしたら見えないはずなので単なる測定してますよランプの意味なのかな?
まぁLEDの消費電流なんてしれたものなので、それと電流の波形への影響はないんでしょう。

で、PWM波形と電流の位置(位相)は測定する度に違ってたので
測定とPWM出力は非同期なのかもしれません。

で、この電流ですが、ラッシュ時を拡大するとこうなります。

900mA近くまで流れて、それから250mA程度になり、画面外ですが100mAで300ms位あって0に落ちるって感じです。
上記のオシロ波形では40us幅なのでそれなりに突入電流の幅はあるって思うんですよね。

スペック的には
平均 40mA未満
ピーク 125mA
とのことですが、平均はともかくピークは全然嘘っぱちですよね。
これもメーカーに聞いてます。後述しますが問題ないとのこと。

で、息を吹きかけてみるとこうなります。
だんだんとDutyが変わっているのがわかりますかね。

一部を拡大

で、この波形だと985ms中Hは622msなので5000を係数として計算すると3160ppmとなってるってことです。
ちゃんと機能してそうです。

Winsenとのやりとり

メーカーのセールス担当Tinaさん。
プロジェクトマネージャーのLucky Liuさんとやりとりした記録です。

(データシートにないので)どうやって制御するの?

以下の2つの図を送ってくれました。

MH-Z19E用の制御を記載したデータシートって無いのかな?

これをみるとキャリブレーションのコマンドは無いので、コマンドでのキャリブレーションはMH-Z19Eでは出来ないのかもしれませんってこの時は思いました(これも後述します)。

で、これだとPWMの計算に係数として2000を使ってますので、実際の波形をつけて、

こんな波形が見れて、計算するとおかしいんだけど?

あんたのモデルは5000ppmタイプなので5000を使ってね!

って帰ってきたわけです。

メーカーが言うには
普通は5000ppm品なんだそうです。2000や10000は特注品扱いってことみたい。

で、

最大電流がスペックに比べてでかすぎるんだけど?

Regarding sensor peak current, we are testing with multimeter.
It is possible to get higher peak when using oscilloscope. But time is very very short.

意訳すると変に伝わると思ったので原文そのまま書いてますが、
オシロ使うと高い値がでるのあたりまえやん。でもめっちゃ短時間だから問題ないねん。
って返ってきたわけです。

いやぁこれにはびっくり。

メーカーの評価でマルチメーター使ってるんだ。それでスペック決めてるのか。
おぃおぃそんなのありかよーって感じですね。

しかもめっちゃ短時間?

最大が900mA
800mAでは8us
600mAでは20us

は短時間っていうのかぁ。うーん。まぁ短いってのは曖昧な言葉だからなぁ。

どうなんでしょうね。
たとえば、200mA程度の電源ICだと下手したら電圧ドロップとかシャットダウンとか起きたりしないのかなぁ。
余裕のある電源にしてないとだめかなぁ

ただ、測定してても毎回900mAいくわけじゃなくてばらつきがありそうです
何によるのかはよくわかりませんけどね。

Webで手に入るデータシートは頼んでもないのに最初に添付されてきましたが、
その後の何度かのやり取りで
このデバイスが2000ppmタイプなのか5000ppmタイプなのかコマンドでわからないの?って聞いたら
ようやく
MH-Z Series CO2 Sensor Communication Protocol V1.0
っていう資料が送られてきました。

質問に対する直接な回答ではないんですが、一応コマンド一覧が載ってました。

これを見ると他のデバイスのデータシートとはまた違うコマンド一覧となっています。
で、MH-Z19Eはいったいどのコマンドをサポートしているのよ?
このドキュメントの4つのコマンドは全部網羅しているの?
(0x9Cは0~15万ppmなので多分できないはず)
の回答は

Yes, all the commands are available.

えーほんとなのかなぁ。。。うーむ。。。
またUART使えるようになったら試してみよう。

ということで、回答内容には疑問点は多くありますが、基本的にサポートは迅速に行なっていただけてます。

 

さて、本格運用にはUART使用で、18650が1個程度でそれなりの時間動くキットにするか、USBで動くキットにするか考えます。

次の報告はいつになるのかわかりませんが、気長にお待ち下さい。

コメント

タイトルとURLをコピーしました