ラズパイでSPI通信できるようにするまで、ADコンバーターMAX1118



この記事では、ラズパイでSPI通信できるようにするまでの設定を紹介する。

今回SPI通信でやりとりするのは、ADコンバーターのMAX1118となる。
MAX1118は、2チャネル、シリアル8ビットのADコンバーターだ。
ADコンバーターを使えばラズパイからアナログ電圧を自由に読み取れる。

SPIの設定はぜんぜん難しくないのでぜひ挑戦してみよう。

ラズパイは、Raspberry Pi zeroを使用するが、他のラズパイでも本記事と同様の方法でSPIの設定はできるはずなのでぜひ参考に。






ラズパイとADコンバーターMAX1118の配線


ADコンバーターMAX1118

» 2ch・シリアル8ビットADコンバータ(MAX1118) DIP化モジュールキット: 組立キット 秋月電子通商-電子部品・ネット通販



ラズパイとMAX1118の配線は次の表のように接続した。
ラズパイではSPIで使う配線がすでに決められているので注意しよう。

MAX1118名称役割Pi接続先
1Vdd正電源電圧+5V
2Ch0アナログ電圧入力--
3Ch1アナログ電圧入力--
4GNDグランドGND
5(REF)I.Cリファレンス入力3.3V
6CNVST変換/スタート入力SPIO CS0 (GPIO 8)
7DOUTシリアルデータ出力SPIO MISO (GPIO 9)
8SCLKシリアルクロックSPIO SCLK (GPIO 11)



ラズパイでSPIを使えるようにするための設定


それではラズパイでSPIを使えるように設定していこう。

$ sudo raspi-config を実行してSPIの設定をしていく。

5番のInterfacing Optionsを選択。


P4のSPIを選択。


「Would you like the SPI interface to be enabled?」をYESにする。


以上でSPI通信が使えるようになった。

次に、PythonからSPI通信ができるようにライブラリをインストールしておこう。

Python 2.x系なら $ sudo pip install spidev で、Python 3.x系なら $ sudo pip3 install spidev でインストールする。

そしてここまでできたら、一応ラズパイを再起動しておこう。
$ sudo reboot

Raspberry Pi Zero W - ヘッダー ハンダ付け済み - ラズベリー・パイ ゼロ W ワイヤレス

Amazon




MAX1118のデータ送受信のフォーマット


Pythonプログラムを書く前に、ADコンバーターMAX1118の仕様を確認しておこう。

MAX1118のデータシートを確認すると、CNVST に送る信号を変えることよって CH0CH1 のどちらからデータを読むかを選択できるようになっている。

また、Dout からはアナログ電圧(8bit)のデータを読み取ることが可能だ。

CHO のフロー


CH1 のフロー

MAX1118データシートより

難しい話はさておき、実際にPythonでアナログ電圧を読み取ってみよう。
手を動かしていくうちに、SPI通信のイメージがつかめるはずだ。



Pythonでアナログ電圧を読み取ってみる


それではPythonでアナログ電圧を読み取ってみる。

話を簡単にするため、乾電池一本と抵抗で分圧した回路を用意した。



抵抗で分圧された地点をADコンバーターのCH0CH1 に接続して、それぞれの電圧をラズパイで読み取ってみよう。
(GNDはRaspberry Piと共通にすること。)





こんな感じで電圧値を読み取るPythonのプログラムを書いてみた。



spi.xfer2をもっと理解したい方はこちらで説明したので参考に

【MCP3008】ラズパイとADコンバーターのSPI通信を詳しく解説


MAX1118 ではCS端子を直接操作したいので、上のプログラムでは spi.no_cs = True のようにCSを使わない設定をしている。
このようにしないと GPIO.output(8, GPIO.LOW) のように出来なくなるので注意が必要だ。


実際にプログラムを実行した結果がこちら。


テスターで測った電圧と1/100以上の精度で一致していたので、ADコンバーターというものはかなり信頼できる。


写真や図解でよくわかる ラズパイZeroを使い倒す本 Raspberry Pi Zero/Zero W対応

本書ではRaspberry Pi Zero / Zero Wの概要から必要な周辺機器の説明、OSの導入やセットアップなどといった準備、そしてLinuxに初めて触れる人に向けてLinuxの基礎やシェルの操作などを解説しています。また、準備が整ったら実際に電子部品をRaspberry Pi Zero / Zero Wで制御する方法も解説しました。

KindleAmazon

Raspberry Pi ZeroによるIoT入門- Zero W 対応

本書は、大人から子供まで、初心者の方でも、ラズパイZeroとラズパイZero WをIoTのデバイスとして使いこなせるようになることを目的とした入門書です。また、ラズパイZeroとラズパイZero WをUSBケーブル1本でパソコンに接続できる便利な「Zero over USB」について、日本で初めて詳しく解説しました。

Amazon



あとがき


今回は、ADコンバーターとフォトトランジスタの電子部品300円のために、往復3時間をかけて自転車で秋月電子まで買い物に行った。
電車を使ってしまうと電子部品の買い物の値段より高くついてしまうのでなんだかバカバカしかったからだ。

秋葉原付近を自転車で移動すると、東京観光という感じでなかなか楽しいものだ。


普段は遠くからしか眺めないスカイツリーも、近くで見るとかなり迫力があって驚く。





あなたにおすすめ