ADT7410を用いた温度データ取得方法

ADT7410データシート

ADT7410のデータシートはこちらを参照ください。

スペック

  • 電源電圧;2.7~5.5V
  • 消費電流;210uA
  • 温度の確度;±0.4℃(-40~105℃、3.0V時)
  • 測定温度;-55~150℃
  • 温度の分解能;0.0078℃
  • 温度変換時間;240ms
  • インターフェース;I2C
  • I2Cデータ転送速度;0~400kHz

ステップ

  1. ADT7410をpinとはんだ付けする
  2. ADT7410をブレッドボードに付け回路を作る
  3. I2C有効化
  4. ちゃんとつながっているか確認
  5. Pythonでプログラムを作る

1. ADT7410をpinとはんだ付けする

adt01a-400wri.png (176.0 kB)

このようにpinと基盤が分かれているのではんだ付けをしてくっつける。 (これは勉強会で実演します)

2. ADT7410をブレッドボートに付け回路を作る

ADT7410a.png (131.9 kB)

00020.jpg (50.3 kB)

3.I2C有効化

Raspberry PiでI2Cを使えるようにする方法を解説しています。

I2Cとは?

I2C(Inter-Integrated Circuit)は、周辺デバイスとのシリアル通信の方式です。 I2Cは同じ基板内のような近距離で直結したデバイスとシリアル通信するための規格であり、離れた装置間の通信には向いていません。 Raspberry PiでI2Cを使えるようにすることで、I2C対応のモジュールを制御することができるようになります。

I2C有効化

SSHを有効化した時と同様にI2Cも有効化する - 設定画面を開く $ sudo raspi-config

  • 上から5番目、"Interfacing Options"を選択
  • ”P5 I2C” と "P7 1-Wire"を有効化(enable)する cb380bf67fa69a8323cf1a1561b0728b.png (21.0 kB) f47b1989e7203cd5a99adbb0d44310a2.png (22.5 kB)

  • 再起動 $ sudo reboot

  • smbusというpythonのパッケージをインストールしておく $ sudo apt-get install python-smbus

  • 終わり👍

4.ちゃんとつながっているか確認

  • 以下のコマンドを入力 $ sudo i2cdetect -y 1

  • 以下のようなものが表示される c6c1ddea3eaaea67297edc236de5425c.png (24.2 kB)

  • 接続されたデバイスのアドレスが表示される。ADT7410はデフォルトでは48を返すので、以下のようになっていたらOK

    $ sudo i2cdetect -r -y 1
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    

  • これが表示されなければ何かがおかしいのでどうにかしてください

5.Pythonでプログラムを作る

  • 以下のプログラムを入力(コピペでもいいお)

    import smbus
    
    i2c = smbus.SMBus(1)
    address = 0x48
    
    block = i2c.read_i2c_block_data(address, 0x00, 12)
    temp = (block[0] << 8 | block[1]) >> 3
    if(temp >= 4096):
       temp -= 8192
    print("Temperature:%6.2f" % (temp / 16.0))
    

  • 実行してみる $ python adt7410.py

  • 以下のように表示されたらOK $ Temperature: 23.31

おまけ

  • 温度換算式 Negative Temperature = (ADC Code (dec) − 8192)/16