温度と湿度の測定は非常に一般的です 多くの電子メーカープロジェクトで。 DIYでは、特定のシステムを制御するためにこれらのパラメータを測定する必要があるのが一般的です。 たとえば、温度または湿度が特定の値に達したときに起動する冷凍、プラントケア、または空調システムを作成できるようにするため。 しかし、それを可能にするには、DHT11のようなセンサーが必要です。
市場で 多くのセンサーがあります サポートされている温度範囲または異なる精度で、非常に異なる温度範囲。 この例は 最も人気があり、電子機器で使用されているLM35。 AnalogDevicesのAD22103KTZなど、導電率の変化によって機能する他の湿度センサーもあります。 しかし、両方のパラメータを測定したい場合は、おそらくこの記事で今日説明するデバイスの方がはるかに興味深いでしょう...
DHT11とは何ですか?
El DHT11は、温度と湿度を測定するシンプルなセンサーです、オールインワン。 A)はい XNUMXつのセンサーを購入する必要はありません 別々に。 価格は約2ユーロなので、かなり安いですが、Arduinoのこのタイプの電子部品で通常行われているように、モジュールに取り付けられている(使いやすいようにPCBに取り付けられている)こともあります。 ボードの場合、5キロオームのプルアップ抵抗と動作を警告するLEDが含まれています。
DHT11には 校正されたデジタル信号による高い信頼性と安定性。 また、そのデータシートを見ると、今後のセクションで説明するように、興味深い機能があることがわかります。
類似製品
あなたが興味を持っているかもしれないDHT11に似た製品があります。 です DHT22。 統合された温度と湿度のセンサーでもありますが、この場合、価格は少し高く、約4ユーロです。 温度測定の精度はDHT5と同様に11%変動しますが、それとは異なり、湿度20〜80%の範囲を超えて測定します。 したがって、湿度を22から0%まで測定する必要があるプロジェクトでは、DHT100に関心があるかもしれません。
La データ収集頻度 また、DHT11の22倍であり、DHT2では、DHT1の11秒あたり40サンプルではなく、125秒あたり0,5サンプルが取得されます。 温度については、-XNUMXºCから+XNUMXºCまでをより正確に測定できます。これは、度の端数を測定できるため、特にプラス/マイナスXNUMXºCの変動を評価できるためです。
ピン配置、機能、データシート
あなたはについてのかなりの技術情報を見つけることができます データシートのDHT11。 このデバイスの各メーカーは、異なる可能性のあるいくつかの値を提供できるため、購入したデバイスの特定のメーカーのPDFを読むことを常にお勧めします。 ほとんどの値は同じように見えるかもしれませんが、一方から他方へのわずかな違いがある可能性があります。 その最も重要な技術的特徴は次のとおりです。
- 3,5vから5vの電源
- 2,5mAの消費電流
- デジタル出力信号
- 0ºCから50ºCまでの温度範囲
- 約25ºC変動の2ºCでの温度を測定する精度
- 温度を測定するための分解能は8ビット、1ºCです
- 湿度は20%RHから90%RHまで測定できます
- 5〜0ºCの温度で50%RHの湿度に対して正確に
- 分解能は1%RHであり、それ以下の変動を検出することはできません。
- Mouserデータセット
データについては、 デジタルで放送。 したがって、他のセンサーのようにアナログからデジタルに移行する必要はありません。 これにより、Arduino IDEで記述するコードが複雑になりましたが、この場合は不要であり、はるかに簡単です。 センサー自体はアナログですが、変換を実行するシステムが含まれており、Arduinoのデジタル入力に直接接続できます。
センサーからの電圧の変化であるアナログ信号は、デジタル形式に変換されてArduinoマイクロコントローラーに送信されます。 で送信されます 40ビットフレーム DHT11によってキャプチャされた湿度と温度の情報に対応します。 8ビットの最初の16つのグループは湿度、つまりこのフレームの最上位2ビット用です。 次に、残りの8つの残りのXNUMXビットグループの温度。 つまり、湿度用にXNUMXバイト、温度用にXNUMXバイトあります。 例えば:
0011 0101 0000 0010 0001 1000 0000 0000 0011 1001
この場合、0011 0101 0000 0010は湿度値であり、0001 1000 0000は温度です。 最初の部分は整数部分用で、0000番目の部分は小数用です。 0011 1001に関しては、つまり、 最後の8ビットはパリティです 間違いを避けるために。 そうすれば、送信中にすべてが正しいことを確認できます。 これは前のビットの合計に対応するため、合計がパリティに等しい場合は正しくなります。 私が置いた例では、そうではありません。ご覧のとおり、対応していないからです...それは失敗を示しています。
これがわかったら、注意すべきDHT11の次の技術レベルはピンです。 ザ・ 連絡先またはピン配置 このデバイスは4つしかないため、簡単です。 ピンのXNUMXつは電源またはVcc用、もうXNUMXつはデータを送信するためのI / O用、接続しないNCピン、およびグランド接続用のGNDです。
Arduinoとの統合
DHT11のピン配置と Arduinoボード、接続は非常に簡単です。 PCBに統合されたDHT11モジュールを選択した場合、NCが削除されて作業が容易になるため、ピンはXNUMXつになることに注意してください。 前の画像の図に示されているように、アースピンをArduinoのGND接続のXNUMXつに接続するだけです。
一方、電源ピンはに接続する必要があります Arduinoからの5v接続、 したがって、センサーはGNDとVccで完全に電力が供給されますが、データが欠落しています。 DHT11センサーからArduinoボードにデータを送信するには、画像に表示されている7などの任意のデジタル入力を使用できます...必要なArduino IDEを作成したら、すべてを使用する準備が整います。コード..。
プロジェクト内でセンサーが遠くにあり、20メートルより長いケーブルを使用する場合は、5kのプルアップ抵抗を使用します。ケーブルが大きい場合は、それに比例して大きくする必要があります。 3,5vではなく5vの電源を使用する場合は、電圧降下のためにケーブルを20cmより長くしないでください。
彼らが推奨するのは 5秒ごとに測定を行い、 DHT11が動作できるサンプリング周波数は高くなりますが、より頻繁に実行されると、それほど正確ではない可能性があります。
ArduinoIDEのコード
コードに直接行き、次のように言います Arduino IDE DHT11での作業を楽にする機能を備えた既存のライブラリを多数使用できます。 たとえば、そのうちのXNUMXつは Adafruitを提供します。 PDF形式のArduinoで始まる初心者向けガイドがあることを忘れないでください。 ここから無料でダウンロード そしてそれはあなたを助けることができます。
対応するライブラリをインストールしたら、コメントすることができます コードを入力します Arduinoを使用してプロジェクトのDHT11温度および湿度センサーを制御します。 例えば:
#include "DHT.h" const int DHTPin = 7; DHT dht(DHTPin, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("Midiendo..."); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Fallo en la lectura del sensor DHT11"); return; } Serial.print("Humedad relativa: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(t); Serial.print(" ºC "); }