« 計画:大杉谷から大台ヶ原へ | Main | Arduino NANO を使ってEthernet Cable Checker »

05/09/2018

YHDC SCT-013-000 CT とArduinoで家庭内の電流を測定する

YHDC 非侵襲性AC電流センサSCT-013-000 CT  とArduinoを使って、電力量を測定する。(非侵襲性AC電流センサ は、Amazon(Hommy販売から @465円で購入))

参考にしたブログとスケッチ
1) Current monitoring with non-invasive sensor and arduino
2) SCT-013 – Sensor de Corrente Alternada com Arduino
3) openenergymonitor/EmonLib

YHDC SCT-013-000 CTの電流範囲は0〜100 Aです。
  VRefは、アナログ基準電圧で、ここでは、VRef = 5V

  Cmaxは、ADCの分解能で、ここでは、Cmax = 1024

  Rtは、電圧変換器比で、部品仕様から下記のように計算される。
     Rt = 100 A  ÷ 50 mA = 2000


  測定電流値 I = √2 * i(rms_current)= 1.414 * 100A = 141.4A

  センサーに流れる電流値 i は、次式で計算される。
       i =
測定電流値 I ÷ 電圧変換器比 Rt
        = 141.1A  ÷ 2000
         = 0.0707A


Arduinoは、電圧(0V〜5V)しか扱えないため、この電流を許容電圧に変換する必要がある。そのため、回路に負荷抵抗Rを追加する。

  電流は、0を中心に変動するので、
  センサ最大電圧は、Max_accepted_voltage(=5V) / 2 = 2.5V とすると、

       Rb(負荷抵抗)= U(センサ電圧)/ I(センサ電流)= 2.5V / 0.0707A =35.4Ω
  理想的な負荷抵抗Rb は 35.4Ωだが、そのような抵抗は無いので、
  33Ω(実際に使った抵抗の測定値は、テスターで計測した 32.8Ω)の抵抗を使用した。
図中、2個の抵抗(10kΩは、エネルギー消費を避けるため)、コンデンサ(10μF)は、交流電流が抵抗をバイパスする代替パス。

プログラム中に見られる数字は、
  counts = センサ入力ピンの電圧(=センサを通る二次電流×負荷抵抗値Rb) ÷ VRef × Cmax
 
  Isupply = counts ÷ ADCの分解能 Cmax × アナログ基準電圧VRef× 電流校正定数
      = Irms (←スケッチでの表示)
 
  ここに、電流校正定数 = Rt ÷ Rb
 
  YHDC SCT-013-000 CT センサと、テスターで計測した負荷抵抗を使い、
     電流校正定数 = Rt ÷ Rb
                = 2000 ÷ 32.8Ω = 60.976

計算は、オープンライブラリーの EnergyMonitor emon1 を利用したので、上記計算はそのライブラリーを使うための定数の理解と計算するためのステップである。

使った部品を含め、計測誤差の大きい回路構成なので、計測電流が流れていない時も0.3Aほどの電流が流れていると表示する。電流値がある値以下の場合には、スケッチの中にある様に、ゼロと表示するようにもできるが・・・。部品は安価に入手できるので、自宅で使っている電気(電流)の傾向を見るのには良いかもしれない。

《Fritzingと写真》
Sct013fritzing Img_20180417_200519SCT013のFritzingパーツがWeb上に見つからないので、僕はInkscapeの機能を使って、Fritzingに貼り付けられるよう、左図にある部品図を作った。この時参考にしたのは、Youtubeの『Fritzing Part Creation - Chapter9 - Using Photo and PDF』である。


《スケッチ》
// Current sensor SCT013-100A/50mA
#include "EmonLib.h"
#include <Wire.h>
#include <U8glib.h>

EnergyMonitor emon1;

//Oled表示設定
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

String str;
int characterlen;
double Irms = 0;  // the current measured

void draw()
{
  //ディスプレイのグラフィックスコマンドはここに配置する
  u8g.drawRFrame(0, 16, 128, 48, 4);
  u8g.drawRFrame(0, 0, 128, 16, 4);
  u8g.setFont(u8g_font_8x13B);
  u8g.setColorIndex(0);
  u8g.setColorIndex(1);
  u8g.drawStr( 40, 13, "Current");
  u8g.drawStr( 103, 60, "[A]");
  u8g.setFont(u8g_font_fur25);
  str = String(Irms);
  characterlen = str.length();
  u8g.setPrintPos(60 - (characterlen * 10), 53);
  u8g.print(Irms,3);
}

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Current measurements value by SCT013"); 
  Serial.println("");
  Serial.println("");
  
// Theoretical CT Sensor Calibration = CT Ratio / Burden resistance
// ⇒ (100A / 0.05A) / 32.8 Ohms = 60.976
  emon1.current(1, 60.976);   // Current: inputpin No, calibration
    
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255, 255, 255);
  }
}

void loop(void)
{
  Irms = emon1.calcIrms(1480);  // 1480 is no_of_samples
//  if(Irms < 1.0 ) Irms = Irms -0.3; // 表示誤差分を取り除く見かけの処理
//  if(Irms < 0.20) Irms = 0.0;
  
  Serial.print("  Sensor 1: ");
  Serial.print("  Irms=");
  Serial.print(Irms,3);  // print to the third decimal place
  Serial.print("[A]");
  Serial.print("  Power=");
  Serial.print(Irms*100.0);  // Apparent power (100 is the Voltage)
  Serial.println("[W]");
  
  //画面上で描画ルーチンを呼び出し
  u8g.firstPage();
  do
  {
    draw();
  }
  while ( u8g.nextPage() );
  delay(150);
}

« 計画:大杉谷から大台ヶ原へ | Main | Arduino NANO を使ってEthernet Cable Checker »

Arduino」カテゴリの記事

Comments

Post a comment

Comments are moderated, and will not appear on this weblog until the author has approved them.

(Not displayed with comment.)

TrackBack


Listed below are links to weblogs that reference YHDC SCT-013-000 CT とArduinoで家庭内の電流を測定する:

« 計画:大杉谷から大台ヶ原へ | Main | Arduino NANO を使ってEthernet Cable Checker »

April 2019
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

Recent Trackbacks

無料ブログはココログ