RaspberryPiでクランプメータの作成

IT系

SCT-013-030(電流トランス)、ADS1115(A/Dコンバータ)、Raspberry Pi Zero WHの組み合わせで実現可能です。

ただし、SCT-013-030の出力は交流(AC)電流であり、ADS1115は直流(DC)電圧しか測定できないため、電流を電圧に変換し、かつマイナス電圧を避けるための信号調整回路が必要になります。

ここでは、回路構成と、実用的なPythonでのデータ取得方法、および検証用のi2cgetコマンドの使い方を解説します。


1. 接続構成と必要な部品

ADS1115とRaspberry PiのI2C接続に加え、SCT-013-030の信号をADCで扱えるようにするための回路(信号調整回路)を組み込みます。

1.1 必要な部品

部品名数量目的推奨値
ピンヘッドフォンジャック(メス)1個SCT-013-030がピンジャックのため
抵抗 (Bias Resistor)2個AC信号をDC中心(1.65V)に持ち上げる10kΩ
電解コンデンサ1個DCバイアスとAC信号を分離する10μF〜47μF

1.2 接続図と配線手順

Step 1: Raspberry PiとADS1115のI2C接続

ADS1115はI2Cインターフェース経由でRaspberry Piに接続します。

ADS1115 PinRaspberry Pi Pin機能
VCC3.3V (Pin 1 or 17)電源
GNDGND (Pin 6, 9, 14など)接地
SCLSCL (Pin 5)I2C クロック
SDASDA (Pin 3)I2C データ
ADDRGNDI2Cアドレスを0x48に設定するための接続(未接続の場合はVCCに接続され0x49になる場合もありますが、今回はGND接続で0x48を確定させます)

Step 2: SCT-013-030とADS1115の信号調整回路

SCT-013-030の出力(AC信号)を、ADS1115の入力範囲(0V〜3.3V)に収まるように変換します。

SCT-013-030 は 「30 A → 約1.0V RMS」 を出すように作られているモデルが一般的です。

その “1.0 V @ 30 A” は 内部にあらかじめ burden 抵抗が入っていることを前提にした仕様です(内部 burden ≒ 62Ω 程度であることが多い)。

【信号調整回路の構成】

  1. DCバイアス: Raspberry Piの3.3V電源GNDの間に2つの10kΩ抵抗を直列に接続します。この抵抗の中点(接続点)の電圧は約1.65Vになり、これがAC信号の中心(バイアス電圧)になります。
  2. カップリング: DCバイアスの中点(1.65V)を**コンデンサ(10μFなど)**で接続し、ADS1115の入力ピンに繋ぎます。

ADS1115のA0ピンに入力される電圧:

1.65V ± 1.5V = 0.15V ~ 3.15V となり、ADS1115の測定範囲内に収まります。


2. i2cgetコマンドでの値の取り方(検証用)

ADS1115は非常に設定項目が多いADCであり、単純なi2cgetコマンドは設定の書き込みが難しいため、実際の電流計測には不向きです。しかし、I2C通信が機能しているか、または現在の変換レジスタの値を確認する用途には使えます。

前提作業

  1. I2Cの有効化: Raspberry Piの設定でI2Cを有効にします。
sudo raspi-config
  1. I2Cツールのインストール:
sudo apt update sudo apt install i2c-tools
  1. ADS1115の検出:Bash 結果の表に48が表示されていれば、アドレス0x48でADS1115が認識されています。
i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

ADS1115のレジスタ確認

ADS1115には主に2つのレジスタがあります。

  • Conversion Register (変換結果レジスタ): アドレス 0x00
  • Config Register (設定レジスタ): アドレス 0x01

変換結果レジスタ(0x00)の読み出し例

ADS1115がADSライブラリなどですでに設定・動作している前提で、現在の変換結果を読み出すには、ポインタレジスタを0x00に設定してから、2バイトを読み出します。

# i2cset [I2Cバス] [アドレス] [ポインタレジスタ] [値] [設定]
# i2cget [I2Cバス] [アドレス] [ポインタレジスタ] [読み出すバイト数]

# 1. 読み出し対象をConversion Register (0x00)に設定
sudo i2cset -y 1 0x48 0x00

# 2. 変換結果(2バイト)を読み出す
# (w)h: 16進数で2バイト(ワード)を読み出す
sudo i2cget -y 1 0x48 0x00 w

【注意点】

