ラズパイで二酸化炭素濃度を測定(2)ー二酸化炭素センサーMH-Z19B | virt_flyのブログ

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

↑二酸化炭素センサーMH-Z19B

キャリブレーションに困惑

コロナ禍のため、密を避け換気が求められる今日この頃。とは言え、寒いとついつい換気も億劫になりがちです。二酸化炭素濃度とコロナウイルスの関連性は充分に証明されているわけではなさそうですが、換気のタイミングを知るには有用とのことで、注文していたのがCO2センサー。

 

前回のブログで述べた年明け早々の旅行で、新幹線の車内のCO2濃度が測れたのは、このセンサーが年末には届き、試してみることができたから。

 

選んだCO2センサーは、比較的低価格で、またキャリブレーション(注参照)や安定するまでの時間の点で扱いやすく見えるMH-Z19。CO2の赤外線吸収特性を利用したNDIR検出方式によるものと見られます。購入したMH-Z19は一番価格の安かったものにしたためか、他の製品と比べると形状で円形の突起がなかったり、端子の表記が違っていたりして、パッチもん(イミテーション)の可能性がないではありません。

 
測定は、MH-Z19つないだRaspberry Pi Zeroに、必要なpythonパッケージをインストール、スクリプトを書いて実行します。簡単なメモを次回に掲載します。
 
●室内の二酸化炭素濃度についての基準
 

さて、参考にすべき二酸化炭素濃度に関しては、新型コロナウイルス感染症厚生労働省対策本部がまとめた推奨される換気方法によれば、「ビル管理法における空気調和設備を設けている場合の空気環境の基準」にもとづき、1,000ppm以下とされます。800ppmを超えたら換気、1000ppm以上は至急換気と考えるのが良さそうです。なお、温度や湿度の考慮も必要になりますが、ここでは割愛します。詳しくは厚生労働省の「冬場における『換気の悪い密閉空間』を改善するための換気の方法」が参考になります。

 

●実際の測定値

 

それでは、実際の測定値を見てみましょう。

思っていたほど高くなりません。換気をしていない8畳間に一人で居ても500ppm台前半という値です。さすがに息を吹きかけると1000ppmや2000ppm台を超すのですが、同じ状態でパソコン作業を続けていても部屋のCO2 濃度が大きく変わらず、布団を持ってきて一晩寝た後でも800ppmには達しなかったりで、正しく機能しているのか心配になります。そんなものなのでしょうか。

 
いっそのこと人が多くいる場所で測って見ようと、前回述べたように新幹線の車内で測ってみたり、昨日も200人ほど集まったホールで測ってみたのですが、前者で500ppm前半、後者で600ppm前後と変わりばえしない数値ばかり。パッチもんを掴まされたのではと疑いも湧いてくるというもの。
 
今一度、起床後の部屋のCO2濃度の変化を調べてみました。その結果が次のグラフです。
 
重大なことに気づきましたが後にふれるとして、まずグラフを見ての考察です。
 
起床直後は、800ppm余あったCO2濃度が徐々に下がって行きます。昼間より夜間の方がCO2濃度が高いのは昼間に光合成をする植物も夜中は呼吸するためCO2濃度が高くなる影響と見られます。本来それほどの差ではなさそうですが、工場地帯でもなく、郊外の広大な住宅街であり、草木以外の要因は思い浮かびません。測定開始後1時間経過で10分間換気、一気に濃度が下がります。窓を閉め換気が終了した時点で一旦上昇しかけた濃度も、寒い部屋におれず無人となったらまた少し低下、その後部屋で測定値をモニターしている間は、わずかばかりでも上昇したのは、呼気の影響でしょう。残りの30分では、単時間の出入りなど戸の開け締めで一進一退となったものと見られます。この限りでは、順調に計測できているように見えるのですが…。
 
グラフ中、線の途切れはデータの欠損です。通常、センサーのつなぎわすれや、ジャンパー線の抜けがあるとnull値が返されます。これ以外にRaspberry Pi Zeroに特有と思えるのが、処理能力の遅さ。例えばデータをメールに添付して送るために、送信フォームを開こうとクリックしてもなかなか開かず、競合してかCSVファイルはnull値になるようです。Raspberry Pi Zeroはあくまでも処理能力に劣るマイコンボードであって、パソコンのように扱われるのは荷が重いと考えるべきなんでしょうね。
見つかった問題は、換気で最低となったCO2濃度です。自然界の外気のCO2濃度400ppmを大きく下回る
314ppmとなっています。何らかの要因でセンサーが誤作動でもしたのでしょうか。はたまたキャリブレーション(校正)に問題があったのでしょうか。
 
●キャリブレーション
 

厚生労働省の「冬場における『換気の悪い密閉空間』を改善するための換気の方法」には、

二酸化炭素濃度の測定には「NDIRセンサーが扱いやすい測定器」であるが、「製造者等によって定期的に校正されたもの」の使用が望ましく、「校正されていない測定器については、あらかじめ、屋外の二酸化炭素濃度を測定し、測定値が外気の二酸化炭素濃度(地域、季節、時間によって異なるが、415ppm〜450ppm程度。)と大きく乖離しないことを確認」することとされています。

 

キャリブレーションとは、CO2濃度の測定のゼロポイントを外気のCO2濃度に合うよう常々測定器の校正を行うこと。地球温暖化の原因となるCO2濃度は年々上昇していて、すでに400ppmを上回っているものの、MH-Z19では400ppmをゼロポイントとしています。

 

MH-Z19のキャリブレーションは、400ppm未満(の屋外のもしくはよく換気した室内)で少なくとも20分間動作の上、HDピンをGNDに7秒以上接触させる、というわかりやすい方法を実行。屋外では木枯らしのせいでチリが巻き上がるのか(センサーはカバーとフィルターで覆われていますし、風が強いほど拡散されてCO2濃度は低くなるはずですが)、数値は400や420どころでなく、困ったものの低目に出るのは覚悟で妥協したものでした。

 

ところが、測定値に一度きりですが300そこそこのありえない値が出たわけですから、キャリブレーションが高すぎたものか? 室内でも400ppmの時がありましたし。

 

そこで、わかりやすい方法以外の2つのキャリブレーションの方法を今一度よく調べてみたところ、AB C logicというのは自動校正のAらしく、インストールしたpythonパッケージを確認するとこれがONになっているではありませんか。24時間計測して一番低い濃度の時を400ppmと自動的にみなすわけですから、それならいつも屋内で測定しているうちに、キャリブレーションされたと考えてもおかしくはありません。

 

それなら、キャリブレーションをやり直せばよいのではと、とりあえず屋外で測定してみたところ、なんと今度は外気で600ppmという値がでるのですからびっくり。これでは、ゼロポイントが高いのやら低いのやらさっぱりわかりません。キャリブレーションは、外気の直接の影響がない、よく換気できた室内で行ったほうがましかもしれませんね。

 

屋外のほうがCO2濃度が高い納得できる理由はないものの、測定器が壊れているとも思えず、低い異常値もまれな誤動作による不具合とすれば、おおよそ測定は正しく行われているのかもしれません。いずれにしてもキャリブレーションは要注意で、ABC logicがONになっていることに留意しておいたほうがよさそうです。