プログラマブル・ゲイン・アンプMCP6S22

 最近のA-Dコンバータには内部にプログラマブル・ゲイン・アンプPGAが入っていることが多いです。ここでは、単独で使える8ピンのDIP形状のPGA MCP6S22を使って機能を確かめます。秋月電子通商で入手しました。ゲインの設定はSPIインターフェースを通して行います。

MCP6S22のおもなスペック

  • 入力電圧範囲 シングルエンド0~Vdd
  • 動作電圧 2.5~5.5V
  • 入力チャネル数 2
  • ゲイン x1、x2、x4、x5、x8、x10、x16、x32
  • 帯域 2~12MHz
  • SPI転送速度 最大10MHz

接続

 Arduino UNOは5V動作です。次のようにMCP6S22と接続します。

MCP6S22 Arduino UNO
1  出力  -
2 入力1  -
3 入力2  -
4 Vss GND
5 /CS 10 SS
6 SI 11 MOSI
7 SCK 13 SCK
8 Vdd +5V

スケッチ

 それぞれ、8ビット長のINSTRUCTION REGISTER、GAIN REGISTER、CHANNEL REGISTERの各レジスタが三つあります。次のように、2バイトの命令を送ると、設定ができます。

  • ゲイン INSTRUCTION REGISTER+GAIN REGISTER
  • 入力チャネル INSTRUCTION REGISTER+CHANNEL REGISTER

 ゲインを設定するとき、INSTRUCTION REGISTERは0b01000000、GAIN REGISTERは、次の値を設定します。

  • 0b00000000 = 1 (Default)
  • 0b00000001 = 2倍
  • 0b00000010 = 4倍
  • 0b00000011 = 5倍
  • 0b00000100 = 8倍
  • 0b00000101 = 10倍
  • 0b00000110 = 16倍
  • 0b00000111 = 32倍

 入力チャネルを設定するとき、INSTRUCTION REGISTERは0b01000001、CHANNEL REGISTERは、次の値を設定します。

  • 0b00000000 = チャネル1 (Default)
  • 0b00000001 = チャネル2

 波形を見るためにloop()にSPIの実行部を記述していますが、本来ならsetup()で一度実行すればよいです。

#include <SPI.h>
#define SS 10

SPISettings settings(1000000,MSBFIRST,SPI_MODE0);

void setup() {
  pinMode(SS, OUTPUT);
  Serial.begin(9600);
  SPI.begin();
}

void loop() {
  SPI.beginTransaction(settings);
    digitalWrite(SS, LOW);
      SPI.transfer(0b01000000); // INSTRUCTION REGISTER
      SPI.transfer(0b00000010); // GAIN REGISTER
    digitalWrite(SS, HIGH);
  SPI.endTransaction();
}

 オシロスコープは、PicoScopeの5242Bを利用します。SCK(クロック)とSI(MOSI)の信号です。MCP6S22はmode0とmode2をサポートしています。

 ICの入力1端子に発振器(1kHz、1V0-p)の信号を入れてch1のプローブで観測し、出力をch2のプローブで見ています。
 設定どおり4倍になっています。

小信号で周波数を上げる

 1kHz、10倍に増幅します。

 100kHzに周波数を上げます。

 1MHzに上げます。立ち上がりが相当なまってきました。

 いままでは200mVの入力信号でした。1/10の20mVにします。

 逆に大きな入力レベル、1V0-pにします。今度は、立ち下がりの特性も悪くなりました。

32倍

 センサ類の値の変化は緩やかです。10Hzの100mV0-pを、最大増幅率の32倍に拡大しました。オフセットが目立ち、0Vであるべきところで288mVの電圧が出ています。ピーク・ツー・ピークは3.198Vなので、32倍に増幅されていることがわかります。

レール・ツー・レール

 入力1V0-p、ゲインを5倍にしました。
 このデバイスの特徴はレール・ツー・レールです。0V付近はわずかにオフセットがありますが、ほぼ0Vです。しかし、Vddは5Vですが、4.75Vと到達できていません。

前へ

M5Stackで始めるセンサ・インターフェーシング(8) 気圧センサLPS25HBを利用

次へ

初めてのBLE (19) Feather nRF52840 Sense①準備