i2cgetで読み出される値は16進数のADC生データです。これを3.3節のPythonコードのように処理し、交流(AC)のRMS値を計算しないと、実際の電流値(A)は得られません。


3. Pythonによる推奨実装

実際のクランプメーターとして機能させるには、ADS1115を連続的にサンプリングし、測定されたAC波形のRMS(実効値)を計算する必要があります。Pythonライブラリを使用するのが最も簡単で確実です。

ここでは、Raspberry Piで広く使われる adafruit-circuitpython-ads1x15 ライブラリを想定したPythonコードを提供します。

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

sudo apt install python3-pip
sudo pip3 install adafruit-blinka
sudo pip3 install adafruit-circuitpython-ads1x15

3.2 ノウハウ:RMS値の計算

電流トランスの測定では、交流信号のピークではなく、**RMS(Root Mean Square: 実効値)**を計算する必要があります。

  1. 一定時間(例:1秒間)連続で電圧をサンプリングする。
  2. 測定値からDCバイアス電圧(約1.65V)を引いて、純粋なAC成分を取り出す。
  3. AC成分を二乗し、平均を取り、平方根を計算する。
  4. RMS電圧を電流に換算する。

3.3 クランプメーター(RMS計算)Pythonコード

このスクリプトは、ADS1115から電圧を読み取り、RMS値を計算して、実際の電流値を表示します。

ADS1115電流メーター(A0-GND)

#!/usr/bin/env python

import time
import math
import board
import busio
from adafruit_ads1x15.analog_in import AnalogIn
import adafruit_ads1x15

# --- 測定パラメータ設定 ---
# Raspberry Piの電源電圧(ADCの基準電圧)。
V_REF = 3.3

# ゲイン設定 (±4.096Vスケール)。測定したい最大電圧に合わせて調整します。
# CT出力の最大電圧は約1V RMS (約1.414V Peak)なので、ゲイン1が最適です。
GAIN = 1

# SCT-013-030の換算係数(A/V)。
# ユーザーの実測データに基づき、クランプメーターとの比較で校正した値を使用します。
# (クランプメーター 12.4 A / CT出力 0.301 V) = 約 41.196 A/V
CONVERSION_FACTOR = 41.196  # (A/V) - 校正済み

# RMS計算用設定: サンプリング時間(秒)。
SAMPLE_DURATION = 1.0

# I2Cの初期化
# I2C通信はSCL(クロック線)とSDA(データ線)を使用します。
try:
    i2c = busio.I2C(board.SCL, board.SDA)
except ValueError:
    print("エラー: I2Cバスの初期化に失敗しました。SCL/SDAピンの接続またはI2C設定を確認してください。")
    raise

# ADS1115の初期化 (I2Cアドレス 0x48, ゲイン設定)
# アドレスが異なる場合は (0x49 など) 変更してください。
ads = adafruit_ads1x15.ads1115.ADS1115(i2c, address=0x48, gain=GAIN)

# AnalogIn クラスを使用してチャネルA0(P0)を指定
# SCT-013-030の電圧出力端子(K)をADS1115のA0に接続し、もう一方の端子(L)をDCバイアス(V_REF/2)に接続している前提です。
try:
    chan = AnalogIn(ads, adafruit_ads1x15.P0)
except AttributeError:
    # ライブラリのバージョンによってはP0が使えない場合があるため、ピン番号 0 を試みます
    chan = AnalogIn(ads, 0)
    print("警告: adafruit_ads1x15.P0が見つかりませんでした。代わりにピン番号 0 を使用します。")

def calculate_current_rms(adc_input_channel):
    """
    ADS1115から一定時間データをサンプリングし、電流の実効値 (RMS) を計算する関数。
    """
    start_time = time.time()
    squared_sum_V = 0.0 # 電圧の二乗和を格納
    sample_count = 0
    
    # 信号調整回路の中心電圧 (DCバイアス: 3.3V / 2 = 1.65V)
    V_CENTER = V_REF / 2.0
    
    # 測定をSAMPLE_DURATION秒間継続
    while time.time() - start_time < SAMPLE_DURATION:
        # ADCから現在の電圧値を取得
        voltage = adc_input_channel.voltage
        
        # 1. DC成分(バイアス)を除去し、純粋なAC電圧V_ACを抽出
        V_AC = voltage - V_CENTER
        
        # 2. RMS計算のために、AC電圧の二乗値を合計
        squared_sum_V += V_AC ** 2
        sample_count += 1
        
    if sample_count == 0:
        # サンプルがゼロの場合は処理をスキップ
        return 0.0, 0.0

    # 3. AC電圧のRMS (実効値) を計算
    mean_squared_V = squared_sum_V / sample_count
    V_RMS = math.sqrt(mean_squared_V)
    
    # 4. 電流の実効値 (RMS) を計算 (I = V_RMS * CONVERSION_FACTOR)
    I_RMS = V_RMS * CONVERSION_FACTOR

    return I_RMS, V_RMS

