■ デジタル温度&湿度センサーSHT21・HDC1000を制御する ■


 小型で低消費電力な温度・湿度センサー、SHT21 (Sensirion) とHDC1000 (Texas Instruments) を、AVRマイコンで制御します。
 両センサーは、温度と湿度の計測値をデジタル・データで取得できるので、ノイズの影響を抑えた精度の良い測定が可能です。
 老舗Sensirionの信頼性を取るか、多少安価なTexas Instrumentsにするか、比較検討です。


 型  名 SHT21 HDC1000
 電源電圧  2.1V 〜 3.6V  2.7V 〜 5.5V
 消費電力(電流)  測定中:最大 330μA
 待機中:最大 0.4μA
 測定中:最大 220μA
 待機中:最大 0.2μA
 測定範囲 温度  -40 〜 125℃  -40 〜 125℃
湿度  0 〜 100%RH  0 〜 100%RH
 精  度 温度  標準 ±0.3℃  標準 ±0.2℃
湿度  標準 ±2%RH  標準 ±3%RH
 感度と解像度
(分解能)
温度  0.01℃ (14bit)  0.01℃ (14bit)
湿度  0.04%RH (12bit)  0.01%RH (14bit)
 再 現 性 温度  ±0.1℃  ±0.1℃
湿度  ±0.1%RH  ±0.1%RH
 湿度ヒステリシス  ±1%RH  ±1%RH
 長期安定性 温度  < 0.02℃ / 年  
湿度  < 0.25%RH / 年  ±0.5%RH / 年
 変換時間  温度  最大 85mS (14bit)  標準 6.35mS (14bit)
湿度  最大 29mS (12bit)  標準 6.5mS (14bit)
 サンプリング周期  1秒以上  1秒以上
 接  続  2線式(I2Cプロトコル)  2線式(I2Cプロトコル)


・制御のテストは、当ページに掲載の
 AVR & BASCOM-AVR トレーニング・ボード
 を使用しています。
 
・もちろん、各種のAVRやポートを選択することも
 可能です。



SHT21 (Sensirion)
 
・「ストロベリー・リナックス」で販売されている、SHT-21モジュールを使用します。
・センサーとの通信はI2C規格に従って、クロック[SCL]とデータ[SDA]の2本の
 通信線が必要です。
SHT21 日本語マニュアル

・このセンサーのシリーズには、SHT20、SHT21、SHT25がありますが、
 精度の違いなので、同じプログラムが使用できます。
・このセンサーは光に感応しませんが、直射日光はセンサーの劣化を早くします。
・有機溶剤や揮発性の化学物質はセンサーに悪い影響を与えますから、
 ハンダ付け時のフラックス飛散や基板洗浄には注意して下さい。

 
回 路
 
・回路図は、SHT21とHDC1000の共用です。
・トレーニング・ボードの電源は5Vで、SHT21は3.3V(最大3.6V)の電源を使用するので、3端子
  レギュレータで3.3Vを供給します。
・クロック[SCL]とデータ[SDA]は、必ず4.7K〜10KΩの抵抗器で、電源からプルアップして下さい。
 (距離が長い場合は4.7KΩ)
 抵抗器の接続は、マイコン側・センサー側のどちらでも可能です。
・I2Cバスは、プルアップ抵抗器を3.3Vに接続する事で、簡易的に5V→3.3Vのレベル変換を
 行っています。
・ストロベリー・リナックスのSHT21モジュールは、I2Cスレーブアドレスが[80h]の固定です。
 秋月電子のHDC1000モジュールも、I2Cスレーブアドレスが[80h]の固定なので、I2Cバスを2セット
 用意して、同時に制御ができるようにしています。
・クロック[SCL]とデータ[SDA]を接続するポートは、同一ポートならば任意のピンに選択できます。
・センサーとの距離が長くなる場合は、シールド線を使用したり、クロック速度を落とす対策をして下さい。
 
