ESP32でMCP3425を使用して電圧測定【ADC】

ESP32モジュールのADCは値の変動が大きいので専用のADCモジュールを秋月で購入。

MCP3425のスペック

分解能16bit
基準電圧2.048 V ±0.05%
インタフェースI2C
電源電圧2.7 V ~ 5.5 V
消費電力145 μA (VDD 3 V、連続変換時)

ライブラリのインストール

ライブラリマネージャーから「mcp34」を検索し、「MCP342x」ライブラリをインストール。

ESP32とMCP3425の接続

データシートは次のようになっています。

ESP32MCP3425
GNDVSS
VIN3.3 VVDD
GPIO22SCL
GPIO21SDA
VIN+(入力)
VIN-(入力)

スケッチ

このスケッチを書き込むと、電圧がシリアル出力されます。

#include <Wire.h>
#include <MCP342x.h>

uint8_t address = 0x68;
MCP342x adc = MCP342x(address);

void setup(void)
{
  Serial.begin(115200);
  Wire.begin();

  MCP342x::generalCallReset();
  delay(1);

  Wire.requestFrom(address, (uint8_t)1);
  if (!Wire.available()) {
    Serial.print("指定のデバイスが見つかりません。");
    Serial.println(address, HEX);
    while (1);
  }

}

void loop(void)
{
  long value = 0;
  MCP342x::Config status;

  uint8_t err = adc.convertAndRead(MCP342x::channel1, MCP342x::oneShot,
           MCP342x::resolution16, MCP342x::gain1,
           1000000, value, status);
  if (err) {
    Serial.print("Convert error: ");
    Serial.println(err);
  }
  else {
    Serial.print("Value: ");
    Serial.println(value * 2.048 / 32767);
  }

  delay(1000);
}

動作確認

ニッケル水素電池を接続してみたところです。