Arduinoとアナログ電力量計で作る消費電力ロガー、完成しました
このあいだから取り組んでいた誘導式の電力量計(電気メーター)とArduinoを使った消費電力ロガーが完成しました。実は完成したと言っても、ちょっと問題のある物になっているのですが、これ以上改善するのも難しそうなので現状を記事にしておきたいと思います。
少し間が空いたので、測定原理からざっと説明しておきます。
▼電力量計

これはヤフオクで落とした機械式(誘導型)の電力量計です。この円盤の動きをレーザー光で検出して電力ロガーを作るというのが今回の試みです。
▼回路図 (クリックで別窓に拡大)

Arduinoを使って液晶表示とSDメモリーカードへデーターを記録します。
▼配線の様子

木で作った電力量計のスタンドの裏側に、Arduinoとブレッドボードを取り付けています。
電力量計のパルスを読んで電力を計算するプログラムと、データーをSDメモリーカードに書き込むプログラムを既に作っているので、両者を合体させれば消費電力ロガーのプログラムが完成します。
完成した電力ロガーのスケッチはこちら (Shift-JISエンコードになっています)
▼液晶表示

1行目は以前のSDカードロガーと同じで、先頭から記録インターバル表示、記録行数表示、温度表示です。2行目は現在の電力と、累積電力を表示します。なお、記録開始前には LogConf.txt で指定した記録条件の一部を表示しますが、ここは以前作ったSDカードロガーと同じです。
▼ログ出力例

csv ファイルをエクセルで表示したものです。
▼動作テスト

ウォーターサーバー(クリクラ サーバー04Le)の消費電力を測定してみました。 仕様の銘板によると、73Wの冷凍用のコンプレッサーと、湯沸用の350Wのヒーターが入っているようです。実際に消費電力を記録してみると、最初は410Wくらいの消費電力で、時間が経って安定すると、ヒーターとコンプレッサーが各々断続運転モードに入っていました。
◆問題発覚
これで、めでたく完成かと思っていたら、思わぬ問題がありました。
このウォーターサーバーはヒーターなどが入っていない時は消費電力がほとんどゼロになりますが、そうなると電力量計の円盤が廻らないので電力の測定が出来ません。
例えば直前に400Wの消費電力があって待機状態に移行したとします。この場合、新しい値が得られないので、測定結果はずっと400Wのままになってしまいます。実際の消費電力はゼロなので、これでは大きな測定誤差が発生してしまいます。
長時間円盤が回転していないことはプログラムで検出できるので、補正をかけるようにすればある程度の解決策にはなりそうですが完全な補正は難しいと思います、それにアルゴリズムはかなり面倒になります。
別の解決策として、5Wくらいのダミーロードを入れて、消費電力がゼロにならないようにしてしまう手があります。でもこれって、簡単ですが、あまりスマートな方法ではありません。
あと、円盤の回転速度が遅い場合、レーザー光の立ち上がり速度が遅くなるため、検出パルスが割れてしまって異常に大きな消費電力として検出される問題があります。これはハードかソフトで対策可能ですが、上に書いたような本質的な問題が解決できたら考えることにします。
◆今後の予定
作ってみたら本質的な問題にぶち当たってしましました。少なくても数ワットの消費電力はあると思っていたのですが、まさか完全にゼロになるものがあるとは思いませんでした。仕様検討不足です。
電力が小さくなると測定時間が長くなるので感度を倍にするなどの手を打っていたのですが、完全にゼロになられるともうお手上げです。ということで、この話はおしまいにすることにします。いつもなら記事に掲載するプログラムは清書しているのですが、今回はモチベーションがすっかり下がってしまったので、書きっぱなしになっています。ご容赦ください。
とは言っても、せっかく作ったロガーなので、データー取りが終わったら出力例のグラフをちょっとだけ次の記事で公開したいと思います。
少し間が空いたので、測定原理からざっと説明しておきます。
▼電力量計

これはヤフオクで落とした機械式(誘導型)の電力量計です。この円盤の動きをレーザー光で検出して電力ロガーを作るというのが今回の試みです。
▼回路図 (クリックで別窓に拡大)

Arduinoを使って液晶表示とSDメモリーカードへデーターを記録します。
▼配線の様子

木で作った電力量計のスタンドの裏側に、Arduinoとブレッドボードを取り付けています。
電力量計のパルスを読んで電力を計算するプログラムと、データーをSDメモリーカードに書き込むプログラムを既に作っているので、両者を合体させれば消費電力ロガーのプログラムが完成します。
完成した電力ロガーのスケッチはこちら (Shift-JISエンコードになっています)
▼液晶表示

1行目は以前のSDカードロガーと同じで、先頭から記録インターバル表示、記録行数表示、温度表示です。2行目は現在の電力と、累積電力を表示します。なお、記録開始前には LogConf.txt で指定した記録条件の一部を表示しますが、ここは以前作ったSDカードロガーと同じです。
▼ログ出力例

csv ファイルをエクセルで表示したものです。
▼動作テスト

ウォーターサーバー(クリクラ サーバー04Le)の消費電力を測定してみました。 仕様の銘板によると、73Wの冷凍用のコンプレッサーと、湯沸用の350Wのヒーターが入っているようです。実際に消費電力を記録してみると、最初は410Wくらいの消費電力で、時間が経って安定すると、ヒーターとコンプレッサーが各々断続運転モードに入っていました。
◆問題発覚
これで、めでたく完成かと思っていたら、思わぬ問題がありました。
このウォーターサーバーはヒーターなどが入っていない時は消費電力がほとんどゼロになりますが、そうなると電力量計の円盤が廻らないので電力の測定が出来ません。
例えば直前に400Wの消費電力があって待機状態に移行したとします。この場合、新しい値が得られないので、測定結果はずっと400Wのままになってしまいます。実際の消費電力はゼロなので、これでは大きな測定誤差が発生してしまいます。
長時間円盤が回転していないことはプログラムで検出できるので、補正をかけるようにすればある程度の解決策にはなりそうですが完全な補正は難しいと思います、それにアルゴリズムはかなり面倒になります。
別の解決策として、5Wくらいのダミーロードを入れて、消費電力がゼロにならないようにしてしまう手があります。でもこれって、簡単ですが、あまりスマートな方法ではありません。
あと、円盤の回転速度が遅い場合、レーザー光の立ち上がり速度が遅くなるため、検出パルスが割れてしまって異常に大きな消費電力として検出される問題があります。これはハードかソフトで対策可能ですが、上に書いたような本質的な問題が解決できたら考えることにします。
◆今後の予定
作ってみたら本質的な問題にぶち当たってしましました。少なくても数ワットの消費電力はあると思っていたのですが、まさか完全にゼロになるものがあるとは思いませんでした。仕様検討不足です。
電力が小さくなると測定時間が長くなるので感度を倍にするなどの手を打っていたのですが、完全にゼロになられるともうお手上げです。ということで、この話はおしまいにすることにします。いつもなら記事に掲載するプログラムは清書しているのですが、今回はモチベーションがすっかり下がってしまったので、書きっぱなしになっています。ご容赦ください。
とは言っても、せっかく作ったロガーなので、データー取りが終わったら出力例のグラフをちょっとだけ次の記事で公開したいと思います。
- 関連記事
-
- ACアダプタの電流波形と消費電力 (1/3)、何か間違っている
- Arduinoとアナログ電力量計で作った電力ロガーの測定事例
- Arduinoとアナログ電力量計で作る消費電力ロガー、完成しました
- 電力量計の計量パルスをArduinoで読む(割込み版)
- 電力量計(積算電力計)、の配線を変えて感度を2倍にする