Parts:Sensor:MH-Z19C
Name MH-Z19C メーカー Winsen Datasheet MH-Z19C MH-Z19B (コマンドによるSelf Calibrationの部分だけ参照)
MH-Z19 (コマンドによるSelf Calibrationの部分だけ参照)
Accuracy CO2 ±(50ppm+5%) Temp ±---℃ 3D data f3d(Fusion360), step Driver mhz19_uart ※ESP32はHardwareSerial-UART2 販売店 日本 秋月電子通商 \2480 Amazon \2799
中国 Aliexpress winsen \2272/5p, \2360/1p Aliexpress mili technology $15.7/1p
Pin Function
仕様の補足
暖機時間 (Warm-up time)
購入直後の最初の起動時 24時間 条件 常温
毎回の起動時 1分(この間は出力データもデタラメな値を示すので破棄する必要がある)
CO2測定間隔
測定間隔 2秒 PWM出力間隔 1秒 ただし次の測定値が確定するまで前の値を出力する。
デジタル出力 随時 ただし次の測定値が確定するまで前の値を出力する。
セルフキャリブレーション
センサーが一定期間連続して動作した後、検出したCO2濃度に応じて自動的にゼロ点を校正する機能
- 校正周期 :電源投入時から 24 時間毎
- 校正するCO2濃度: 400ppm
- 想定する用途 :オフィス環境、家庭環境
- 適さない用途 :農業用温室、農場、冷蔵倉庫
拭き取り
ケースを拭き取れる溶剤 なし 拭き取り方法 なし
外装の材質 非公開フィルタの材質 非公開
※メーカーは拭き掃除を許可していない。
部材の情報
ケース 非公開 コネクタ出しタイプのコネクタ品名 非公開
- ※推測:JVT connector
コマンド
コマンドによるキャリブレーション機能入り。 そのコマンド仕様はMH-Z19/B等過去機種の仕様を参照。
電源電圧
MHZ19Cは2秒周期で0.4秒のランプ点灯を繰り返す。
精度保証範囲 5±0.1V 動作範囲 5±0.5V
- ランプが点灯する瞬間の大電流が流れるため、5V電源電圧が10ms程度の間Δ0.3V以上dropする事がある。
- ここで言う電圧範囲は、どのタイミングの値の事を言っているのかも非公開。
CPU
内部にはCPU(16MHz)が入っている。
経験からの対策
通信Error
Core Debug LevelをDebug/Verboseとすると、通信するたびにDebug情報としてエラーの表示が現れる。
[E] addApbChangeCallback(): duplicate func=4000F8B7C arg=3FFBDF14
調査結果
mhz19_uartで通信するとRead/Write両方で上記エラーが毎回発生するけど機能上は問題ない。作者HP
対策
調査中。
ノイズ
症状
- ESP32とMH-Z19CをUART&PWMの配線で接続すると、ESP32が定期的にリブートした。
- リブートするのは起動から必ず一定の時間になっている。
調査結果
- ・起動からリブートまでの経過時間:100秒。1秒の誤差もない。
- ・電流との相関:CO2測定のためのランプ点滅周期とは無関係なタイミングでリブートする。
- ・Error表示(UART):リブート時のシリアル出力に出るメッセージでは、Flash Readができない記述になっている。
- ・効果的な対策①:ESP32のTXD端子出口と、ESP32のPWM受信端子に直列に100Ωを入れると問題が消えた。
- 反射波が影響している可能性が高い。
- ・効果的な対策②:ESP32との接続配線を全て外すと問題が消えた。
原因の推測
- MH-Z19Cとの通信部分に外部からのノイズが乗りやすい。
- MH-Z19Cが不要なノイズを作っている可能性が高い。
- Wifi/Bluetoothかもしれない。(使ってないけど)
対策
- ノイズが乗っても共振や反射波で誤動作レベルになりにくいように、終端抵抗を入れてみる。
- ESP32との通信部分(送信側)の配線は全て両端(ESP32側/MH-Z19C側)に100Ωを入れて反射波を抑える。
結果
- この対策で問題が起きなくなった。
- ※ただし、確認済の機能や評価条件が少ないため、まだ要確認。
電源電圧の低下
症状
- MH-Z19C内のランプが光るタイミングで+5.0V電源電圧が約2V付近まで10μs程度の間だけ低下する。
- この時の電源はXCL103モジュール(秋月)+入出力に330μF追加。
調査結果
- ・電圧低下のタイミングは常にランプが光り始める時。
- ・ランプの駆動は、2秒周期で毎回0.4秒だけ発光する。Max125mA。
- ・電源モジュールをTDK製のCC10-0505SF-Eに変更するとドロップ時間が200ms程度にまで伸びて悪化した。
- ・瞬間的な電流消費対策:電源IC(XCL103)の手前にインダクタ100μHを追加すると
- CPU側の電圧ドロップはなくなったが、Rebootは改善されなかった。
- ・起動時にRebootするのはENにReset-IC(2.9V)を入れたのが主な原因だった。
- ESP32のENにReset-ICを入れるとBootメッセージがUARTに出力されたり色々な事が起こるため除去。
- ・XCL103の入力側に330μH+470μFを追加するとXCL103が起動しなくなった。
- 追加条件を変えてみた。
問題なかった組み合わせ
○:異常なし ×:Reboot10μF 100μF 330μF 470μF 0μH ○ ○ × × 10μH ○ ○ ○ 33μH ○ ○ 100μH ○ ○ ○
- 100μH以下以下であれば問題ない。
- ・PCのUSBポートから電源を取っていたのを、単独USB充電器に変更してみたが、変化なし。
- つまり、PCの電源起因の可能性は低い。
- ・USBケーブルを15cmまで短くしてみたが、変化なし。
原因の推測
- ①スイッチング電源は電流0からの応答ではレスポンスが極端に悪化する特性がある。
- その場合、微量な電流を常に負荷に流すようにすると改善されるはず。
- ②入出力のコンデンサが大きいとチャージする時間が長くなるため、レスポンスが落ちて戻りにくくなる。
- ③XCL103の短絡保護回路が働いて出力を止めている。
- ④ESP32に追加で付けたReset-ICが誤動作している。
対策
- ①漏れ電流:MH-Z19C用の+5V電源(+5VP)にLEDを付けて微弱な電流を流す。
- 白LED+100Ωで17.87mA(±5%で 17.13~18.69mA)が常に流れる。
- ②電流立ち上がりで高周波ノイズを除去しやすいように、
- MH-Z19C手前のパスコン(XCL103出力側)をCE10μF×3に変更してみる。
- ③XCL103入力インダクタ・コンデンサを減らして、安全動作領域になるように変更する。
- ④Reset-IC除去。
結果
- ① 問題なく動作した。
- ② 問題なく動作した。
- ③ 10μH+470μFが最もドロップ電圧とドロップ時間が少なかったため最適。
- ④ 起動時にRebootしなくなった。
参考資料
他のCO2センサーとの比較表 https://canair.io/docs/co2_comparative.html
販売店
秋月電子通商 2480円
Winsen社製品の正規取り扱い店。 長期供給保証なし。在庫のみ。量産非対応。
技術サポート不可。(技術サポートは中国Winsen社が担当)
注意事項
Aliexpressに類似品が多く出回っている。仕様が全く異なるため要注意。
Winsen製であっても似たパッケージ・似たSPECが多い。
購入時には、pinタイプ/コネクタタイプ、測定範囲(400-5000ppm / 400-2000ppm)を選ぶ。
ただし、コネクタの品名は非公開。