2022年6月19日日曜日

Arduinoで交流電流を測定する

Arduinoと CTセンサ,CTセンサアンプモジュールを使用して交流電流ロガーを製作した.




主要な構成部品

1) Arduino Uno Rev3
2) CTセンサアンプモジュール
 Crescentが開発しSwitch Scienceが受託販売しているもの.CTセンサの出力電流のRMS値に応じた直流アナログ電圧を出力する.
Switch Scienceの商品ページはこちら仕様はこちら
3) CTセンサ
 型式:AKW4802C(パナソニック)
 仕様 
 ・巻数比 3000:1
 ・最大100A
 ・貫通穴φ16mm

 CTセンサの出力は正弦波となるため,Arduinoのアナログ入力から取り込めるように別途回路を追加したり,RMS値を計算するためのプログラムを組み込む必要がある.
 今回使用するCTアンプモジュールはCTセンサの出力電流のRMS値に比例した直流電圧を出力するため,アナログ入力端子にそのまま接続でき,スケッチも簡単なもので済む.

組み立て

 まず,CTセンサの出力電流を電圧に変換するためのシャント抵抗を4つの値から選び,それに対応した配線パターンをはんだ付けでショートさせる必要がある.シャント抵抗の値によって測定できる電流範囲が変わる.今回は10Ωを選択したが,この場合は電源電圧5Vのとき測定範囲は0.5-23Aとなる.



 モジュールとArduino間の配線は以下の3本.Vccには3.3Vか5Vを使用でき,5Vの方が測定可能な電流範囲は広い.
1) Vccと5V
2) GNDとGND
3) OUTとアナログ入力のいずれか

スケッチの作成

 アナログ入力から取り込んだCTセンサモジュールの出力電圧OUTを、CTセンサ一次側を流れる電流に変換する.
int analogPin=0;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Start");
}

void loop() {
  // put your main code here, to run repeatedly:
  float vol;
  float cur;
  float a;
    
  //CTセンサの出力を取得
  a = analogRead(analogPin);
  
  //取得した値はAD変換結果なので電圧に変換
  vol=a*5.0/1024.0;
  
  //https://github.com/meerstern/CT_Sensor_Amp_Moduleより
  //vol= (cur x Gain x R)/CT
  //cur = (vol x CT)/(Gain x R)
  //Gain=60, R=10, CT=3000
  cur=vol*3000.0/(60*10);
  
  Serial.println(cur);
  
  delay(1000);
}

測定結果の検証

 Arduinoで読み取った電流を日置のクランプメータ(3287)で測定した結果と比較した.なお,交流を調整する機器を持っていないため,パソコンや電気ケトルなど異なる消費電力の機器を使用して色々な大きさの電流を測定した.

 

 下のグラフはArduinoと3287の測定値の比(Arduino÷3287)で,1に近いほどArduinoと3287との差が小さい.グラフより,1A以上では両者の差は小さいが0.5A以下では大きくなった.ただし,小電流域では誤差の影響が大きくなるし3287自体の誤差もあるため,この方法での精度評価が妥当かは微妙だ.





0 件のコメント:

コメントを投稿