print("ADS1115 AC電流測定プログラム(最終校正版)を開始します。")
print("---------------------------------------")

try:
    print(f"ADC基準電圧 (V_REF): {V_REF} V")
    print(f"DCバイアス中心電圧: {V_REF / 2.0:.3f} V")
    print(f"ゲイン設定: x{ads.gain}{4.096 / ads.gain}V スケール)")
    print(f"**使用する換算係数 (校正値): {CONVERSION_FACTOR:.3f} A/V**")
    print("---------------------------------------")

    while True:
        rms_current, rms_voltage = calculate_current_rms(chan)
        # RMS電流が非常に小さい場合はノイズとみなし、ゼロを表示します
        if rms_current < 0.1: 
            print(f"待機中... (電流: {0.000:.3f} A)")
        else:
            print(f"測定電流 (RMS): {rms_current:.3f} A | CT出力電圧 (RMS): {rms_voltage:.3f} V")
        time.sleep(1.0) # 測定インターバル

except RuntimeError as e:
    print(f"\n実行時エラーが発生しました: {e}")
    print("I2C接続、またはADS1115のアドレス設定 (0x48) を確認してください。")

except KeyboardInterrupt:
    print("\nプログラムを終了します。")

※CT(SCT-013-030)のKとL端子のLをGNDとしてA0のみの単端子入力として

ADS1115電流メーター(A0-A1)

#!/usr/bin/env python

import time
import math
import board
import busio
from adafruit_ads1x15.analog_in import AnalogIn
import adafruit_ads1x15

# --- 設定(SCT-013-030の「30A -> 1V RMS」仕様を直接利用) ---
# Raspberry Piの電源電圧(ADCの基準電圧)。
V_REF = 3.3

# ゲイン設定 (±4.096Vスケール)
GAIN = 1

# !!! SCT-013-030が電圧出力型(内部に抵抗内蔵)の場合、
# !!! K端子をA0、L端子を1.65V DCバイアスに直接接続します。
# !!! 外部の120Ω抵抗は「接続しません」!!!

# 換算係数: 30Aのときに1.0Vが出力されるため、電流(A/V) = 30A / 1.0V = 30
CONVERSION_FACTOR = 30.0  # (A/V)

# RMS計算用設定
SAMPLE_DURATION = 1.0  # サンプリング時間(秒)

# I2Cの初期化
i2c = busio.I2C(board.SCL, board.A2A)

# ADS1115の初期化 (I2Cアドレス 0x48, ゲイン設定)
ads = adafruit_ads1x15.ads1115.ADS1115(i2c, address=0x48, gain=GAIN)

# AnalogIn クラスを使用してチャネルA0(P0)を指定
try:
    chan = AnalogIn(ads, adafruit_ads1x15.P0)
except AttributeError:
    chan = AnalogIn(ads, 0)
    print("警告: adafruit_ads1x15.P0が見つかりませんでした。代わりにピン番号 0 を使用します。")

def calculate_current_rms(adc_input_channel):
    """
    ADS1115から一定時間データをサンプリングし、電流の実効値 (RMS) を計算する。
    ADS1115が測定した電圧RMS値に、換算係数をかけて電流に変換します。
    """
    start_time = time.time()
    squared_sum_V = 0.0 # 電圧の二乗和を格納
    sample_count = 0
    
    # 信号調整回路の中心電圧 (DCバイアス)
    V_CENTER = V_REF / 2.0
    
    # 測定をSAMPLE_DURATION秒間継続
    while time.time() - start_time < SAMPLE_DURATION:
        # ADCから現在の電圧値を取得
        voltage = adc_input_channel.voltage
        
        # 1. DC成分(バイアス)を除去し、純粋なAC電圧V_ACを抽出
        V_AC = voltage - V_CENTER
        
        # 2. RMS計算のために、AC電圧の二乗値を合計
        squared_sum_V += V_AC ** 2
        sample_count += 1
        
    if sample_count == 0:
        return 0.0, 0.0

    # 3. AC電圧のRMS (実効値) を計算
    mean_squared_V = squared_sum_V / sample_count
    V_RMS = math.sqrt(mean_squared_V)
    
    # 4. 電流の実効値 (RMS) を計算 (I = V_RMS * CONVERSION_FACTOR)
    I_RMS = V_RMS * CONVERSION_FACTOR

    return I_RMS, V_RMS