回 路 図  PDF版 ATB_SHT21_HDC1000_Cir.pdf
 
   注意! この図面を使用した、いかなる損害にも責任を負いません。

 
プログラム
 
・SHT21は、電源投入後の初期値で、温度の分解能=14bit、湿度の分解能=12bitになっていますから、
 初期設定を変更せずにそのまま使用します。 (他の初期設定等も必要ありません)
・このセンサーの動作には、「ホールド」と「非ホールド」マスターモードがあります。
 同じI2Cバスに他のデバイスを接続して通信する場合は、「非ホールド・マスターモード」を使用します。
・SHT21には1秒毎に温度と湿度を交互に測定させ、LCDの左上に温度、左下に湿度を表示します。
 (個々の測定間隔は2秒です)
・温度および湿度の測定は、それぞれの測定開始コマンドを送信してから、12bit時で29mS、14bit時で
 85mS待つ必要があります。
 「非ホールド」マスターモードを使用するため、測定開始後に固定値で100ms待機する事で、測定が
 終了するのを待ちます。
 実機のプログラムでは、測定開始コマンドを送信してから次の測定開始時(1秒後など)に測定値を
 読み込むのが効率的です。 (センサーは測定が終了すると、スリープモードで待機します)
・測定したデータはマニュアルに従って、温度と湿度のそれぞれを変換する計算を行います。
 テストプログラムでは小数点演算を避けるため、全ての数値を100倍して計算しています。
 
・エラー表示
・「ACKerror」 −SHT21が接続されていない、または機能していない。
  SHT21の接続を確認して下さい。
・「CRC Err.」 −SHT21との通信にノイズ等の影響があった、またはデータ線[SDA]が
  [L]レベル。 ケーブル等のノイズ対策を行って下さい。 データ線[SDA]を確認して下さい。
・「NACK Ret」 −変換終了の待機時間が不足している。 (変換が終了していない)
  プログラムを変更した場合に、各自のプログラムを確認して下さい。
 
プログラム  テキスト形式 ソースファイル  Atb_SHT21_HDC1000_Test002.TXT
 BASCOM用 ソースファイル  Atb_SHT21_HDC1000_Test002.bas
 
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)






HDC1000 (Texas Instruments)
 
・「秋月電子」で販売されている、AE-HDC1000モジュールを使用します。
・センサーとの通信はI2C規格に従って、クロック[SCL]とデータ[SDA]の2本の
 通信線が必要です。
・HDC1000はSHT21と比べて変換時間が短いため、さらに低消費電力です。
 
・HDC1000はセンサーがチップの底面にあるためか、SHT21よりも反応が遅く
 感じられます。 (室温などの変化の遅い測定では問題ありません)
・秋月電子のHDC1000モジュールは、基板上にI2Cのプルアップ抵抗器2本と
 DRDYnピンにもプルアップ抵抗器が付いています。
 このDRDYnピンのプルアップ抵抗器は、「ありがた迷惑」な存在です。
 低消費電力が売りのセンサーですが、変換が終了してデータを読みに行く
 までの間、この抵抗器に無駄な電流が流れ続けてしまいます。
 (DRDYnピンを使用しない用途でも、ピンの出力は[L]レベルのままになります)
 基板のパターンをカットすれば回避はできますが、基板が小さいので注意が
 必要です。
・ストロベリー・リナックスの「HDC1050モジュール」も、選択肢の一つでしょう。
 
・有機溶剤や揮発性の化学物質はセンサーに悪い影響を与えますから、
 ハンダ付け時のフラックス飛散や基板洗浄には注意して下さい。

 
  HDC1000の日本語マニュアルが見つからないので、私的に翻訳してあります。
HDC1000 日本語マニュアル 原本 HDC1000
 
  個人で使用するために翻訳した物を掲載しておりますので、翻訳間違いや誤字による、
  いかなる損害にも責任を負いません。
 
回 路
 
