LoginSignup
7
10

More than 5 years have passed since last update.

Raspberry pi Zero と ADコンバーター(MCP3008)を使って光センサーにトライ

Last updated at Posted at 2018-07-28

Raspberry piでアナログセンサーを使うことにチャレンジしてみます。Raspberry piのGPIOではアナログの入出力のうち、出力はPWM(パルス幅変調)による擬似アナログ出力が可能ですが、アナログ入力には対応していません。
そこで必要になってくるのがADコンバータです。このコンバータにはいくつも種類があるのですが、今回は秋月でMCP3008を購入して試してみました。
光センサーにはCdSセルの光センサーを利用しています。


参考にしたサイト

ADコンバータは使ったことがなかったのですが、下記のサイトはデータシートの引用も交えて分かりやすかったので参考にさせて頂きました。
ありがとうございます。


配線

上記のサイトを参考に配線しています。線の数は多いですが、分かってしまえば何ともないです。


ピンの対応一覧

※MCP3008側はデータシート参照

RPi(3V3, 1pin) < — > MCP([Vdd,Vref],[16pin,15pin])
RPi(GND, 6pin) < — > MCP([AGND,DGND],[14pin,9pin])
RPi(SCLK, 23pin) < — > MCP(CLK,13pin)
RPi(MISO, 21pin) < — > MCP(Dout, 12pin)
RPi(MOSI, 19pin) < — > MCP(Din, 11pin)
RPi(CE, 24pin) < — > MCP(CS, 10pin)

Pythonコード

from gpiozero import MCP3008
from time import sleep
tmp = MCP3008(channel=0, device=0)

while True:
    temperature = (tmp.value * 3.3) * 100
    print (round(temperature,5))
    sleep(0.5)

実装に当たって

3.3V電源、MCP3008のチャンネル1につないでいる前提のコードです。
参考サイトではspidevパッケージを使ったのですが、何故か読み取れませんでした。
そこで、MCP3008モジュールが含まれているgpiozeroパッケージを導入したところ、期待通り光センサーの変化を測定することができました。


最後に

ADコンバータに初めて触れましたが、始めるまでの心理的なハードルは高かったものの、やって見るとちゃんと動いてくれたので達成感は大きかった。
チャンネルは1つしか試せてませんが、8chまで対応しているので、
他のセンサーも同時に扱ってみようと思います。
ところでspidevだとうまく動かない理由は何なんでしょうか・・・

7
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10