ホビーハッピーです。
以前の記事でDHT-11という温度・湿度計について紹介しています。
今回は、そのDHT-11の改良版のDHT-22という温度・湿度計をゲットしたので、
試しに使ってみます。サイズ感などもちょっとDHT-11とは異なるので、
そこらへんも紹介してみます。
もしDHT-11よりもDHT-22のほうが高精度であれば、
ぜひ使ってみたいという場合もあると思うので
できるだけ詳細に検証していきます。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
DHT-22の入手先
DHT-22は、通販で購入可能です。
代表的なところではAmazonですね。
わたしも今回Amazonで購入しました。
高精度と言っているだけあって、DHT-22のほうがDHT-11よりも高額でした。
わたしが確認したときで大体DHT11の3倍くらいの値段がしました。
もちろんセットで販売されているとちょっとお安くなっていたり、
販売価格はまちまちです。
すくなくてもDHT11よりも安いDHT22は存在しなかったですね。
DHT-22の大きさや重さなどのスペックについて
DHT22のサイズや重さ
DHT22はDHT11よりも若干大きいです。
外形の大きさを表にまとめてみました。
重さは、どちらも基板に載せられた状態ですので単体ならもう少し軽いです。
DHT11 | DHT22 | |
---|---|---|
外形(HxWxT)[mm] | 16×12.56×6 | 25.3×15.4×7.8 |
重量(基板込み) | 2g | 3g |
一回りDHT22のほうが大きいことがわかると思います。
DHT22のスペック
まずデータシートから確認しましょう。
温度と湿度の測定精度は以下と記載されています。
DHT11とDHT22の温度の精度
DHT11 | DHT22 | |
---|---|---|
測定範囲 | -20~+60℃ | -40~+80℃ |
測定精度 | ±2℃ | max ±1℃ |
DHT22は測定の精度が2倍なだけではなく、
測定できる温度のレンジも1.5倍程度広いようです。
まあただ60℃を超えたり、-20℃を下回る環境の測定は
一般の人ではまずありえないですよね….
DHT11とDHT22の湿度の精度
DHT11 | DHT22 | |
---|---|---|
測定範囲 | 5~95% | 0~99.9% |
測定精度 | 25℃で±5% | 25℃で±2% |
温度に続き、湿度でもDHT22のほうが高精度というのがわかりますね。
DHT11は湿度の精度が±5%なので結構ガバガバな気がしませんか??
例えば、湿度40%と45%で差があるとちょっと困る場合もありそうです。
ちなみに、以前防湿庫を使用して精度比較した際は、
3個中1個は文句なしで5%以内に収まっていましたが、
残りの2個はひどいと10%以上の差が出ています…
内部プルアップを使っていたせいもあるかもしれませんが
データシートを信じすぎていると逆に危ないかもしれないです….
DHT-22の配線方法
配線方法はDHT11とまったく同じです。
ただ今回はしっかりデータシートにあるプルアップ抵抗を入れて
温度検証してみます。と、思ったのですが
今回手元に用意したDHT22は内部抵抗を基板に載せている
便利アイテムだったので、抵抗は必要ありませんでした。
4本足のシンプルなDHT22だと正しいプルアップ抵抗が必要ですから、
一応抵抗値の説明だけしておきます。
再びデータシートの内容ですが、
プルアップ抵抗に使用する抵抗値は以下の通りです。
DHT11 | DHT22 | |
---|---|---|
抵抗値 | 4.7kΩ | 45kΩ |
DHT22は軽くDHT11の10倍のプルアップ抵抗が必要です。
これを間違えると結構精度にも影響が出そうですね….
DHT-22を実際に使ってみる
DHT22の使い方ですが、
Arduinoには便利なDHTシリーズ用のライブラリがあるので
ありがたく使わせてもらいます。
このライブラリは以前のDHT11の時も使用しているものですが、
もちろんDHT22にも対応しています。
ということでスケッチはこちらです。
#include "DHT.h"
#define DHTTYPE22 DHT22
int dht22pin=9;
DHT dht22(dht22pin,DHTTYPE22);
void setup() {
Serial.begin(9600);
dht22.begin();
}
void loop() {
getTemp();
}
void getTemp(){
float temp2=dht22.readTemperature();
delay(2000);
float humid2=dht22.readHumidity();
delay(2000);
Serial.print("dht22:");
Serial.print(temp2);
Serial.print(",");
Serial.println(humid2);
}
ポイントとしては、しっかりとincludeとdefineを記述すること。
それから、DHTTYPEなどをしっかり指定しましょう。
あとは特にDHT11のときと変わりません。
シリアルの窓を開くと勝手に温度と湿度が表示されます。
DHT-22とDHT-11を比較する【精度比較】
結局DHT22はDHT11よりも精度が良いのか?
ということで検証しました。
検証に使用した基準となる温度計はこちら↓↓
シンワ測定の温度計です。
単純な温度計よりも、測定端子が別になっているもので精度が良いものを探したらこれになりました。
測定精度は±1℃となっています。DHT22と同等の精度のはずですね。
実際に測定したときの様子がこちら↓↓
DHT11にもDHT22にもできるだけ近づけるようにした結果こうなりました笑
もうほぼ0距離。というか接触しています。
この状態で温度が安定するまで放置したところ↓のような結果になりました。
DHT11 | DHT22 | 温度計 | |
---|---|---|---|
温度 | 25.5℃ | 25.0℃ | 25.2℃ |
湿度 | 50% | 45.3% | – |
おおむね測定値が外れている感じはしませんね。
むしろDHT11が意外と健闘している感じさえします。
これくらい精度が出ていれば使用上問題なさそうです。
まとめ
ということで今回はDHT22を使ってDHT11との精度比較もやってみました。
結局のところ、精度の差はスペックほどあるかというと微妙という結論です。
そもそも正確な温度が測定できる装置がないと精度比較って難しいですからね。
今回使用したシンワ測定の温度計も±1℃の精度ですから、
もっと詳しい精度を調べるなら業務用の温度計など高精度なものが必要になります。
ただ、実用上DHT11もDHT22もどちらも困らなそうです。
もしDHT22を選択しないといけないシチュエーションがあるとすれば、
それは測定温度範囲がDHT11では測定できない場合でしょうか。
-40~-20℃と、60~80℃はDHT11では測定できませんから、
その温度になることがわかっていればDHT22を選択したほうがよさそうです。
湿度の精度についても防湿庫を使用してそのうちやる予定です。
コメント