●MCP3425 16BIT AD変換内蔵 ゲイン8倍増幅 基準電圧内蔵 出力は、I2C通信のみである。 アナログ波形を得るのにI2C通信である為 PICマイコンかArduinoで波形の数値を読み取り 波形に処理する必要がある。 電圧では、出ない。 電源 単電源 1 VIN+ 2 VSS 3 SCL 4 SDA 5 VDD 6 VIN‐ ゲインは、選択できる 8BITの設定で AD変換 12BIT 16BIT 1倍 2倍 4倍 8倍を選べる。 I2Cアドレスは、0b1101000 = 0x68固定で100kHzから400kHzで通信できる。最大は、4MHz 0b10011011でゲイン8倍 16BIT分解である。 処理時間 15SPS 選択設定BITは、以下のようになるが分解能によって処理時間が掛かる。 分解能による delayの遅延時間は、以下になる。 0b1001 0000 0 12bit 0b1001 0101 2 14bit 0b1001 1010 4 16bit 0b1001 1011 8 16bit 00 12bit 240SPS 1000mmS/240 =5mmS 01 14bit 60SPS 1000mmS/60 =17mmS 10 16bit 15SPS 1000mmS/15 =67mmS 00 0倍 01 2倍 10 4倍 11 8倍 8BIT 1変換 0 無変換 5BIT 1連続変換 01回変換 3BIT4BIT 12,14,16 分解能 1BIT2BIT ゲイン倍率 1,2,4,8
以下のテストコードを実行
youtubeの適当な音楽動画をパソコンのイヤホンジャックから
+端子をMCP3425の1 +Vin端子のみに 2の‐VinをGNDへ接続して
音楽動画の波形を取り込んだ数値の結果である。
テスト用ソースコード
#include
#define adr 0b10011011
long data;
long dataA;
long dataB;
void setup() {
Wire.begin();
Serial.begin(115200);
Wire.beginTransmission(0x68);
Wire.write(adr);
Wire.endTransmission();
delay(2);
}
void loop() {
Wire.requestFrom(0x68,2);
data=(dataA = Wire.read()<< 8)+
(dataB = Wire.read());
Serial.println(String (data,DEC));
delay(67);
}
※ コード修正箇所
data=(dataA = Wire.read())+
(dataB = Wire.read());
修正後
data=(dataA = Wire.read()<< 8)+
(dataB = Wire.read());