print("ADS1115 AC電流測定プログラムを開始します。")
print("---------------------------------------")

try:
    print(f"ADCゲイン設定: x{ads.gain} (フルスケール ±{4.096 / ads.gain}V)")
    print(f"DCバイアス基準電圧 (V_REF/2): {V_REF / 2.0:.2f}V")
    print(f"**使用する換算係数: {CONVERSION_FACTOR} A/V (30A/1V仕様)**")
    print("---------------------------------------")

    while True:
        rms_current, rms_voltage = calculate_current_rms(chan)
        print(f"測定電流 (RMS): {rms_current:.3f} A | CT出力電圧 (RMS): {rms_voltage:.3f} V")
        time.sleep(1.0) # 測定インターバル

except RuntimeError as e:
    print(f"\n実行時エラーが発生しました: {e}")
    print("I2C接続、またはADS1115のアドレス設定 (0x48) を確認してください。")

except KeyboardInterrupt:
    print("\nプログラムを終了します。")

上記、単端子のプログラムで、ドライヤーの電流値を測定してみたところ、クランプメータでは12.4A程度だったが、今回の回路では9.043Aとなっていました。

誤差の具体的な特定(現在の換算係数 30.00が間違っている?)

現在のコードでは、換算係数 CONVERSION_FACTOR を 30.00A/V に固定していました。

換算係数 = 測定電流(A) / CT出力電圧(VRMS)

今回の測定結果から、この換算係数を再計算します。

項目測定値
クランプメーター(真の値)12.4A (中央値として採用)
CT出力電圧(コードの出力)0.301V (9.043A時の値)

正しい換算係数を Knew とすると、

Knew = 12.4A / 0.301V ≈ 41.196A/V

つまり、CTセンサーは、公称値の「1.0V で 30A」ではなく、「1.0V で約 41.2A が流れている」 状態に近い特性を持っています。

プログラムの修正(換算係数の調整)

上記で計算した新しい換算係数 41.196A/V をプログラムに適用することで、より正確な電流値を表示できるようになります。

CONVERSION_FACTOR = 41.196  # (A/V) - 校正済み

実行結果(単端子の方)

chmod +x ./ads1115.py
./ads1115.py 
警告: adafruit_ads1x15.P0が見つかりませんでした。代わりにピン番号 0 を使用します。
ADS1115 AC電流測定プログラムを開始します。
---------------------------------------
ADCゲイン設定: x1 (フルスケール ±4.096V)
DCバイアス基準電圧 (V_REF/2): 1.65V
**使用する換算係数: 30.0 A/V (30A/1V仕様)**
---------------------------------------
測定電流 (RMS): 0.144 A | CT出力電圧 (RMS): 0.005 V
測定電流 (RMS): 0.144 A | CT出力電圧 (RMS): 0.005 V
測定電流 (RMS): 8.875 A | CT出力電圧 (RMS): 0.296 V
測定電流 (RMS): 9.043 A | CT出力電圧 (RMS): 0.301 V
測定電流 (RMS): 8.963 A | CT出力電圧 (RMS): 0.299 V
測定電流 (RMS): 2.513 A | CT出力電圧 (RMS): 0.084 V
測定電流 (RMS): 0.144 A | CT出力電圧 (RMS): 0.005 V
測定電流 (RMS): 0.145 A | CT出力電圧 (RMS): 0.005 V
^C
プログラムを終了します。

実際クランプメータで測定すると、12.13Aだったのでずれが発生しているため、プログラム側か回路側で調整する必要がありますが、プログラム側で調整するのが簡単そうです。

