« 計画:大杉谷から大台ヶ原へ | Main

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」カテゴリの記事

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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/540128/66602063

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

« 計画:大杉谷から大台ヶ原へ | Main

May 2018
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 31    

Recent Trackbacks

無料ブログはココログ