電電高専生日記

MCP3204とRaspberryPiでAD変換

2015/02/27 21:45

概要

RaspberryPiとADコンバータICのMCP3204を使って、AD変換をしてみました。
MCP3204は、端子1本1本が1つのビットを表すパラレル通信ではなく、1本の端子で複数のビットを受け取りするシリアル通信をするICなので、プログラムによる制御が必要です。
正直なかなかうまくいかずに苦労しましたが、多くのWEBサイトを参考にしてやっと成功しました。

使用機器

  • RaspberryPi Type B+
  • 12ビット4ch ADコンバータ MCP3204-B/P

MCP3204の接続

各端子を以下のように接続しました。
*1番ピン CH0 ... アナログ電圧入力
*2番ピン CH1 ... 開放
*3番ピン CH2 ... 開放
*4番ピン CH3 ... 開放
*5番ピン NC ... 開放
*6番ピン NC ... 開放
*7番ピン DGND ... RaspberryPiのGNDピン
*8番ピン VDD ... 駆動電圧 5[V]
*9番ピン VREF ... 基準電圧 5[V]
10番ピン AGND ... 電源のGND
11番ピン CLK ... RaspberryPiのSPI_SCLKピン
12番ピン DOUT ... RaspberryPiのSPI_MISOピン
13番ピン DIN ... RaspberryPiのSPI_MOSIピン
14番ピン CS/SHDN ... RaspberryPiのSPI_CE0ピン
接続の様子

アナログ電圧入力の回路は以下の形。
アナログ電圧入力の回路
Cdsセルを光から遮断すると電圧値が上がります。

RaspberryPi側の準備

ハッキリ言って全部WEB上で調べたことをそのままやっただけなので、かなり簡略してメモという形で記します。
・/etc/modulesにspidevを追加
・/boot/config.txtにdtparam=spi=onを追加
・gpio load spiコマンドでSPI有効化
・プログラムを書く
一番重要なプログラムについてなんですが、以下のWEBサイトを参考に作成しました。wiringPiを使っています。
MCP3002/MC3204を使う(低水準IO編)
正直私は理解できていない部分が多いです。

動作の様子

プログラムをコンパイルして実行すると、ちゃんと動作しました。以下、その様子。

1秒ごとに値を出力させています。Cdsセルを遮断するとちゃんと電圧値が大きくなっています。

感想

プログラムのあたりが難しくてよく理解できていないです。
というか、別にこんな高精度なADコンバータを使う必要はなかった。別にまだ作りたいものがあるわけでもないのに。

参考にさせていただいたサイト・本

  • このエントリーをはてなブックマークに追加

最新記事

コメント(0)





プロフィール

名前:elkosendiary

性別:男

生年:1995年


2011年4月 高専入学
2016年3月 高専卒業
2016年4月 大学編入学
2018年3月 大学卒業予定

にほんブログ村 大学生日記ブログ 理系大学生へ
にほんブログ村

カテゴリ
Adsense
月別アーカイブ
ブログ内検索

おすすめ記事

「高専大学編入ログ」を作成しました

自作ゲーム「Defend PortMoresby!」バージョン3

【改良版】 RaspberryPiで作ったカメラ付き戦車ラジコン