CONVERSION_FACTOR = 41.196 に修正後
./ads1115.py
警告: adafruit_ads1x15.P0が見つかりませんでした。代わりにピン番号 0 を使用します。
ADS1115 AC電流測定プログラムを開始します。
---------------------------------------
ADCゲイン設定: x1 (フルスケール ±4.096V)
DCバイアス基準電圧 (V_REF/2): 1.65V
**使用する換算係数: 41.196 A/V (30A/1V仕様)**
---------------------------------------
測定電流 (RMS): 0.181 A | CT出力電圧 (RMS): 0.004 V
測定電流 (RMS): 0.184 A | CT出力電圧 (RMS): 0.004 V
測定電流 (RMS): 0.179 A | CT出力電圧 (RMS): 0.004 V
測定電流 (RMS): 10.333 A | CT出力電圧 (RMS): 0.251 V
測定電流 (RMS): 12.478 A | CT出力電圧 (RMS): 0.303 V
測定電流 (RMS): 12.389 A | CT出力電圧 (RMS): 0.301 V
測定電流 (RMS): 11.699 A | CT出力電圧 (RMS): 0.284 V
測定電流 (RMS): 0.184 A | CT出力電圧 (RMS): 0.004 V
測定電流 (RMS): 0.182 A | CT出力電圧 (RMS): 0.004 V
^C
プログラムを終了します。

回路図

この回路の肝は、SCT-013-030の出力であるAC(交流)電流を、ADS1115が測定可能な0V〜3.3VのDC(直流)電圧範囲内のAC信号(中心1.65V)に変換することです。

接続構成図

単端子入力時の回路

A0-A1の差動入力時の回路

※ADDR(アドレス)はGNDにつないでアドレスを0x48に固定しておいてください。L1がSCT-013-030のプルーブにあたります。

SCT-013-030のピンジャックの配線

NCはNon-Connectという事で、KとLを用いて接続します。回路図には記載がありませんが、KをA0に、Lを1.65Vを作る中心点に接続します。

SCT-013-030のAmazonの商品説明

商品の紹介ページには以下のような接続イメージがありましたが、±1Vなので1.65Vの底上げをしてから使うのでこの図のままとはいきません…まぁ電流がマイナス…逆流はあり得ないので流れる方向を確認してA0/A1にK/Lをどうつなぐか確認すればバイアスはいらないのかもしれません。

※出典 Amazoneの商品ページ

接続の詳細

1. Raspberry Pi と ADS1115 (I2C)

  • VCCGND:Piの3.3VとGNDに接続。
  • SCLSDA:PiのI2Cピンに接続。
  • ADDR:GNDに接続し、I2Cアドレスを0x48に設定。

2. DCバイアス回路(基準電圧 1.65V の生成)

  • R1 と R2 (各 10 kΩ) を直列に接続し、Piの3.3V電源とGNDの間に接続します。
  • R1とR2の中点から、ADS1115の入力A0ピンに基準電圧 (1.65V) が供給されます。

3. SCT-013-030 の接続

  • CTの出力(2本の線)のうち、一方をA0へ接続

4. 信号結合(コンデンサ C1 の役割)

  • C1 (10µF) は、DCバイアスの中点(R1/R2間)の間に直列に接続されます。
  • このコンデンサを経由することで、R1の電圧信号が、1.65VのDCバイアスに正確に重畳され、ADS1115のA0ピンには1.65V ± V_1.5Vの電圧が入力されます。

これで、ADCは0V〜3.3Vの範囲内で、電流波形を正確にサンプリングできるようになります。

バイアスとバーデンについて

なぜ Vbias = 1.65V(= Vcc/2)を入れるのか

ADS1115(と Raspberry Pi の 3.3V 電源)では ADC の入力電圧は 0V 〜 VDD(=3.3V) に制限されます。
しかし CT の出力は交流で ±(例えば ±1V) の振幅を持つため、そのまま ADC に入れると負側(マイナス電圧)が出てしまい測れません。
そこで信号を**直流的に 1.65V(VDD/2)でオフセット(バイアス)**し、CT の ±振幅を 1.65V ± 1V の範囲(約0.65〜2.65V)に収めて安全に読み取ります。
差動測定(AIN0 − AIN1)を使えば Vbias は相殺され最終的に純粋な AC 成分のみ取得できますが、両端の入力が 0〜3.3V に入っていることが前提なのでバイアスは必要です。

「負担抵抗(Burden)」必要か?

  • SCT-013-030 の一般的な仕様では 30 A → 約1.0 V(RMS) という仕様があり、この「1.0 V」を作るための負担抵抗(burden)は多くの製品で内蔵されています。内蔵値はメーカーにより異なりますが おおむね 62 Ω 程度であることが多いです(あなたが示した図の R1 はその負担抵抗を表しています)。
  • ただし同じ「SCT-013-030」でも 外付け burden 必要タイプや、別の内部抵抗の個体が存在する場合があるので 現物で K-L 間の抵抗を測って確認してください。

