家庭で消費電力を測定する方法
また暑い夏がやってきました。電力の受給がひっ迫する時期ですので、節電を心がけている方も多いと思います。今回、ArduinoとXBeeを用いて、家庭での消費電力を計測するシステムを自作しました。無線でPCへデータ転送しますので、少し工夫をすると、メールでデータを自動送信したりすることも可能となります。数値で消費電力が表示されれば、効果的な節電ができますね。
運用例
電力、電圧データのインターネットへの自動データ送信と遠隔監視に発展させました。
5分ごとに自動で電力を計測中です
[ユーザー名:test,パスワード:pass]
←スマートフォン、携帯電話から監視可能です。
配電盤の中に設置した電力計測器(写真中央下の白い箱)。電源をブレーカー(右奥下の黒いケーブル)からとり、無線でデータを送信するため、外部への配線は一切不要です。
消費電力の測定例。夜も寝室のエアコンはONにしていました。外出中の消費電力は主に冷蔵庫と換気扇だと考えられます。このように定量的な分析が可能ですね。
8月のある一週間の電力消費量の変化。赤線が夜中の0時です。日曜日は記録的な猛暑となった日で、エアコンの消費電力が大きくなっているようです。
8月の休暇中と10月の通常週(平日は不在)の比較。夜間の最少電力の違いは冷蔵庫が原因だと考えられます。
«必要な部品» (amazonサイトへのリンクつき)
100Vのみのご家庭ではクランプメータは1つだけでOKです。200Vが引き込まれている場合には2つが必要となります。配電盤の一番上流を見て、配線が2本(100Vのみ)か3本(3線式200V)かを確認します。また、USBケーブルでPCと接続する場合にはXBeeに関連する無線機器は不要となります。XBeeは安定に動作しますが、少し価格が高く、送受信をそろえるとお金がかかりますね。
«作り方»
半田ごてとテスターが必要です。
Analog INは0から5番のどこに接続しても良いですが、ここでは少し距離が開いていて接続がやりやすい0番と3番を選びました。電子工作ではいつものことですが、配線は簡単でも、プラスチックケースへの収納が手間がかかります。
- Arduinoに計測用のプログラムを書き込みます。プラグラムについては記事の後半で説明があります。
- ArduinoにXBee Shieldを差し込みます。
- XBee ShieldにXBeeを差し込みます。
配線 (回路図を描くほどではないです)
- イヤフォン端子のGND-Aruinod GND
- イヤフォン端子のCenter-Arduino Analog IN 0
- イヤフォン端子のCenter-10Ω-GND
200Vが引き込まれている場合には、2つ目のイヤフォン端子についても同様の接続します。ただし、電圧計測はCenterをArduino Analog IN 3とします。
«クランプ電流センサーとイヤフォン端子の極性»
イヤフォン端子の極性は上記のクランプ式電流センサーを差し込んで判別します。端子のケース(一番外)と接続されている端子がGNDです。GNDに対して200Ω程度の抵抗となっているのが、センサー出力端子で、ArduinoのAnalog inと接続します。
クランプ電流センサ。1個1000円程度です。クランプした配線の中に流れる電流を1/1000程度に下げて出力します。50Hzや60Hzの交流では、同じ周波数で電流が出力されるので計測回路の工夫が必要となります。今回購入したものは、センサーの反対側のラインがイヤフォンプラグになっています。本体側への接続にイヤフォンジャックを用意する必要がありますが、構造がすっきりします。流れる電流は微量(10Ωに対して200mV=20mA程度)ですので、イヤフォン端子でも問題ないレベルでしょうか。
«受信機»
XBeeとXBee-USB変換器を使ったデータ受信器。必要な時だけパソコンに接続して、TeraTermやX-CTU,Arduino書き込み機などのシリアル通信機能を使ってデータを読み出します。コンパクトで邪魔になりません。通信距離が20m程度の場合には、XBeeは普通のもので大丈夫です。(Proを選択する必要はありません)。
«計測器本体»
XBeeをArduinoに接続するためのシールドです。1000円ほどですので、自分で基板を加工するより買ったほうが楽です。
製作中に無線が途切れる(パソコンの電源をoffにして、受信機の電源を落とす)と、Arduinoが初期化してしまう現象が発生しました。webで調べたところ、XBeeがArduinoに対してリセット信号を送っていることがわかりました。上の写真の赤丸部分の配線をカッターナイフで削り取ることで、Arduinoの自動リセットを回避することができました。
XBee-XBee Shield-Arduinoを接続してケースに収めたところ。手のひらサイズです。ケースの左端にイヤフォンジャックを設置しています。ここにクランプ電流センサを差し込みます。
«設置例»
配電盤の中に小型のACアダプタを入れて、Arduinoの電源を取ります。3線式200Vの場合には、クランプ電流センサはいちばん上流のラインの赤と黒をクランプします。それぞれ、100Vの交流として電流を計測して、和を取ります。データは無線で送信されるため、外への配線は一切ありません。配電盤のふたを閉めるとすっきりします。
«プログラムのポイント»
パソコンの電源をoffにしても計測とデータ送信を連続的に出来るように、1時間ごとの消費電力量を1週間分(0から167時間)記録して、常に送信する仕組みにしました。1週間に一度PCを立ち上げればすべてのデータを吸い出すことができます。
aveV=600, sumN=100とすることで、15秒間の平均の消費電力が測定されます。ArduinoのAD変換は家庭の交流周波数(50Hz,60Hz)よりもとても高い(約10KHz)です。そのためサイン波から外れた電流を多く含む消費電力を測定するには、高速に電流を計測して二乗の平均を測定する必要があります。ここでは、600回の平均を高速に行って、ピークの鋭い電流も測定しています。また、データ送信間隔を広げるため、この測定を100回行って、平均値を送信しています。送信間隔がもっと広くてもよい場合にはsumN=1000などとすると、XBeeの消費電力を低減することができます。異なるセンサーを使った場合には、係数をキャリブレーションする必要があります。クランプ電流センサをケーブルを自作して、100Wの電球などを計測すると簡単にわかります。"二乗の平均"さえ間違えなければあとは、比例定数を変えるだけで正しい値が計測されます。Arduinoのスケッチではfloat Coeff=42.96875の値を変更します。桁数は3桁あれば十分dなと思います。
電流(Arduinoから読み取った電圧)から消費電力(W)を求める係数の算出法
本プログラムでは、float Coeff=42.96875なる係数を読み取った電圧の二乗の平均値に乗じて消費電力(W)を求めています。この係数は電流センサーの種類によって変更する必要があります。計算方法は以下の通りです。単純な平均ではなく、二乗の平均を求めるのは、電圧に比例して電流が変化していて、(電力)=(電圧)×(電流)であるためです。
- ArduinoのAnalog reference(アナログ電圧測定の基準電圧)が1.1Vであり、これを1024分割して測定しているの、0-1023の値に対して、1100÷1024=1.074を掛ければ電圧(mV)が求められます。
- クランプ電流センサのデータシートによると(10Ω接続時に)、[20Wの電力に対して1mVの出力]であるので、1.074×20=21.48により、[Arduinoの出力×21.48=消費電力(W)]となります。
- ただし、交流は正負に電圧が変動していますが、Arduinoで計測できるのは正方向の半分のみであるので、係数を2倍します。つまり、[21.48×2=42.97]となります。つまり、読み取った電圧に42.97を乗じると、直接Wとなります。
パソコンで受信したデータの例。現在の消費電力(W)と過去168時間の1時間ごとの消費電力量(Wh)が表示されます。
« XBeeの設定»
XBeeは計測側を親機(Cordinator)に設定します。パソコンに接続する受信側はRourter設定とします。シリアル通信の部分はArduinoが担いますので、XBeeはATモード(単にデータを透過させるのみ)にして使用します。CordinatorおよびRouterからダウンロードしてご使用ください。ダウンロード後、拡張子を.txtから.proに変更するとX-CTUから読み込めます。XBeeの設定については以前の報告(電子工作で簡単に無線通信)をご参照ください。
戸田システムウェア
ここで公開するアイデア/装置は安全性を保障しておりません。用途に応じた設計を行い、十分な安全検査を行ってからご利用ください。本サイトの情報の営利目的での利用はご遠慮ください。本サイトで配布するソフト、エクセルファイル等の二次配布を禁じます。本サイトで配布するソフト等による生じたいかなる責任も負いません。本サイトの内容の無断転載を禁じます。© 2013 TYK