今回から温度センサADT7410から温度データを取得するプログラムを作成します。今回はセンサの概要説明です。
センサ仕様概要
最初に、実践編で使用する温度センサADT7410の概要について説明します。
ADT7410は微妙な温度変化を計測することができます。温度データは16ビットまたは13ビットで取得でき、16ビットの時は0.0078度刻み、13ビットの時は0.0625度刻みで温度変化を計測することができます。どちらのビット数で計測するかは電源投入後の動作設定の時に指定します。
また、測定温度範囲はマイナス40度 〜 プラス105度ですので、一般的な温度計測には問題ない性能だと思います。
ところで、温室度・気圧センサBME280では取得したデータの処理が大変でしたよね。この温度センサADT7410のデータ処理はそれほど大変ではありません。今回は動作設定や温度データ取得の概要を説明します。取得した細かい動作設定内容や取得した温度データの処理方法はこの後の記事で説明します。
センサ制御方法概要
ADT7410の制御方法の概要を説明します。
ADT7410のメモリマップは以下のようになっています(「メモリマップ」という言葉を忘れてしまったら、実践編第29回の説明を確認してください)。
なんだかいろいろありますが、温度計測をするだけであれば、赤枠部分の温度データレジスタ、青枠部分の動作設定レジスタのみ使用することになります。
温度データを取得する場合、 I2C通信を使用してアドレス0x00と0x01のデータを読み取ります。2バイトのデータを読み取ることになりますが、この2バイトのデータから温度に変換する方法はこの後の記事で詳しく説明します。
また動作設定を行う場合は、同じくI2C通信を使用してアドレス0x03に設定データを書き込みます。この動作設定についてもこの後の記事で詳しく説明します。
残りのレジスタについて簡単に説明しておきます。
0x02: ステータス
このレジスタを読み取ると、ADT7410のステータス(状態)がわかります。例えば、あらかじめ指定しておいた温度を上回った、下回った、などの情報です。ただ、温度データはマイコンで読み取り、マイコンでその温度を処理しますので、特に読み取る必要はないと思います。
0x04, 0x05: INT割り込み信号発生温度(高温)
ADT7410には「INT」と呼ばれるピンがあります。このピンは、あらかじめ設定した温度を上回ったり、下回ると、このピンの出力が1になります。0x04と0x05のレジスタは、高温側の温度を設定するレジスタです。
例えばこのレジスタに35度という温度を設定しておくと、測定温度が35度を超えるとADT7410のINTピンが1になります。
ただ、実践編で使用しているモジュールは、ADT7410のINTピンの信号は出ていませんのでこの機能は使用することができません。
0x06, 0x07: INT割り込み信号発生温度(低温)
先ほどは測定温度が上回った場合でしたが、こちらはこの設定温度を下回った場合にINTピンが0になります。先ほどと同様、実践編で使用しているモジュールは、ADT7410のINTピンの信号は出ていませんのでこの機能は使用することができません。
0x08, 0x09: CT割り込み信号発生温度
ADT7410にはINTピンとは別に「CT」と呼ばれるピンがあります。測定した温度が0x08, 0x09で設定した温度を上回ると、CTピンが0になります。先ほどと同様、実践編で使用しているモジュールは、ADT7410のINTピンの信号は出ていませんのでこの機能は使用することができません。
設定温度を上回った場合に出力を1にするというピンがINTピン、CTピンの2本あります。この使い方ですが、INTピンは温度の上限、CTは温度の警告に使うことを想定しているようです。
具体的には、例えば農作物の温室栽培で、室温が25度は絶対に超えては行けない場合25度を超えると換気する必要がありますが、25度になったら知らせるのではなく、例えば23度を超えたら警告をする、などの用途に使えます。この場合、INT割り込み信号の高温を25度、CT割り込み信号発生温度を23度に設定します。
とは言っても、このモジュールではINTピン、CTピンともに接続されていませんので、使用することはできません。
0x0A: ヒステリシス温度
この設定について詳細に説明すると非常に長くなってしまいますので、簡単に説明します。ヒステリシス特性をご存知の方に向けた説明になります。先ほどのINT/CT割り込み発生する場合、設定温度の判定にヒステリシス特性を持たせます。
例えば、INT割り込みの高温設定を35度、ヒステリシス温度を1度に設定した場合、35度を超えるとINTピンが1になりますが、一度INTピンが1になると、34度(=設定温度の35度 – ヒステリシス温度の1度)を下回るまではINTピンは1のままになります。
0x0B: ID
このレジスタにはチップのIDが保存されています。値は0xCXということで、0xC0〜0xCFの値のいずれかになります。
0x2F: リセット指示
このレジスタになんらかの値を書き込むとADT7410がリセットされ電源投入直後の状態に戻ります。特にADT7410をリセットする必要はないと思いますが、I2C通信でNACKが返信された場合はリセットする、などの対応ができます。実践編ではそこまでのプログラムは作成しません。
以上がADT7410のメモリマップの説明です。次回の記事では、I2C通信手順について説明し、その後動作設定方法の詳細、温度データの取得と計算方法について説明します。
更新履歴
日付 | 内容 |
---|---|
2018.8.5 | 新規投稿 |