家の消費電力をモニタリングするものをここの所作っていましたがようやく何とか動きました。
モニタリングの目的は、待機電力ってどこがどれくらい使っているのかな、とか、非常用電源装置の容量はいまの使い方だとどの程度必要なのかな、とか、電灯線ってどんな電流が流れてるのかな?とか、単なる興味から、ということです。
電力のモニタリングは、家の分電盤で行います。
分電盤の漏電ブレーカーのところの配線に、カレントトランス(これとか、これとかを挟み、配線に流れる電流をモニタリングします。また、電圧も見るために、ACアダプターを改造して、コンセントの電圧もモニタリングします。
消費電力は、その電流と電圧を掛け算することで求められます。
また、電流の平均値、電圧の平均値から見かけの消費電力が出ますが、それと実際の消費電力の比から力率も求められます。
ACの電流、電圧のサンプリングなどはArduinoボードのADコンバーターで行いました。
データの取得に必要なハードウェアは、こちらを大いに参考にさせていただきました。私の回路の方は、行き当たりばったりに、ジャンク箱にある部品で作っているので、とても人にお見せできるようなものではありません!
ACの測定をするのに、5Vを10kオームで分割して、中点の電位をADで測りつつ、そこを基準にして、ACの電流電圧の測定をするところなどは、先のページとほぼ同じ構成で作っています。
私は、家全体の東京電力からの供給電力、非常用電源装置の充電用供給電力と、インバーターの出力電圧を見たいと考えたので、ちょっと変則的に、
単相3線のうちの片側の電圧で東京電力からの電圧(v1)を測定、単相3線の電流の和(a2)を2このカレントトランスを直列にして測定, 家全体の東京電力からの供給電力はv1*a2.
非常用電源装置の充電用供給電力は、電圧は先のv1と同じ。電流a1は、電源装置行きの系統のラインにカレントトランスを挟み測定。電力は、v1*a1
インバーターの出力電圧は、非常用電源装置が働いたときにはインバーターの出力なので、東電のと関係がなくなりますので、別のチャンネルで測定(v2).
という3種類の情報を収集するように作りました。
ADのサンプリングは、参考にさせていただいたこちらのスケッチをそのまま使うのではなくて、私のシステムでは、インバーターの出力電圧を測ったりする関係で周波数が変わることに対応できるようにプログラムを少し工夫しました。
具体的には、電圧が0Vを横切るタイミングを見つけて、そこから、ACの1周期+アルファ程度の期間のデータを取り、データを取った後1周期後にまた電圧が0Vを横切るタイミングを探し、1周期の長さを確認して、1周期分の電力値などを計算するようにしました。
0Vを横切るタイミングからデータを取ることで、データのとるタイミングが多少ずれても、積分した電力値の誤差が小さくなることが考えられます。
これが、arduinoで収集した電圧、電流のデータの例です。複数のサイクルの取得データを重ねてみています。
ADにも有限の時間がかかりますので、そのタイミングの問題で、必ずしも、ばっちり同じ位相でデータがとれているわけではないですが、許容範囲かな。電流はかなりひしゃげていますが、これでも力率は0.9以上あります。
arduinoには、イーサネットシールドを取り付けて、取得した情報はUSBシリアルにも流しますが、arduinoボードにWebサーバーを立ち上げて、そこをアクセスすると情報がみられるようにしました。
とはいっても、そのためのプログラムは、サンプルに入っていたWebサーバープログラムを引っ張ってきて、表示する情報のところを書き換えただけですが。。。
表示する情報は、電力、各電流・電圧の最大最小RMS値、力率、積算電力量(kWh)と波形(シリアルのみ)です。
そのまま役立つ人は一人もいないと思いますが、一応スケッチを貼っておきます。
powermeter.ino
作り始めた時は、データはSDメモリーに保存しつつ、イーサネット上にUDPのパケットを吐き出して、結果を他のPCに通知するようにしようと思っていたのですが、ためしに採用してみたWebサーバーが実は便利だと思ったので方針変更してます。(スケッチ内のコメントはそのまんまになってしまってます)。
こんな感じ
で、分電盤の横からカレントトランスの配線をだし、ACアダプターを改造した電圧プローブを取り付けるためのコンセントとarduinoのボードを入れた箱を壁に固定しています。とっても雑。
…..
さて、動かし始めて気が付いたこと。
待機電力が思った以上に多いこと。
なんと300W近くあります。ありえない!!!
一応あれこれ消して様子を見た結果わかったことは、
1.浄化槽ポンプの消費電力は結構大きい。
2.次に給湯器の消費電流も無視できない。
3.それ以外のものの待機電力は精々10W程度ではありますが、チリも積もれば山となる。
もう少し待機電力を下げられるように努力していこうと思います。
Arduinoをウェブサーバーにして情報を見れるするようにするほうが便利そうですね。やってみようかな。
ArduinoのWebサーバーのサンプルは、多数のリクエストが来るような目的だとサービスできなさそうですが、我が家パワーモニター的な目的だと1週間以上安定に動いているので大丈夫そうです。なんといっても、どのPCからでもブラウザで見れるのは大きなメリット。