測定方法(簡単)

  1. CT のプラグを回路から外す(電源オフの状態で)。
  2. マルチメータで K−L 間の直流抵抗を測定。
    • 抵抗が数十Ω(50~80Ω 程度) → 内蔵 burden あり(約62Ωならそのとおり)
    • 抵抗が非常に高い、あるいは開放 → 内蔵 burden なし(外付けが必要)

外付け負担抵抗を付けるべきか(いつ必要か)

  • 内蔵 burden がある場合:外付けは不要(入れると出力電圧が大きくなり ADS1115 の入力上限を超える恐れあり)。
  • 内蔵 burden が無い場合:目的の出力電圧に合わせて外付け burden を選ぶ。例えば「30 A → 1 V」を得たいなら、設計に使われる二次巻数 N を用いて Rb = V * N / Ip で計算します(ただし市販CTのデータシートに Rb 相当値が載っていることが多いのでそれを参照するのが楽です)。

簡単実用法:CT のデータシートに「30A -> 1V」と書いてあれば外付け不要で、その仕様通りに扱えばよいです。

ADS1115で何端子まで測定可能?

今回使用したA/D変換のADS1115は、A0~A3の差動入力が出来るタイプのもので、ベースとなるGND?が共通なら 4つまで測定が可能ですが… 200Vのような回路の場合は差動で2端子まで、100Vでは必ずGNDの0電位からの差分とするなら4端子(サンプリング制度は落ちる)という感じ。以下はその理由。

① 各 CT に 1.65V のバイアス回路が必要

あなたが現在やっているように、

  • 1.65 V バイアス
  • バイアスを作る抵抗分圧
  • デカップリングコンデンサ

CT 1つにつき独立して用意する 必要があります。

✔ バイアスを共有しない理由

バイアスを複数の CT で共有すると、
「1つの CT が出す電圧が他の CT の測定値に影響する」
という問題が起きます。

② ADS1115 のサンプリング速度

ADS1115 の最大サンプルレートは 860 SPS(サンプル/秒)です。

AC電流を測るには「50/60Hz の波形の RMS」を計算するため最低でも:

  • 600~800 SPS 以上欲しい(RMS計算の安定性のため)

ADS1115 で 4 チャンネルを使うと:

✔ 各チャネルの実効サンプル数

860 SPS ÷ 4 チャンネル ≒ 215 SPS

50/60Hz の電流波形を測るにはギリギリ(最低限)

→ 結果

4チャネル同時測定は可能だが、
精度は少し落ちる(RMS の滑らかさ・ノイズ耐性が低下)

③ 差動入力を使うとチャンネル数が減る

もし差動モードで精度を上げるなら:

  • A0-A1 → 1つ
  • A2-A3 → 1つ

となり 2 チャネルまで になります。

CT 測定は差動のほうが理想ですが、
シングルエンドでも実用上問題ありません。


🔍 結論

測定方式使用可能 CT 数メリットデメリット
シングルエンド方式(現在の方式)最大4個チャンネル数が多い1chあたりのサンプルレート低下
差動方式最大2個ノイズに強いCT数が減る

結局何がしたいのか?

この回路を応用し、I2Cのマルチプレクサ(TCA9548A)を介してADS1115を8個ぶら下げるとして、100Vの回路だとx4。1つのRaspberryPiで、理論上8x4=32端子の測定が可能。

通信機械室では部屋の縦横比にもよりますが、1架空列あたりラックの数が10として、A系・B系の電源冗長をしているとすると20端子が張り出されます。容量の必要なラックには更に追加で張り出されたりしますが、それを見越して32端子あれば足りる?

1架空列にRaspberryPiを配置したとして1つの部屋あたりに…相当なお金がかかりますね…

これが実現できれば、後付けでNFBというかMCCBで各ラックの電力使用量を測定し、snmpを使ってZabbixやPrometheus+Grafanaや、RRDtoolでグラフを書かせたり、監視したりと異常に気付き未然に対処=予防できるようになります!

また使用状況の統計が取れれば次の投資タイミングの予測も立てることが出来るようになります。

常駐の人が居る局舎であれば人的リソースをつかって定期的に測定してもらえばよいですが、無人のそれも雪の積もる遠い場所など数百カ所を巡って測定して回るとなると大事です…

その費用を考えると今回かかる費用は初期投資としては大きいですが価値があると思うのですが…どうでしょうw

マルチプレクサの試験がうまく行ってないのでそれが成功したら本件プルーブ数を増やして試してみたいと思います。

タイトルとURLをコピーしました