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の接続
データシートは次のようになっています。
ESP32 | MCP3425 |
GND | VSS |
VIN3.3 V | VDD |
GPIO22 | SCL |
GPIO21 | SDA |
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);
}
動作確認
ニッケル水素電池を接続してみたところです。
ディスカッション
コメント一覧
まだ、コメントがありません