Unit VMeter コンポーネントは、I2C 経由で電圧測定データを読み取ります。
| 項目 | 情報 |
|---|---|
| 製品名 | Unit VMeter |
| SKU | U087 |
| 主な機能 | DC 電圧の測定 |
| 通信インターフェース | I2C |
| デフォルト I2C アドレス | ADS1115: 0x49、EEPROM: 0x53 |
| ESPHome コンポーネント | ads1115、template |
| 必要な ESPHome バージョン | / |
Unit VMeter は公式の ADS1115 センサーで差動電圧を読み取り、I2C Device で EEPROM の校正パラメータを取得し、Template センサーで入力電圧に変換します。
Unit VMeter の設定例:
ads1115:
- address: 0x49
sensor:
- platform: ads1115
multiplexer: "A0_A1"
gain: 1.024
sample_rate: 128
name: "Unit VMeter A0_A1 Ref"
id: diff
update_interval: 10sAIN0 と AIN1 のみを使用するため、multiplexer は最大 3 種類("A0_A1"、"A0_GND"、"A1_GND")を使用できます。電圧測定では A0_A1 のみを使用します。Template Sensor で電圧エンティティを作成します。以下の sensor エントリを前述の ADS1115 リストに統合してください。i2c_device:
id: eeprom
address: 0x53
sensor:
- platform: template
name: "Input Voltage"
id: input_volt
unit_of_measurement: "V"
icon: "mdi:flash"
accuracy_decimals: 2
update_interval: 10s
lambda: |-
float d = id(diff).state;
if (isnan(d)) return NAN;
const float PRESSURE_COEFF = 0.015918958f;
const uint8_t EEPROM_REG = 0xE8;
uint8_t calib[8];
uint16_t hope, actual;
if (id(eeprom).read_register(EEPROM_REG, calib, 8) != i2c::ERROR_OK) {
ESP_LOGD("vmeter.sensor", "Failed to read from EEPROM..");
return NAN;
}
uint8_t xor_result = 0x00;
for (uint8_t i = 0; i < 5; i++) xor_result ^= calib[i];
if (xor_result != calib[5]) return NAN;
hope = (calib[1] << 8) | calib[2];
actual = (calib[3] << 8) | calib[4];
float calibration_ratio = (float) hope / actual;
ESP_LOGD("vmeter.sensor", "Factory calibration factor: %f", calibration_ratio);
float vin = -d / PRESSURE_COEFF;
vin = vin * calibration_ratio;
return vin;gain に応じて EEPROM_REG を設定します。// lambda 式内
// gain を変更したら EEPROM_REG も更新する
// 例: gain が 1.024 の場合
const uint8_t EEPROM_REG = 0xE8;| ADS1115 Gain | EEPROM Data Register | Max Input Voltage (theory) |
|---|---|---|
| 6.144 | 0xD0 | - |
| 4.096 | 0xD8 | - |
| 2.048 | 0xE0 | - |
| 1.024 | 0xE8 | 64 V |
| 0.512 | 0xF0 | 32 V |
| 0.256 | 0xF8 | 16 V |
推奨する gain は 0.256、0.512、1.024 です。16 V 未満の分解能は 1 mV、16 V 超では 7.9 mV です。測定電圧に適した gain と EEPROM 校正値を選択してください。正確な測定のため、AIN0 または AIN1 の一方だけを使用し、両方に入力を接続しないでください。
Dashboard に追加すると、Home Assistant でセンサーデータを確認できます。