Androidのメモとか

ポキオの日記です。今日も遅延してない。

ESP8266で自宅での電力消費量を測ってみようと思った

電力計じゃなくて、電流計か・・・

どっちでも良いんですが。 自宅がボロアパートなので、常にブレーカーが飛ぶんじゃないかという危機感と同居しています。そこで、ブレーカーが落ちそうなのかどうかを監視するために、電流を測定してみたいと思います。

使うもの

  • ESP8266が乗ったボード
  • ブレッドボード的なやつ
  • いい感じの抵抗2つ(多分10kΩ)
  • クランプ式電流センサー(ゆくゆくは2つ)
  • その他諸々

クランプ式電流センサはこれを使いました。

LILLYエレクトロニクス 交流電流センサーSCT-013から0300-30A非侵襲スプリットコア電流トランス

詳しいスペックが良くわからないんですが、30Aで1V流れそうな雰囲気があります。電極は3.5mmのイヤホンのプラグと同じ形状になってます。電流を見るだけならArduinoで十分なんですが、いい感じのArduinoがなかったので、今回はESP8266が乗ったボードを使っています。

ざっくり配線

ESP8266

相変わらず酷い配線をお許し下さい。先ほどの電流センサに掛かる電圧をボードのAnalog Inputで読み取るわけですが、家庭用電源は交流なので、正値・負値の両方がありえます。流石にAnalog Inputに負値が入力されるとまずそうなので、3.3Vを1kΩの2つの抵抗で分圧させて、理論値1.65Vにセンサーの電圧を足したものを読み取っています。30Aで1Vっぽいので、1.65V以上の電圧が生じることはなさそう。

yhdc sct-013

センサーは配電盤内の大元のブレーカーから伸びてる、それっぽい導線に挟みました。家庭用の電源は単相3線式となっていて、トータルの電流値を測るにはもう一つセンサーが必要になるようですが、今回は1つだけで実験します。

コーディング

コードは至ってシンプルです。

  • 交流なので、瞬間瞬間の電圧を測ってもだめで、ある程度適当にサンプル数を稼いで、それを平均しています・・・が、本当は二乗平均で計算しなければならないそうなので、今度はそうします。

  • 電圧のオフセット値が理論値の1.65Vではなく1.58Vになっているのは、実際の3.3V出力が、ちょうど3.3Vになっていなかったので補正しています。

void setup() {
  Serial.begin(115200);
}

void loop() {
  float total = 0;
  int sample = 5000;

  for (int i = 0; i < sample; i++) {
    int sensorValue = analogRead(A0);
    float voltage = sensorValue * (3.2 / 1023.0);
    float current = (voltage - 1.58) * 30;
    total += fabs(current);
  }

  Serial.println(total / sample);
}

動作確認

値は正しいかわかりませんが、なんとなく電流を読み取れていそうです。(でも、どうやって値が正しいか評価するのか・・・)

yhdc esp8266

Learning Esp8266: Build the Internet of Things With the Arduino Ide and Raspberry Pi

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。