・回路図は、SHT21とHDC1000の共用です。
・トレーニング・ボードの電源は5Vで、HDC1000も5V動作が可能ですが、電圧が上がると消費電力も
 上がるので、SHT21と同じくレギュレータで降圧した3.3Vを供給します。
・モジュール基板上に[SCL]と[SDA]のプルアップ抵抗器が付いていますから、外付けは不要です。
・I2Cバスのプルアップ抵抗器も3.3Vに接続されるので、簡易的に5V→3.3Vのレベル変換が行われます。
・秋月電子のHDC1000モジュールは、I2Cスレーブアドレスが[80h]の固定です。
 ストロベリー・リナックスのSHT21モジュールも、I2Cスレーブアドレスが[80h]の固定なので、
 I2Cバスを2セット用意して、同時に制御ができるようにしています。
・クロック[SCL]とデータ[SDA]を接続するポートは、同一ポートならば任意のピンに選択できます。
・センサーとの距離が長くなる場合は、シールド線を使用したり、クロック速度を落とす対策をして下さい。
・センサーの変換終了を待ち時間で確定するため、RDY(DRDYn)ピンは使用しません。
 
回 路 図  PDF版 ATB_SHT21_HDC1000_Cir.pdf
 
   注意! この図面を使用した、いかなる損害にも責任を負いません。

 
プログラム
 
・HDC1000は、電源投入後の初期値で、温度の分解能=14bit、湿度の分解能=14bit、
 取得モード=温度と湿度を順番に取得、になっていますから、初期設定を変更せずにそのまま
 使用します。 (他の初期設定等も必要ありません)
・HDC1000には1秒毎に温度と湿度を測定させ、LCDの右上に温度、右下に湿度を表示します。
・温度および湿度の測定は、測定の起動コマンドを送信してから14bit時で温度が6.35ms、
 湿度が6.5ms待つ必要があります。
 測定起動後に固定値で100ms待機する事で、測定が終了するのを待ちます。
 実機のプログラムでは、測定起動コマンドを送信してから次の測定起動時(1秒後など)に測定値を
 読み込むのが効率的です。 (センサーは測定が終了すると、スリープモードで待機します)
・測定したデータはマニュアルに従って、温度と湿度のそれぞれを変換する計算を行います。
 テストプログラムでは小数点演算を避けるため、全ての数値を100倍して計算しています。
 
・エラー表示
・「ACKerror」 −HDC1000が接続されていない、または機能していない。
  HDC1000の接続を確認して下さい。
・「NACK Ret」 −変換終了の待機時間が不足している。 (変換が終了していない)
  プログラムを変更した場合に、各自のプログラムを確認して下さい。
 
プログラム  テキスト形式 ソースファイル  Atb_SHT21_HDC1000_Test002.TXT
 BASCOM用 ソースファイル  Atb_SHT21_HDC1000_Test002.bas
 
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)






SHT21 と HDC1000 の同時比較
・SHT21とHDC1000、旧タイプのSHT11とアナログ計を同時に
 比較しました。
・各センサーは、規格表内の偏差でそれぞれ良い数値を
 出しています。
・別メーカーのセンサーがここまでの近似値を出しているので、
 室温では双方とも精度に問題がないと言えるでしょう。
・HDC1000はセンサーがチップの底面にあるためか、
 SHT21よりも反応が遅く感じられます。
 
・HDC1000はSHT21より新しいセンサーなので、経年変化
 などの実績は、今後見守る必要があります。
・温度・湿度センサーSHT21とHDC1000のテスト動画です。
・一桁台の室温からブロワーで加熱して自然冷却した
 様子です。
・センサーが室温に安定した後に、センサーに息を
 吹きかけています。
・双方の反応速度の違いが見られます。








