google-site-verification: google3bd66dd162ef54c7.html

グリッドタイインバーターの製作、ソフト解説編

 グリッドタイインバーターの製作の記事もいよいよ最終回、今回はソフトの解説です。というか、自分への覚え書きを兼ねています。

▼自作したグリッドタイインバーター
自作グリッドタイインバーター

 制御はArduinoで行っており、スケッチはこちら。 (拡張子はTXTになっています)デバッグ用の機能などがコメントアウトしたまま残っています。

 以下、特徴的な点を説明していきます。なお、電源の周波数は50Hzです。
 
1. 制御全般
 グリッドタイインバーターのトランスは2W程度の電力を消費するので、夜間や発電量が非常に少ない場合はトランスを切り離さないと無駄な電力を消費することになります。また1日の発電量を計算するには昼夜の判定が必要になります。

 つまり昼と夜で動作モードの切り替えが必要で、これを太陽電池パネルの電圧を測定することで自動的に行っています。具体的な判定条件は下記の通りです。

 ・スタンバイ状態から3V以下になったら、夜(スリープ)
 ・夜の状態から8V以上になったら、スタンバイ状態
 ・スタンバイ状態から18V以上になったら、発電
 ・発電状態から11ボルト以下になったら、スタンバイ

 状態遷移の条件にヒステリシスを付けることで誤動作しない(難い)ようにしています。

2. 発電中の制御
 ACに同期してFETのゲートパルスを生成する必要がありますが、これを全部ソフトでやるとタイミング制御が厄介になります。そこでサイクルの開始だけはポーリングで検出し、後はタイマー割り込みを組み合わせて1サイクル分のゲートパルスを自動生成しています。こうすることでCPUは表示などの処理をタイミングを気にすることなく行うことが出来ます。

 タイミングを気にしないでいいとは言っても、次のサイクルの開始までにはポーリング状態に戻る必要があります。でも、電源の1サイクルの時間は20msもあるのでほとんどの処理は楽勝で完了できます。でも、例外はEEPROMへの書き込みが発生した場合。これは20ms以内に完了出来ないので、データを分割して書き込むことで時間制限にひっかからないようにしています。

3. MPPT制御
 FETをONにするパルス幅を加減することで負荷の重さを調整しMPPT動作を行っています。アルゴリズムは山登り法で制御周期は0.5秒。0.1ms単位でパルス幅を増減させることで最大パワーとなるパルス幅の探索を連続的に行っています。なおONの時間は0.6ms~8msの範囲に制限。

4. AC電源断検出
 発電中にコンセントが抜けた場合、自励発振状態になって運転が継続されるため、ACプラグに100Vが出てとても危険です。自励発振中は電源と無関係な周波数になるのでこれを利用し、周波数(周期)が基準値を外れたら以下の表示を行い、運転を停止させています。

▼周波数異常検出
 周波数エラー表示
 この検出はfreqError()の関数で行っており、無限ループに落して停止させます。ただし、その直前に本日と累積の発電量をEEPROMに退避させています。AC電源が落ちてもコンデンサに貯まった電荷でコンマ何秒間はCPUは動けるので、その間に退避処理は完了できます。

 なお、運転再開時には最初にEEPROMからデータを読み出しているので、電源断直前のデーターから再開できます。 

 ところで、AC電源の瞬時停電でもこの機能が働くはずです。でもまあ頻度は少ないし救済の方法も難しいのでこの場合はあきらめています。
  
5. 表示関係
 一旦動き出すとGTIは手間いらず。ともすれば動かしていることすら忘れそうになるので、表示は出来る限り充実させました。
 
 動作モードに応じ以下のような表示を行っています。

▼起動時
スタートメッセージ
 電源ONでこの表示を出し、その間に内部の初期化を行っています。

▼スリープ中
スリープ
 夜間はこの状態。当日(前日)と累積の発電量を表示。

▼スタンバイ
スタンバイ
 夜が明け、明るくなるとこの状態に移行。当日発電量はリセットされます。

▼発電中表示-1 (デフォルト表示)
GTI発電中のデフォルト表示
 RUNの後の2桁の数字はMPPTのパルス幅。53と表示していますがこれはパルス幅が5.3msという意味。

 その右に変な縦線が表示されていますが、これは積算電力計のアラゴの円盤を模したもの。縦線は右に移動し、発電量が多いほど移動速度が速くなります。二行目は本日と累積の発電量(Wh)

 発電中はボタン操作で以下の表示に切り替えが可能。

▼発電中表示-2 (ソーラーパネルの電圧/電流/電力表示)
ソーラーパネル電圧電流表示

▼発電中表示-3 (送電量表示)
AC出力
 パネル発電量の75%の値を表示しているだけです。

▼発電中表示-4 (累積発電量)
累積発電量
 こんな画面いらなかったかもです。

▼発電中表示-5 (デバッグ用)
デバッグ用表示
 デバッグ用に内部変数の値を表示しています。

 二行目は電圧/電流測定用ADコンバーターの生の値。-23という表示は電流測定回路のオフセット値で、起動直後に自動測定した値をこの画面で確認できます。

▼発電中表示-6 (AC電源周期表示)
AC電源周期表示

 ボタンを再度押すと発電中表示のデフォルトに戻りますが、この時本日と累積の発電量をEEPROMに保存しています。いきなりリセットをかけると前日の状態に戻ってしまい、本日の発電量の記録を失うことになります。でも発電中の表示を一回転させておくことでこのようなことが無くなります。いわば隠し機能です。

6. USBインターフェイス
 内蔵したシリアル/USBインターフェイス経由で以下の情報をPCから読むことができます。なお、データーは垂れ流しているだけので、読まなくても動作に支障はありません。
 
1)過去の発電量
 内部のEEPROMに過去480日分の発電量を記録しています。リセット直後にこのデーターを出力するので、ターミナルソフトなどで読むことが可能です。
 
2)現在の動作状態
 送電中は1秒毎に電圧、電流、MPPTのパルス幅のデーターをUSBに流しています。これを使うと1日の間の発電量のグラフを作ったりできます。

7. まとめ
 長い期間をかけて少しずつ機能を追加していったので結構な大きさのプログラムになってしまいました。でもこれでもメモリの半分ちょっとを消費しただけです。
 
 今後改良するとしたら、過去の発電量の表示機能でしょうか。パネルにロータリーエンコーダーが付いているのでこれをくるくるさせると過去の発電量を表示する機能を付けると面白そうです。でも同じ情報はUSBからデータとして読めるのでそこまでやらなくても、という気もしています。
 それと、一日の発電量の変化を擬似グラフィックで液晶に表示とか。うーんこれ面白そう。でも面倒なので気が向いたらやることにしますか。
 
 ということとで、ひょんな記事がきっかけになって始めたグリッドタイインバーターの製作。このネタで半年くらいたっぷり遊ばせてもらいましたが、これにて完了です。

 なお、この製作の関連記事はグリッドタイインバーターのカテゴリにまとめています。ご興味のある方はご覧下さい。
関連記事

tag : GTI 自作 制御ソフト

コメントの投稿

管理者にだけ表示を許可する

No title

一連の記事を興味深く見ておりました。
私には難しくて理解できませんが、その熱意と技術に敬服です。

そのままPTとかCTとかシャントの容量を大きくするだけで、大きな電力の監視に使えそうですね。

岡目八目さん、今晩は

いつもコメントありがとうございます。
また、この記事に興味をもっていただいてありがとうございます。

そうですね、相手はなんでもいけます。でも、信頼度やらいろいろと不安もあるので大切なことに使うのはやばい気がします。
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード