SPI温度センサADT7310を使う(1)

アナログ・デバイゼズ社のSPI制御 16ビット温度センサIC ADT7310を使ってみます。秋月電子でSIP基板に実装されたものを見つけましたので、それを利用して、Arduinoで温度が測定できるようにします。なお、先に紹介したI2C制御のADT7410とはインターフェースが異なる以外はほぼ同じものです。

pic130927-006

●やること(予定)

まず、Arduino互換機(CQガチャduino;WSN282/WSN283)に接続してシリアルで温度が読み出せることを確認します。SPIは汎用のI/Oポートを使って制御するのも簡単ですが、今回はArduinoのSPIライブラリを使用するため、SPIのハードウェアを利用します。
次にSPIバスに並列にSDカードを接続し、測定結果をSDカードへ書き込みます。SDカードとSPI信号(CS;チップセレクトを除く)を共用するのがミソです。

なお、ここでは、CQガチャduinoを使用しますが、Arduino(互換機)は何でも構いません。また、PICなど他のMPUに接続する場合の参考にもなると思います。

まずは、ADT7310について説明しますが、温度測定に関してはレジスタ構成は異なりますが、それ以外はADT7410と同じです。

●温度センサADT7310の仕様

ADT7310は校正や直線補正などが一切不要な高精度のディジタル温度センサICです。符号付きの16ビットまたは13ビットの分解能があります。測定範囲は-55℃~150℃となっています。

おもな仕様をまとめます。

  • 電源電圧 2.7V~5.5V
  • 分解能 16ビット時 0.0078℃、13ビット時 0.0625℃
  • 測定温度範囲 -55℃~150℃
  • 精度 ±0.5℃(-40℃~105℃ 電源電圧2.7V~3.6V時)

●秋月のモジュールについて

SOICのパッケージをSIP変換基板に実装したもので、ブレッドボードに実装可能です。現在の価格は500円です。単純にピンをSIP形状にしたもので、 “CT”と”INT”の2端子が接続されていないため、範囲検出などの電気的な信号が使えませんので、今回は説明を省略します。

pic130927-005

●レジスタ構成、アクセス方法

レジスタは0×00~0×07の8つあります。レジスタ一覧を次表に示します。温度値関係のレジスタは16ビット、それ以外は8ビット構成です。( )の数字は、コマンドバイトに続けてリード/ライトするパラメータのバイト数を示します。

ADT7310_02

レジスタにアクセスする際は、最初にレジスタアドレスを含むコマンドバイトを書き込んでレジスタを選択し、続けてパラメータバイトをリードまたはライトします。8ビットの場合は1回、16ビットの場合は2回続けてアクセスします。コマンドバイトの中身は次のようになっています。

ADT7310_01

リードするか、ライトするかはコマンドバイトのC6で設定します。C2のContinuous readはContinuous modeのときだけ有効です。

●Configuration register

動作モードや分解能などを設定するレジスタです。パワーオン時のデフォルトは分解能が13ビット、Continuous read モードに設定されています。
次にレジスタ0×01(Configuration register)のビットアサインの図を示します。グレー部分は今回使用しないため省略します。

ADT7310_03

●動作モード

4つのモードがあります。順に説明します。

CONTINUOUS READ MODE(連続読み出し)
連続して測定、変換するモードです。リセット直後のデフォルト状態です。 configuration register (0×01)のBit[6:5]をに”00″に設定するとこのモードになります。
コマンドバイト(0×54)を一度書き込むと、それ以降は2バイトのリードのみで温度値が繰り返し読み出せます。
このモードを抜けるにはコマンドバイト(0×50)を書き込みます。
なお、変換途中で温度値レジスタ(temperature value register)を読み出すと0が返ります。
(修正 13/09/05)

ONE-SHOT MODE(ワンショット)
単発で測定するモードです。 このモードに設定するとただちに測定、変換を実行し、完了後にシャットダウン状態に移行します。 結果は240ms以上待ってから読み出します。なお、シャットダウン中でもレジスタのリード、ライトは可能です。 configuration register (0×01)のBit[6:5]をに”01″に設定することでイネーブルになります。 同レジスタに再び”01″を設定すると再びワンショット測定、変換が実行されます。

1 SPS MODE(1秒周期)
1秒周期で測定するモードです。 60msで測定、変換を完了し、残り940msは待機します。これを繰り返します。 configuration register (0×01)のBit[6:5]をに”10″に設定することでイネーブルになります。

SHUTDOWN MODE(シャットダウン)
温度測定、変換回路をシャットダウンします。シャットダウン中もレジスタのリード・ライトは可能です。 configuration register (0×01)のBit[6:5]をに”11″に設定すると移行します。


当記事の記載内容は、マニュアルを元に筆者が作成したものですが、誤りや実験結果により相違がある場合は逐次訂正します。この記事を利用した結果で何らかの不具合が発生しても責任は負えませんのでご了承ください。なお、記事や図などの無断転用はご遠慮願います。

参考文献 ADT7310データシート(英文) D07789-0-12/11(A)
アナログ・デバイゼズ社のWEBサイトよりダウンロード可能

(続く)

コメントは受け付けていません。