Raspberry Pi 3 model Bが入手できました (6)
■SPIインターフェースのA-Dコンバータでアナログ入力
アナログ入力処理のサンプル・プログラムとしてTempSensorが用意されています。Raspberry Piにはアナログ入力ポートが用意されていません。そのため、このTempSensorのサンプル・プログラムではSPIインターフェースのA-DコンバータICを外付けして対応することで解決しています。
この外付けのA-DコンバータとしてMicrochip TechnologyのMCP3002、MCP3008、MCP3208の3種類を対象としています。
型番 | 分解能(ビット数) | チャネル数 |
---|---|---|
MCP3002 |
10 |
4 |
MCP3008 | 10 | 8 |
MCP3208 | 12 | 8 |
今回は、12ビットの分解能で8チャネル入力のMCP3208を利用します。
TempSensorのサンプル・プログラムは「IoTへの挑戦 Raspberry PiでWindows 10 IoT Coreを動かす(5)」
でダウンロードしたsamples-developのフォルダの中にあります。この中のTempSensor¥CSフォルダ内のTempSensor.slnのプロジェクトファイルを開いてサンプル・プログラムのテストを開始します。
サンプル・プログラムはMCP3002のA-Dコンバータを対象としています。プログラムは、基本的には3種類のA-Dコンバータに対応できます。
次に示すように、プログラムの2か所をMCP3002からMCP3208に修正するだけで、対象A-DコンバータがMCP3002からMCP3208に変更できます。
具体的な変更場所は次のとおりです。
(1) 次のADCChip型のwhichADCChipにmcp3002を設定している次の命令を、
ADCChip whichADCChip = ADCChip.mcp3002; |
次のように変更します。
ADCChip whichADCChip = ADCChip.mcp3208; |
(2) MainPage()関数のタイマ処理の後の次の命令を、
whichADCChip = ADCChip.mcp3002; |
次に示すように、mcp3208のチップを利用するように変更します。
whichADCChip = ADCChip.mcp3208; |
●テスト・ボード
MCP3208のA-DコンバータはDIP 16ピンですので、次に示すようにブレッドボードに挿し込んでRaspberry Pi 3とジャンパ線で接続します。
サンプル・プログラム、A-Dコンバータの入力値をそのまま画面に表示しているだけです。センサの代わりに、次に示すようにボリュームにジャンパ線をはんだ付けし、電源電圧をボリュームで分圧したものをアナログ入力データとします。ボリュームは5kΩ(B)を使いましたが、10kΩでも同じように使えます。
●MCP3208のピン配置
MCP3208のピン配置図を次に示します。13ピンCLK(SPI_CLK)、12ピンDout(SPI_MISO)、11ピン Din(SPI_MOSI)、10 ピン/CS/SHDN(SPI_CE0)とRaspberry PiのSPI通信の端子をジャンパ線で接続します(カッコ内の青い文字はRaspberry PiのGPIO)。
●Raspberry Pi 3の40ピンのピンヘッダ
MCP3208とRaspberry Piの接続は、次に示す40ピンのピンヘッダの必要な機能をピンと接続します。
●MCP3208とRaspberry Piの接続
具体的なジャンパ線の接続方法を次に示します。
MCP3208 | Rasberry Pi | ||||
---|---|---|---|---|---|
SPI | |||||
13 |
CLK | --- | 23 | SPI_CLK | |
12 | Dout | --- | 21 | SPI_MISO | |
11 | Din | --- | 19 | SPI_MOSI | |
10 | /CS | --- | 24 | SPI_CE0_N | |
電源 | |||||
16 | Vdd(3.3V) | --- | 17 | +3.3V | |
9 | DGND | --- | 25 | GND |
●アナログ入力
MCP3208のチャネル0(CH0)に、電源電圧をボリュームで分圧した電圧を接続します。A-Dコンバータの基準電圧は電源電圧を利用します。また、アナログ入力のGNDとディジタル電源のGNDが、別に設定することもできるようにそれぞれ用意されています。しかしここでは両方のGNDを共通にします。そのための設定は次のようになります。
ピン番号 | 名称 | |
---|---|---|
アナログ入力 ボリューム中間タップ | 1 | CH0 |
+3.3Vのプラス電源 | 15 | Vref |
GND | 14 | AGND |
ボリュームからの電圧出力は、MPC3208の1番端子に接続します。
●サンプル・プログラムの実行結果
サンプル・プログラムを実行すると、次に示すメッセージとA-Dコンバータからの読み取り値が表示されます。
◆ボリュームを絞った状態
ボリュームの出力を増大すると、値も大きくなります。
◆ボリュームを最大近くまで増大したとき
MCP3208のA-Dコンバータは12ビットなので、最大で4095になります。
今回、Raspberry Pi 3 model Bで動作が確認できました。次回、Raspberry Pi 2 model Bでの動作の様子、サンプル・プログラムについてなど検討します。
(2016/6/14 V1.0)
<神崎康宏>