Blog::Trapple

技術系のちょっとしたメモとか

IC温度センサー LM35DZで温度を取得する(配線編)

Raspberry PiにはLM35DZなどを利用するためのアナログ入力が無いので、ADコンバータを利用します。
このADコンバータを利用するにはSPI(Serial Peripheral Interface)という通信方法を使う必要があります。

主な環境・利用パーツ

  • 温度センサー LM35DZ URL
  • ADコンバータ MCP3002 URL
  • Raspberry Pi 2 MODEL B URL
  • Raspbian GNU/Linux 7 (wheezy) URL
  • Node.js v5.0.0

SPIを有効にする

Raspberry Piの初期設定ではSPIが無効になっているので、これを有効にします。

sudo raspi-config
  • 8 Advanced Options.
    • A6 SPI
      • Would you like the SPI interface to be enabled? <はい>
      • Would you like the SPI kernel module to be loaded by default? <はい>

注)OSのバージョンが違うと設定方法が変わる可能性があります。

SPI確認

lsmodで確認する

カーネルの読み込むモジュールのリストを表示し、spiが読み込まれているか確認します。

% lsmod | grep spi
spi_bcm2835

接続のテスト

SPI_MOSIとSPI_MISOを直結します。

wget https://raw.githubusercontent.com/raspberrypi/linux/rpi-3.10.y/Documentation/spi/spidev_test.c
gcc -o spidev_test spidev_test.c
./spidev_test -D /dev/spidev0.0

ちゃんと設定ができていれば次のように出ます。

trapple-no-pi% ./spidev_test -D /dev/spidev0.0
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)
FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
F0 0D

配線

GPIOのみの接続に比べると一気に複雑になりました。
Raspberry Piのピン番号で言うと、19,21,23,24,26がSPI関係のピンになります。まずこれらをMCP3002と繋ぎます。 次にLM35DZとMCP3002を繋ぎます。 最後にそれぞれ電源とGNDを繋ぎます。

f:id:trapple:20151121100601p:plain:w320 f:id:trapple:20151121100652p:plain:w320

target MCP3002 MCP3220 target
24. Raspberry Pi GPIP 8 (CE0) 1. CS/SHDN 8. VDD Raspberry Pi 3.3V
LM35DZ VOUT 2. CH0 7. CLK 23. Raspberry Pi GPIO 11 (SCLK)
* 3. CH1 6. DOUT 21. Raspberry Pi GPIO 9 (MISO)
Raspberry Pi GND 4. VSS 5. DIN 19. Raspberry Pi GPIO 10 (MOSI)
LM35DZ target
+Vs Raspberry Pi 3.3V
Vout MCP3002 CH0
GND Raspberry Pi GND

ブレッドボード

f:id:trapple:20151121100755p:plain:w480

配線図

f:id:trapple:20151121100832p:plain:w480

続きはプログラミング編(予定)で!

参考