【第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つであり、ウェブアプリケーションをPythonやJavaやGo言語を使用して開発し、Googleのインフラストラクチャー上で実行し、バージョン管理することができる。(Wikiペディアより)
この実現方法であれば、とりあえず発電量をDBに登録しておけば、Webページは自由にカスタマイズできるため、後々バージョンアップとかがカナリ楽になりそうである。