読者です 読者をやめる 読者になる 読者になる

気ままにIoTメモ

Iotに関わること関わらないこと備忘録

I2C制御16bit ADC MCP3425(1)

Raspberry Pi にいがた暮らしIoTアイデアコンテスト プログラミング

秋月に1個250円で売っているI2C制御16bit ADCのMCP3425に関するメモ。

特徴

  • 2.7V〜5.5V動作
  • 精度により測定周波数が変わる(16bit精度では15 SPS)
  • 内部に2.048V±0.05%(Vref)の基準電圧
  • ×1・×4・×8のPGA
  • Vin = (Vin+) - (Vin-)の 差動入力が測定可能
  • 測定範囲は-Vref <= Vin * PGA <= Vref

回路は端子の名前通りに繋ぐだけです。

f:id:htn_hs:20170115133548j:plain

今回はV-端子をGNDに接地させて、シングルエンド入力で使いました。
動作を見るだけなので今回だけパスコンは省略。

npm install q
npm install i2c
var Q = require('q');
var i2c = require('i2c');
var address = 0x68;
var wire = new i2c(address, {device: '/dev/i2c-1'});

Q.delay(10)
    .then(function(){
        wire.writeByte(0x88, function(err){
        })
    })
     .delay(70)
     .then(function(){
         wire.read(3, function(err, res){
             var int16value = res[0] << 8 | res[1];
             var voltage = 0.0000625 * int16value;
             console.log(int16value.toString(16) + ' -> ' + voltage + '[V]');
             console.log(res[2].toString(16));
         });
     });

16bit精度で測定するために、ワンショットの測定になっています。PGAは1倍にしたため、+2.048Vまでが測定範囲です。70msのディレイは1/15SPS=66mから計算しています。

f:id:htn_hs:20170115132555p:plain

テスタでの測定値は1.230Vだったので正しく動作しているようです。