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);
}動作確認
ニッケル水素電池を接続してみたところです。






ディスカッション
コメント一覧
まだ、コメントがありません