DHT22 の湿度センサー精度を飽和塩法で確認する

Raspberry Pi
この記事は約5分で読めます。
この記事は最終更新日より 1 年以上経過しています。
画像やリンクが無効になっている可能性もあるのでご了承下さい。

はじめに

 昨日書いた記事では Raspberry Pi 3 に DHT22 を接続して Munin を用いたグラフ化まで一通りの作業が完了した。

Raspberry Pi 3 + CentOS 7 + DHT22 で部屋の温度と湿度をグラフ化する
 以前から Raspberry Pi をもう少し "らしく" 使いたいなと思っていた。GPIO のヘッダピンが出ているからとセンサー系の何かを使った物…… で "温度と湿度のセンサー" が思いついた。...

 一つ心残りだった湿度センサーの補正値は正しいのか否かをちょっと面倒だったけど飽和塩法を用いて今一度確認を行う事にした。

 飽和塩法に関しては過去記事を参考にして頂きたい。

飽和塩法で検証する

 検証方法は次の様になるべく密閉出来る容器内で行う。

 検証の手順は次のような感じで行った。

  1. 適当なサイズの透明な容器を用意。その中に小皿に塩を「どう考えても溶けないだろう」って量を入れてから水も入れてかき混ぜておく。これで塩 (塩化ナトリウム) の飽和水溶液が出来上がる。 (( 料理用の塩なので純粋な塩化ナトリウムではない点に注意 ))
  2. 容器内へ湿度上昇を促進する為、割り箸で高さを確保出来る様にした FAN を設置。動作はモバイルバッテリーの出力で賄ったので 3.3V 動作となり、緩く回転するが問題は無い。 (( FAN 無しだと 10 時間以上かかっても湿度が上がりきらなかった経験有 ))
  3. 当初は DHT22 だけを入れて検証していたが、やはり比較対象が欲しかったので ThermoPro TP50 を途中から入れ直すこととした。
  4. ラップで蓋をした所から更にポリエチレンの袋できつめに密封した。
  5. 湿度が上昇しきってもうこれ以上は上昇しないだろうという状態になるまでひたすら待つ。

 湿度の監視にはデータ取得に使用しているスクリプト AdafruitDHT.py を叩いて得た生の温湿度に加えて sudo munin-run temp として補正後の数値を吐くスクリプトを実行する事で観察していく。
 勿論 Munin のグラフも見ながら湿度の限界点を見極める。

 塩化ナトリウムを用いた検証時、容器内は温度が 30 度なので湿度 75.1±0.2% になるはず。料理用の塩だから不純物が存在する分、誤差は更にあるだろうけどこの際は同様に 75.1% と想定して DHT22 の精度を見る事にする。

検証結果を見る

 開始から終了と判断するまでのグラフは次の通り。

 開始早々にして湿度がガッと上昇を開始。
 1 時間ほど経過したところで一旦容器をあけて ThermoPro TP50 も入れたので少し湿度が下降。
 再度容器を密閉してから 1 時間 40 分ほどで湿度のピークを迎えて一段湿度が下がる現象が見られた。
 そこから微妙に上がったり下がったりとなってきたので、これ以上上昇はしないと判断した。

 グラフをもっと拡大し、縦軸のスケールも拡大したグラフを見て更に確認。

 終了時にセンサーが示した生の値と自身で書いた補正込みの値を見ると次の様に上がっていた。

AdafruitDHT.py 2302 4
Temp=30.1*  Humidity=77.8%
munin-run temp
temp.value 30.1
humidity.value 75.3

 Munin のプラグインでは湿度の補正値として -2.5 を入れた状態。
 そして飽和塩法によればこの時点で容器内の湿度は 75.1% になっているので生の値も補正後も不正確であると分かった。
 生の値を元にして -2.7 という補正値を Munin のプラグインで設定すれば良いという答えが出た。

 そして自作プラグインに対して湿度の補正値 -2.7 を入れ込んだ実行結果がこれ。

munin-run temp
temp.value 30.1
humidity.value 75.1

 これにて DHT22 が取得する湿度の補正は完了とする。
 ――と思って記事を書き終えた後、片付けようとしたらバッテリー切れで FAN が止まっており、再稼働させたあとは湿度が突如上昇を再開した。よって再度補正しながら追いかける状態になってしまった。
 やるのであれば寝る前放置で起きたくらいに確認するのが良いだろう…… ちょっと早とちりし過ぎたようだ。

2019/05/21 7:30 追記
グラフのデータとしては取っていないが、最終的な湿度補正値はうちの個体の場合 -3.8 で確定した。
 ちなみに同時に容器へ入れていた ThermoPro TP50 は短時間だが湿度 76% を記録した。しかし製品の誤差範囲内であるしそれでも十分な精度だから特に気にはしていない。1,000 円ちょいの奴だしね。

おわりに

 湿度という物は何をが基準点なのかと分かりにくい物ではあるが、飽和塩法という手法を用いればこの様に割と精度の高い補正を行うことが出来る。
 一製品として完成された湿度計や温湿度計ではズレを確認するだけしか出来ないが、DHT22 は Raspberry Pi に接続して取得した値を処理することが出来るのでこう言った検証がかなり有用となってくる。
 センサー毎に個体差もあるだろうから DHT22 に限らず複数の湿度センサーを使用する場合、いちいちそのすべてを補正するのは正直面倒極まり無いが、安いセンサーでも精度というか信頼性が欲しいなと思ったときは自前の時間と労力で結果が得られる。

 湿度センサーの値が本当に正しいのかと疑問を持っている方は是非一度こうした手段で検証してみると良いかも知れない。
 なかなかに面白い結果が得られるし、正しい値に補正出来ればまた喜びの様な物が生まれてくるかも知れない。

著者プロフィール
ぶっち

本格的に PC へ触れ始めてたのは 1990 年位から。
興味は PC 全般。OS は Windows と Linux などを嗜む。
プログラマやネットワークエンジニアを経てフリーに活動している 2 児の父な 40 代半ばのおじさんです。

ぶっちをフォローする

コメント

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.