I2C温度センサー

投稿日:

ちょっと前にI2Cの温度センサー基板を買っておいたので,朝からちょっと工作をして Raspberry Piとつないでみた.

20131027_rpi_temp

 

I2C以外にもHDMI,Ether,USBがつながっている状態.I2Cの結線は回路図(PDF)から以下のようにした.

  • RPIのP1: 1 (3.3V) → 温度センサーのV+端子
  • RPIのP1: 3 (SDA1) → 温度センサーのSDA端子
  • RPIのP1: 5 (SCL1) → 温度センサーのSCL端子
  • RPIのP1: 9 (GND) → 温度センサーのGND端子

ちなみに使った温度センサーはここのTMP102という温度センサーチップの載った基板.マニュアルによるとADD0ピンの接続先でアドレスが変わるというので,基板のレジストをはがしてGNDとショートさせて,アドレスを0x48に設定した (C1の右下の半田の盛ったところ).また,SDAとSCLはRaspberry Pi上でプルアップされているので,この基板のプルアップ抵抗 R1,R2 (ともに1608サイズの1kΩ)は取り外した.

20131027_i2c_temp

で,Raspbianから動作確認.i2cdetectでアドレスを確認.

# i2cdetect -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: -- -- -- -- -- -- -- --

確かに0x48で見えている.

次に,レジスタの読み出し.

  • レジスタ0: 温度
  • レジスタ1: コンフィギュレーションレジスタ
  • レジスタ2: T_LOW
  • レジスタ3: T_HIGH

だそうなので,順に読みだしてみた.

# i2cget -y 1 0x48 0 w
0xd015
# i2cget -y 1 0x48 1 w
0xa060
# i2cget -y 1 0x48 2 w
0x004b
# i2cget -y 1 0x48 3 w
0x0050

レジスタ0の読み出し結果が0xd015になっているが,バイト0の下4ビットは0のはずなので,エンディアンが逆っぽい。0x15d0だとすると,0x15d0 = 5584, 5584/256 = 21.8125℃.ほぼ室温.

読み出しはi2cdumpでもいいみたい.

# i2cdump -y -r 0-3 1 0x48 w
     0,8  1,9  2,a  3,b  4,c  5,d  6,e  7,f
00: f015 a060 004b 0050

温度がちょっと変わったらしい.

今回はテスト用に短めの線でつないだけど,もう少し長くして情報盤 (LAN SWとTVブースターが入っている) の内部温度をモニターしようと思う.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です