■ デジタル温度&湿度センサーSHT31を制御する ■


 小型で低消費電力な温度・湿度センサーSHT21 (Sensirion) の後継品で、精度が向上し、電源電圧範囲も広くなっています。
 温度と湿度の計測値をデジタル・データで取得でき、ノイズの影響を抑えた精度の良い測定が可能です。
 また、マニュアルを理解しなければならない面倒な動作設定や、較正のための複雑な計算も不要なので、とても扱いやすいセンサーです。
 多少高価ですが、老舗Sensirionの信頼性を考慮して、お勧めのセンサーです。


 型  名 SHT21 SHT31
 電源電圧  2.1V 〜 3.6V  2.4V 〜 5.5V
 消費電力(電流)  測定中:最大 330 μA
 待機中:最大 0.4 μA
 測定中:最大 1500 μA
 待機中:最大 2 μA
 測定範囲 温度  -40 〜 125 ℃  -40 〜 125 ℃
湿度  0 〜 100 %RH  0 〜 100 %RH
 精  度 温度  標準 ±0.3 ℃  標準 ±0.3 ℃
湿度  標準 ±2 %RH  標準 ±2 %RH
 感度と解像度
(分解能)
温度  0.01 ℃ (14bit)  0.015 ℃ (16bit)
湿度  0.04 %RH (12bit)  0.01 %RH (16bit)
 再 現 性 温度  ±0.1 ℃  設定レベル:高 0.06 ℃
湿度  ±0.1 %RH  設定レベル:高  0.1 %RH
 湿度ヒステリシス  ±1 %RH  ±0.8 %RH
 長期安定性 温度  < 0.02 ℃ / 年  < 0.03 ℃ / 年
湿度  < 0.25 %RH / 年  < 0.25 %RH / 年
 変換時間  温度  最大 85 mS (14bit)  設定レベル:高 最大 15 mS
湿度  最大 29 mS (12bit)
 サンプリング周期  1秒以上  100 mS (連続測定 10mps)
 接  続  2線式 (I2Cプロトコル)  2線式 (I2Cプロトコル)
 クロック周波数  400KHz  1MHz


SHT31 (Sensirion)
 
・「ストロベリー・リナックス」で販売されている、
 SHT-31モジュール
・中国通販(AliExpress)のモジュール。

 ・センサーとの通信はI2C規格に従って、クロック[SCL]とデータ[SDA]の2本の通信線が必要です。
 ・I2Cのアドレスを2つから選択できます。 (8bitアドレス[88h]と[8Ah])

SHT31 日本語マニュアル

 ・このセンサーのシリーズには、SHT30、SHT31、SHT35がありますが、精度の違いなので
  同じプログラムが使用できます。
 ・有機溶剤や揮発性の化学物質はセンサーに悪い影響を与えますから、ハンダ付け時の
  フラックス飛散や基板洗浄には注意して下さい。


・制御のテストは、小型のゲーム基板「Gamebuino」を
 使用しています。
 Gamebuino [Arduino]互換の小型ゲーム基板 
 
・もちろん、各種のAVRやポートを選択することも可能です。
 
回 路
 
・小型のゲーム基板「Gamebuino」のI2C端子に、ピンの変換基板を作製して接続します。
・クロック[SCL]とデータ[SDA]のプルアップ抵抗器は、「Gamebuino」基板に内蔵されています。
・各種AVRで制御する場合は、必ず[SCL]と[SDA]を4.7K〜10KΩの抵抗器で電源からプルアップ
 して下さい。 (距離が長い場合は4.7KΩ)
 抵抗器の接続は、マイコン側・センサー側のどちらでも可能です。
・センサーとの距離が長くなる場合は、シールド線を使用したり、クロック速度を落とす対策をして下さい。
・各モジュールにはアドレスの選択ピン(ADDR または AD)がありますので、使用するアドレス設定に
 合わせて、必ず電源またはGNDへ接続してください。 
 (8bitアドレス、GNDに接続で[88h]、電源に接続で[8Ah])
 
回 路 図  PDF版 Gamebuino_SHT31_Cir.pdf
 
   注意! この図面を使用した、いかなる損害にも責任を負いません。

 
プログラム
 
・SHT31は、測定コマンドを出した時に1回の測定を行う「単発測定コマンド」と、周期的に(1秒間に
 0.5、1、2、4、10回)測定を繰り返す「周期的連続測定コマンド」があります。
