SHT31 (Sensirion) |
 |
・「ストロベリー・リナックス」で販売されている、
SHT-31モジュール
|
 |
・中国通販(AliExpress)のモジュール。 |
・センサーとの通信はI2C規格に従って、クロック[SCL]とデータ[SDA]の2本の通信線が必要です。
・I2Cのアドレスを2つから選択できます。 (8bitアドレス[88h]と[8Ah])
・このセンサーのシリーズには、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])
注意!
この図面を使用した、いかなる損害にも責任を負いません。
|
● プログラム
・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カードからのブート」を行う事もできます。
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。 (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)
|
|