【第5回】 電力量計の機能や実現方法ついて考える

ここまでで、電圧と電流を取り出し、電力量を計測する目処がつきました

次は、Arduinoでどんなことを実現するのかをまとめていきたいと思います。

  • 電力量計測

(1)発電電力(必須)

ソーラーパネルで発電している電力量を計測したい

二相三線式なので、電流計測のためにCTセンサ2個使用

(2)使用電力

家で使用している電力量を計測したい

二相三線式なので、電流計測のためにCTセンサ2個使用

(3)売電電力量

上の(1)(2)の引き算で計算できるかも

(4)上記とは別に、電力量を計算するために電圧計測を行う

・・・全部実現するには、A/D変換ポートを5つ使用する必要があるが大丈夫だろうか??

  • 電力量履歴保存

10分単位ぐらいで、過去数か月分は残したい

1時間に6件、1日で144件、1か月で4464件、1年なら52560件のデータを保持する必要がある

ソーラーパネルの耐用年数15年とするならば・・・788400件ものデータを保持する必要がががが

どうやって保存するかがキモになりそう

SDカードに保存するか?PCに保存するか

電力量履歴閲覧

保存した履歴を過去に振り返り閲覧したい

単位は10分、1時間、1日、1か月ぐらいはほしい気がする

グラフとかで見える化できるとウレシイのだが・・

≪電力量計測≫

当面は、「(1)発電電力」だけの計測を目標とすることにした。

必要なのは、電流計測用CTセンサー2個と、ACアダプター(改)電圧計

ArduinoのA/D変換ポートは、3ポート使用する

電流、電圧の計測周期だが、ArduinoのA/D変換には約100μs必要らしく、3ポート計測すると300μs必要になってくる。

今後使用電力の計測をすると、5ポートの計測に500μsの時間が必要になってくるため、同時に計測するのはあきらめることにした。

サンプリング周期は250μs固定とし、Timerで定期的にサンプリングをすることにした。

タイマーで呼び出される割り込み関数内では、ACの1周期ごとに以下の順に計測するポートを切り替えて、常時1ポートのみA/D変換をすることにした。

(全周期計測せず、間引きながらの計測になるが、個人のオモチャなので、まあイイカナと・・)

State1:AC電圧1周期計測

State2:AC電流(発電CH1)1周期計測

State3:AC電圧1周期計測

State4:AC電流(発電CH2)1周期計測

State1へ戻る

上記で計測した電圧及び、電流値は、空き時間に計算し、電力に換算&保存することとする

≪電力量履歴保存≫

保存する際に考慮すべき点は以下4点を考えた

①保存できる容量

②日時保存の難易度

③データの永続性及び取り出しやすさ

④プログラム実装の難易度

実現方法案としては以下の通り

それぞれ良い点悪い点があるが、この4点で判定してみた。

・ArduinoのRAM(メモリー)に保存

・SDカードに保存

・Ethernet経由でPCに保存

・Ethernet経由でWebサーバーに保存

メリット、デメリットを鑑みて考えた結果「 Ethernet経由でWebサーバーに保存」案で進めることにした

≪電力量履歴閲覧≫

上記でWebサーバーを使用することとしたため、閲覧機能はWebページで実現し、スマホやPCのブラウザから確認できるようにすることにした。

サーバーの選択だが、過去HPを作成した経験のある「Google App Engine」を使用する。

Google App Engine (GAE) は、Googleの提供するサービスの1つであり、ウェブアプリケーションPythonJavaGo言語を使用して開発し、Googleのインフラストラクチャー上で実行し、バージョン管理することができる。(Wikiペディアより)

この実現方法であれば、とりあえず発電量をDBに登録しておけば、Webページは自由にカスタマイズできるため、後々バージョンアップとかがカナリ楽になりそうである。

第6回 今回実現する仕組みの全体像