今回は温度センサ(ADT7410)の動作設定方法について説明します。
動作設定概要
ADT7410の動作設定を行うには、ADT7410内部のメモリのアドレス0x03に1バイトのデータを書き込むことにより行います。
レジスタ0x03に1バイトデータを書き込むには、以下のようなI2C通信手順で通信を行います。
なお、スレーブアドレスは0x48、書き込み(=0)ですので、最初に送る「スレーブアドレス+読み書き指定」のデータは0x90になります。つまり、ADT7410の動作設定を行うには、0x90、0x03と動作設定データ(1バイト)の合計3バイトを送信することになります。
以下に動作設定データの1バイトの詳細を説明します。
動作設定レジスタ詳細
以下は動作設定の1バイトデータの詳細です。以下にそれぞれのビットの意味を説明します。
bit7: 解像度
ADT7410は温度を計測する際、16ビットで計測するか13ビットで計測するか選択できます。16ビット計測時、測定温度の分解能は0.0078度、13ビット計測時は0.0625度になります。このビットの値は以下の意味になります。
値 | 意味 |
---|---|
0 | 13ビット測定モード |
1 | 16ビット測定モード |
実践編では少数第2位まで表示しますので、分解能は16ビット(=1)に設定します。
bit6-bit5: 測定モード
温度計測をどのようなタイミングで測定するかの設定です。測定モードとしては以下の4種類があります。
- 次々に休みなく測定するモード
- マスターから測定指示をした場合に測定するモード
- 1秒間に1回測定するモード
- スリープモード
bit6とbit5の2ビットは以下の意味になります。
値 | 意味 |
---|---|
00 | 連続測定モード。1秒間に何回も測定するため消費電力は大きくなります |
01 | 指示した時のみ測定するモード。このビットに01を書き込むと測定してくれます。測定には約240msかかりますので、測定データの取得は工夫が必要です。(具体的にはステータスレジスタで新しいデータが測定されたから確認後、測定データを取得します。詳細説明は省略します) |
10 | 1秒間に1階測定するモード。 |
11 | スリープモード。スリープ指定した場合、I2C通信以外はスリープします。スリープ時にもI2C通信は可能です。 |
実践編では連続測定モード(=0b00)で使用します。
bit4: INT/CTモード
INTピンとCTピンの動作モードの設定ですが、今回使用するモジュールではINT/CTピンは使用できませんので説明は省略します。設定値は0で問題ありません。
bit3: INT論理
INT信号の正論理/負論理指定です。今回使用するモジュールではINT/CTピンは使用できませんので説明は省略します。設定値は0で問題ありません。
bit2: CT論理
CT信号の正論理/負論理指定です。今回使用するモジュールではINT/CTピンは使用できませんので説明は省略します。設定値は0で問題ありません。
bit1-bit0: INT/CT回数
INT/CTの割り込み信号は、INT/CT設定温度を上回ったあるいは下回った場合に発生しますが、何回上回った/下回った場合に発生させるかの設定です。今回使用するモジュールではINT/CTピンは使用できませんので説明は省略します。設定値は0b00で問題ありません。
動作設定レジスタで使用するところは少なく、16ビットモードでの測定設定を行うのみですので、動作設定の1バイトデータは「0x80」になります。
次回は取得した測定データ2バイトの温度データへの変換方法を説明します。
更新履歴
日付 | 内容 |
---|---|
2018.8.12 | 新規投稿 |