Part1、Part2、Part3で得られた知見を元に、センシリオン製温湿度センサーSHT31を使って温湿度を測定してCOMに表示するスケッチを書いてみました。ご参考になれば幸いです。また、このスケッチで得られるCOMの表示を図1に示します。
「温湿度センサー」タグアーカイブ
温湿度センサーSHT31を使う場合の注意点(パート3)
センシリオン製温湿度センサーSHT31を使う上での注意点その3です。
Part1とPart2で、SHT31にWriteコマンドを送った後にある程度の待ち時間が必要で有ることを示しましたが、Part3では、どの程度の待ち時間が適切なのか?を検討したいと思います。
● 初期化コマンドは1msの待ち時間でOK。測定開始コマンドの場合は、データシートに記載がある測定完了までの待ち時間が必要
結論としては表題の通りなのですが、順を追って説明します。まず、全ての待ち時間を1msとした場合のI2Cバスの挙動を観測してみました。Arduinoのスケッチを以下に示します。
温湿度センサーSHT31を使う場合の注意点(パート2)
センシリオン製温湿度センサーSHT31を使う上での注意点その2です。
待ち時間の妥当性を検証する前に、待ち時間を入れないとWriteコマンドが実行されないことを実証しておきたいと思います。
具体的には、ステータスレジスタ消去コマンド(0x3041)が実行されていないことを確かめます(図1の「45Wa 30a 41~a」部分) 。
図1 Writeコマンドを連投したときのI2C波形
ステータスレジスタ消去コマンド(0x3041)を送ってもNACKを返している
温湿度センサーSHT31を使う場合の注意点(パート1)
センシリオン社製温湿度センサーSHT31をArduinoのI2C経由で制御して評価していたのですが(写真1)、いろいろと「はまって」しまいました(苦笑)。そのときのトラブルとその解決法を備忘録として以下に記載します。
写真1 センシリオン製温湿度センサーSHT31を、
Keysight製デジタルオシロスコープ(DSOX2014A)で評価している様子
なお、トラブルが多岐にわたったのと、それぞれのトラブルに対する解決策及びその妥当性の検証に時間がかかったため、何回かに分けて詳細を記載したいと思います。
今回はその第一回です。