・それぞれのコマンドに、精度のレベル(高、中、低)が選択できます。
・精度レベルにより変換時間が変わり(高→長い、低→短い)、それにより消費電力も変わりますから、
 用途に合わせて選択してください。
 
・「単発測定コマンド」は、コマンドを出した後、精度レベルによる変換時間を待ってから、温度と湿度の
 データを読み出します。
・「クロック・ストレッチ」機能を使うと、変換中に[SCL]線が[L]にされ、測定の完了で[H]になって
 測定データ送信してきますので、最短の時間で処理が可能です。
・ただし、他のI2Cデバイスを同じI2C線上に接続している場合は、変換中の通信ができなくなります。
 
・「周期的連続測定コマンド」は、選択された周期(1秒間に0.5、1、2、4、10回)で測定を繰り返します。
・「クロック・ストレッチ」機能は使えません。
・測定データは任意のタイミングで読み出せますが、測定データが無い場合(測定周期より早い時間で
 読み出した場合)は、[NACK]が返送されます。
・例えばセンサーに1秒ごとの測定を設定して、マイコンのTimerで1秒ごとに読み出した場合、1秒の
 精度の違いにより、まれにデータが取れないタイミングが発生する可能性がありますので、
 [NACK]が返送された場合はそのデータを無効にする対策も必要です。
 
・その他の詳細な設定や機能は、マニュアルを確認してください。
 
・テストプログラムでは、「単発測定コマンド」、「精度:高」、「クロックストレッチ:無し」で測定を行い、
 「Waitms 20」命令で、測定の完了を待った後に測定データを読み出します。
・測定されたデータはマニュアルに従って、それぞれを温度と湿度値に変換する計算を行います。
 テストプログラムでは小数点演算を避けるため、全ての数値を100倍して計算しています。
・CRC(チェックサム)の計算も行っていますので、エラー判定やエラーの表示は各自でプログラムを
 追加してください。
 
 ・HEXファイルをSDカードに書き込み、「SDカードからのブート」を行う事もできます。
 
プログラム  テキスト形式 ソースファイル  Gamebuino_SHT31_101.TXT
 BASCOM用 ソースファイル  Gamebuino_SHT31_101.bas
 フォント・ファイル   Gamebuino_font6x8.font
 Font10x16num.font
 
 SDカード用 HEXファイル  SHT-31__.HEX
 
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)






SHT31 「ストロベリー・リナックス」と中国通販(AliExpress)の比較
・「ストロベリー・リナックス」と中国通販(AliExpress)を同時に
 比較しました。
・[ADDR] ピンにより、I2Cアドレスを変えています。
 
・価格は3倍も違いますが、問題なく動作しています。
 
プログラム  テキスト形式 ソースファイル  Gamebuino_SHT31_X2_101.TXT
 BASCOM用 ソースファイル  Gamebuino_SHT31_X2_101.bas
 
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)






SHT31 と BME280 の同時比較
・SHT31とBME280を同時に比較しました。
 
・両者の差のバラツキは、温度で1℃、湿度で3%程度でした
 ので、周囲環境の微妙な差を含めても、良い値を出して
 いると思います。
 
・BME280は電源電圧が1.71V 〜 3.6Vと使い勝手が悪く、
 規格上の精度もSHT31には及びません。
・また、BME280は測定データに複雑な較正計算が必要で、
 マイコンのフラッシュ容量の増大と消費電流の増大が
 懸念されます。
・温度、湿度、気圧が1つのセンサーで測定できることと
 価格の面を除けば、温度と湿度の標準センサーは
 SHT31がお勧めです。
 
プログラム  テキスト形式 ソースファイル  Gamebuino_SHT31_BME280_101.TXT
 BASCOM用 ソースファイル  Gamebuino_SHT31_BME280_101.bas
 
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)





   電子工作の部屋 Top へ 前のページへ戻る