湿度センサーの検証とキャリブレーションで精密測定を実現
あなたの湿度センサーはどのくらい正確ですか?このプロジェクトで確かめてみましょう。
湿度センサーは一般的で、比較的安価で、多くの種類があります。データシートを確認し、インターフェースで使用し、「値が妥当そうなら」その結果を受け入れてしまいがちです。
このプロジェクトでは、湿度センサーの精度を検証するために一歩踏み込んだ方法を示します。また、センサーキャリブレーションの一般的な方法を説明し、その方法を適用して湿度測定の精度を向上させます。
プロジェクトで使用したテストセットアップ(左から、Quark D2000マイクロコントローラーボード、センサーインターフェース、マイクロ環境内のHIH5030センサー)。
プロジェクトの基礎
センサーの精度を確認するには、取得値を参照標準と比較します。湿度センサーの精度確認には「飽和塩」法を使用して基準を作ります。簡単に言うと、特定の塩(食塩や塩化カリウムなどのイオン化合物)を水溶液に溶かすと、既知の湿度の大気が生成されます(参照PDF参照)。
これらの化学的特性を利用して、既知の相対湿度(RH)パーセンテージのマイクロ環境(参照標準)を作成し、密閉されたジャー内でセンサーを読み取ります。具体的には、密閉ジャー内で溶液を作り、接続されたセンサーをジャー内に配置。その後、センサーを繰り返し読み取り、値を記録します。
複数の異なる塩を使用して手順を繰り返し、それぞれ異なる相対湿度を生成することで、テスト中のセンサーのプロファイルを開発できます。各マイクロ環境の相対湿度が既知であるため、センサー読み取り値のそれら既知値からの偏差を評価し、センサーの精度を評価できます。
偏差が大きいが克服可能な場合、ソフトウェアで数学的キャリブレーション手順を適用して測定精度を向上させることができます。
安全性について
このプロジェクトで使用する化学薬品を責任を持って取り扱うことが不可欠です。
- 使用する各化学薬品の安全データシート(SDS、またはMSDS)を読むこと(以下に各塩のSDSリンクを提供、各塩とその安全な取り扱い手順について文献検索も可能)。
- 化学薬品を吸入または摂取しないこと。
- 化学薬品が皮膚や目に触れないようにすること(手袋とゴーグルを使用)。
- 食品調理エリアで溶液を調製しないこと。
- 化学薬品を適切に保管すること。
- 溶液と調製に使用したすべての器具を適切に廃棄し、偶発的な曝露を防ぐこと。
- 開始前に、偶発的曝露時の対処法を把握しておくこと(SDS参照)。
使用した塩
一般的に、参照標準として生成できるRH大気が多いほど、テスト中のセンサーの特性評価が向上します。しかし、実用的な意味では常にリソースの限界があります。このプロジェクトでは4つの参照標準を使用し、RH値の範囲をカバーする塩を選択しましたが、安全性、入手性、コストも考慮しました。
以下の塩を選択。食塩(塩化ナトリウム)の場合、地元の食料品店で安価に純粋なコーシャーソルトを入手。その場合、ヨウ素や防結剤などの添加物を含む食塩は避けてください。
| 塩 | % RH (25℃) | 入手先 | 安全データシート |
|---|---|---|---|
| 塩化リチウム | 11.30 | Home Science Tools | LiClのSDS |
| 塩化マグネシウム | 32.78 | Home Science Tools | MgClのSDS |
| 塩化ナトリウム | 75.29 | 各種(本文参照) | NaClのSDS |
| 塩化カリウム | 84.34 | Home Science Tools | KClのSDS |
マイクロ環境の作成
水溶液から安定したRHを作成する規格も存在します(ASTM E104-02(2012)参照)。私の作業台、おそらく皆さんのも公式試験室ではありませんが、規格の仕様にできるだけ近く従うことは有益です。
このプロジェクトで提示される結果は注意深く収集されていますが、テストされたセンサーの数が少なく、それらが異なる経年劣化と使用履歴を持っていたことを考慮し、特定ブランドのセンサーの精度に関する全体的な品質声明を反映または示唆するものではないと理解してください。
各塩について、非常に湿った砂のような濃度になるまで蒸留水を加えてスラリー状の混合物を作成。大さじ4-5杯の化学薬品と大さじ1杯の蒸留水を試せますが、少し実験が必要かもしれません。
密閉性の高い小さなジャーで混合物を作成。ガラスでもプラスチックでも、内部の大気を保持できれば問題ありません。ジャーの蓋に小さな穴を開け、センサーインターフェースとマイクロコントローラーへの接続ワイヤーを通します。接続されたセンサーを混合物から約0.5-1.0インチ上に配置。センサーが溶液に直接触れないよう注意してください。接続を固定し、蓋の穴を密封するために、簡単に取り外せるコンタクトパテを使用できます。
最終読み取り前に十分な平衡化時間を確保することが重要です。選択したテストケースで最大6時間、毎分読み取りを行って経験的にこの問題をテストしました。私の経験ではこれは必要以上に長く、各センサーと塩に対して90-120分の平衡化時間で落ち着きました。最後の5回の読み取り平均を最終値として使用。すべてのケースで、5つの値にほとんど差異はありませんでした。
また、すべての読み取りは約25℃(±1℃)の周囲温度で行われ、各標準のRH値は25℃での値を使用(値はこのPDF参照)。
ナトリウムクロリドを含むマイクロ環境内のキャリアボード上のHIH5030センサー。
ハードウェア
マイクロコントローラー
このプロジェクトでは、Quark D2000マイクロコントローラーを使用してセンサーをインターフェース接続します。D2000はI2Cとアナログ-デジタルインターフェースを持つ3Vボードです。
ただし、適切なインターフェースを持つほとんどの他のマイクロコントローラーでも使用可能です。
センサーインターフェース
プロジェクトでテストしたセンサー;A) HIH8121、B) HIH5030、C) DHT-22 (AM2302)、D) HIH6030(キャリアボード上)。
4種類の湿度センサーをテスト:DHT-22(2個使用)、HIH5030、HIH6030、HIH8121。以下の回路図は各センサータイプ用のシンプルなインターフェースを示し、リンクされたデータシートを参照すると回路の背景情報が得られます。
- DHT-22は独自シリアル出力を持つ温湿度センサー
- HIH5030はアナログ(電圧)出力の湿度センサー。このセンサーのインターフェースは、インピーダンスマッチングのためにユニティゲイン構成のオペアンプを使用。
- HIH6030とHIH8121はI2Cプロトコルを使用する温湿度センサー
DHT-22からD2000へのインターフェース。
DHT-22 BOM: U1, DHT-22センサー; R1, 4.7kΩ抵抗; C1, 0.1µFコンデンサ。
HIH5030からD2000へのインターフェース。
HIH5030 BOM: U1, HIH3050センサー; U2, MCP601Pオペアンプ; C1, 1.0µFコンデンサ; C2, 0.1µFコンデンサ。
HIH6030からD2000へのインターフェース。
HIH6030 BOM: U1, HIH6030センサー; R1とR2, 2.2kΩ抵抗; C1, 0.22µFコンデンサ; C2, 0.1µFコンデンサ。
HIH8121からD2000へのインターフェース。
HIH8121 BOM: U1, HIH8121センサー; R1とR2, 2.2kΩ抵抗; C1, 0.22µFコンデンサ。
センサーソフトウェア
センサーデータ収集用のすべてのプログラムはC言語で記述され、「Humidity Sensor Project Code」ボタンをクリックしてダウンロード可能。各プログラムはコメント付きでシンプル。各センサーについて、プログラムは毎分センサーを読み取り、値をシリアルモニターに送信するだけ。したがって、特定のアプリケーションに容易に適応可能です。
DHT22.c(左)とHIH5030.c(右)の出力スクリーンショット。
センサー評価手順
以下の表は、4つのマイクロ環境それぞれでのセンサー評価データを含みます。
| DHT #1 | DHT #2 | HIH5030 | HIH6030 | HIH8121 | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 参照RH | OBS | ERR | OBS | ERR | OBS | ERR | OBS | ERR | OBS | ERR |
| 11.30 (LiCl) | 12.56 | 1.26 | 16.29 | 4.99 | 13.02 | 1.72 | 20.79 | 9.49 | 12.31 | 1.01 |
| 32.78 (MgCl) | 32.36 | -0.42 | 33.79 | 1.01 | 33.46 | 0.68 | 40.77 | 7.99 | 32.43 | -0.35 |
| 75.29 (NaCl) | 73.04 | -2.25 | 74.50 | -0.79 | 77.74 | 2.45 | 83.83 | 8.54 | 76.63 | 1.34 |
| 84.34 (KCl) | 82.30 | -2.04 | 82.15 | -2.19 | 85.84 | 1.50 | 93.43 | 9.09 | 85.01 | 0.67 |
| RMSE | 1.657 | 2.799 | 1.708 | 8.796 | 0.920 | |||||
既知の相対湿度の安定した環境でのセンサー性能データを収集したら、センサーの精度を数値的に評価できます。
表では各センサーの各RH標準での誤差を計算しました。しかし、一部の値が正で他が負であるため、単純に平均化してセンサーを評価することはできません。単純平均を取ると、正負の値が相殺され、平均誤差が最小化されてしまいます。
代わりに、二乗平均平方根誤差(RMSE)を計算してセンサーの精度を特性評価します。RMSEの式は以下の通り:
ここでOは観測センサー値、Iは理想センサー値(参照標準)です。RMSEを計算するには、各誤差(参照標準からの偏差)を二乗し、それらの値の算術平均を計算し、最後に平均の平方根を取ります。
センサーの精度を特性評価したら、RMSEを用いてキャリブレーションが必要かどうかを判断できます。場合によってはRMSEが小さく、アプリケーションにとって完全に許容可能で、キャリブレーション不要と合理的に判断できます。
例えば、HIH8121の結果は印象的です。RMSEが1%未満で、すべてのサンプルポイントの誤差が2%未満です。
一方で、センサー応答が非常に悪く不規則で、アプリケーションに別のセンサーが必要と判断されるケースもあります。
キャリブレーションの決定は、タスクに必要な精度の程度を常に考慮すべきです。それでも、表のすべてのセンサーについて、キャリブレーションにより読み取り値の精度を向上させることができます。
センサーキャリブレーション手順
センサーをキャリブレーションするには、理想値と観測値を関連付ける関数を数学的に決定する必要があります。線形回帰手順を使用してその関数を決定できます。
回帰手順の名前にある「線形」は線形関数を意味しません。代わりに、変数の線形結合を指します。結果の関数は線形または曲線的になり得ます。以下の3つの多項式関数はすべて線形回帰を表します(注:この文脈では役に立たない0次ケースは無視)。
- y = ax + b(1次、線形)
- y = ax² + bx + c(2次、二次)
- y = ax³ + bx² + cx + d(3次、三次)
現在のプロジェクトでは、4つの参照標準(n=4)を使用してセンサー値を計算します。したがって、3次多項式が計算可能な最高次多項式です。可能な最高次多項式は常にn-1であり、この場合は3(4-1)となります。
最小二乗法が通常線形回帰に使用されます。この手順では、各データから直線までの距離の合計が最小になるように直線をフィットさせます。最小二乗法を用いて線形回帰を実行するプログラムは多数あります。Excelも使用可能(詳細はこちら)。
非線形回帰も使用可能です。非線形回帰の例としてべき関数やフーリエ関数が結果として得られます。しかし、線形回帰は本プロジェクトのデータに適しており、さらにソフトウェア補正(キャリブレーション)が容易に実装可能です。実際、本プロジェクトでは非線形回帰を使用しても大きなメリットは得られないと考えられます。
多項式の選択
理論的には、データに最もフィットする多項式を使用すべきです。つまり、決定係数r²(またはR²、「R二乗」と発音)が最小になる多項式です。r²が1に近いほどフィットが良好。最小二乗推定では、使用する多項式の次数が高いほどフィットが良くなることは常に成り立ちます。
しかし、可能な最高次多項式を自動的に使用する必要はありません。キャリブレーションはソフトウェアで行われるため、より高次多項式を使用して得られる精度向上が非常に小さい場合、低次多項式の使用が速度やメモリの面で有利なケースがあります。
以下では、異なる次数の多項式を用いたHIH6030センサーのキャリブレーション手順を示し、選択する多項式の次数に関わらず適用可能な一般的手順を説明します。
前の表のデータを使用して、まず最小二乗回帰手順を実行し、各多項式の係数を決定。それらの値は使用する回帰ソフトウェアパッケージから得られます。結果は以下の通り、r²値も含みます。
- 線形: y = ax + b; a = 1.0022287, b = -8.9105659, r² = 0.9996498
- 二次: y = ax² + bx + c; a = -0.0012638, b = 1.1484601, c = -12.0009745, r² = 0.9999944
- 三次: y = ax³ + bx² + cx + d; a = 0.0000076, b = -2.4906103, c = 1.2061971, d = -12.7681425, r² = 0.9999999
観測値は計算された関数を使用して修正できます。つまり、センサー読み取り値を以下の表のようにキャリブレーションできます(OBS、Corrected、ERR値は小数点以下2桁で丸め)。
| RAW | 1次 | 2次 | 3次 | |||||
|---|---|---|---|---|---|---|---|---|
| Ref RH | OBS | ERR | Corrected | ERR | Corrected | ERR | Corrected | ERR |
| 11.30 | 20.79 | 9.49 | 11.93 | 0.63 | 11.36 | 0.06 | 11.30 | 0.00 |
| 32.78 | 40.77 | 7.99 | 31.95 | -0.83 | 32.83 | 0.05 | 32.78 | 0.00 |
| 75.29 | 83.83 | 8.54 | 75.11 | -0.18 | 75.85 | 0.55 | 75.29 | 0.00 |
| 84.34 | 93.43 | 9.09 | 84.73 | 0.39 | 84.83 | 0.49 | 84.34 | 0.00 |
| RMSE | 8.795736 | 0.562146 | 0.371478 | 0.00212 |
すべての3つの多項式が、観測測定値と比較してRMSEを大幅に減少させたことがわかります。これがキャリブレーションを行う理由です。以下のグラフは1次多項式を使用した改善を示しています。キャリブレーション(補正)されたデータポイントが理想的な対角線付近に位置することに注目してください。
詳細情報を読む…
湿度センサーのチェックとキャリブレーション方法
現在のプロジェクト/投稿は以下でも検索可能:
- how t chec for humidity calibratiod
製造プロセス
- 繰延べメンテナンス:定義、コスト影響、バックログ制御の6ステップ戦略
- Raspberry Pi & HDC2010:I2C温湿度センサー完全セットアップガイド
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- Raspberry Piで気象観測ステーションを構築し、日次天気データをメール送信
- Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
- Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
- Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
- Windows 10 IoT CoreとSHT15センサーで高精度な温湿度モニタリング
- DCモーターの問題を検査・診断するステップバイステップガイド
- 湿度センサー:仕組みと主要アプリケーション
- DHT11センサー:仕組みと主要アプリケーション