PSoC Expressでソーラーバッテリー充電器を作る


psoc_soloar_01.gif
今回はPSoC Expressを利用して太陽電池用のバッテリー充電器のプロジェクトを作る。実は実際にPSoCに書き込んで動作確認した訳ではない。またMTTPには対応していないなど欠点もある。そのうち組み立てようと考えつつ作ったものだ。

psoc_soloar_02.gif
今回の充電器は太陽電池とバッテリーとをDCスイッチ(FETスイッチ)を介して接続しする。そしてバッテリー電圧をチェックしつつ電圧に応じてDCスイッチにより充電・非充電を切り替える。

バッテリー電圧監視用の直流電圧入力をプロジェクトに追加する。画面左下の「INPUT」から「Input Driver Catalog」を開き、「Voltage Input」の「DC」にある「0.00 to 31.00V」を追加する。名前は「Battery」にした。

psoc_soloar_03.gif
次に太陽電池とバッテリーの間に配置するDCスイッチを追加する。画面左下の「OUTPUT」から「Output Driver Catalog」を開き、「Digital Output」の「Digital Output」にある「DC Switch」から「48V,10A High Side」を選択する。名前は「SW_Solar_to_Battry」とした。

psoc_soloar_04.gif
さらにバッテリーから電力を取り出す側用のDCスイッチを配置する。バッテリーに接続した機器の消費電力により過放電になってしまうのを防ぐためだ。

画面左下の「OUTPUT」から「Output Driver Catalog」を開き、「Digital Output」の「Digital Output」にある「DC Switch」から「48V,10A High Side」を選択する。名前は「SW_Battery_to_Load」とした。

psoc_soloar_05.gif
わざわざPSoCのポートを使って制御する必要もないのだが、LEDも配置することにした。充電中だけ光るLEDを追加する。「OUTPUT」から「On/Off」のLEDを追加する。名前は「LED_Charge」とした。

psoc_soloar_06.gif
同様にバッテリーから電力を取り出せる場合だけ光るLEDを追加する。名前は「LED_Battery」とした。

psoc_soloar_07.gif
これで入出力のデバイスが追加された。次にバッテリー電圧に応じた処理を追加するため画面左下にある「VALUATOR」をクリックする。

psoc_soloar_08.gif
バッテリーの電圧に応じた処理をするため「SetPointRegion」を選択する。

psoc_soloar_09.gif
バッテリー電圧に応じた処理をするため入力は「Battery」を選択する。

psoc_soloar_10.gif
「SetPointRegion」の設定画面が開いた。「AddSetPoint」ボタンを押して閾い電圧を設定する。

psoc_soloar_11.gif
低電圧側の設定をする「Threshold」を「10」、「Hysterisis」を「0.5」にする。

psoc_soloar_12.gif
これで低電圧側の設定ができた。

psoc_soloar_13.gif
同様に中電圧側と高電圧側の閾地を設定する。ここではそれぞれ13Vと14.2Vとした。

psoc_soloar_14.gif
これで「Battery」と「Valuator1」がオレンジ色の線で結ばれた。今回はさらに充電状態と非充電状態の状態遷移を設定するため、もうひとつ「VALUATOR」を追加する。

psoc_soloar_15.gif
今度は状態遷移を設定するため「StateMachine」を選ぶ。

psoc_soloar_16.gif
まずは充電状態を設定する。「Add State」ボタンをクリックする。

psoc_soloar_17.gif
そして「Charge」という名前で追加する。

psoc_soloar_18.gif
これで充電状態を示す「Charge」が追加された。同様に非充電状態を追加するため「Add State」ボタンから「ChargeEnd」を追加する。

psoc_soloar_19.gif
これで充電状態「Charge」と非充電状態「ChargeEnd」の2つの状態が追加された。次に状態遷移を設定するため「Charge」をダブルクリックする。

psoc_soloar_20.gif
「Add」ボタンをクリックする。

psoc_soloar_21.gif
「Expression」を「Valuator1 < 3」とする。これで「Valuator1 < 3」の間はずっと充電状態になり続ける。「Valuator1 < 3」というのは「バッテリー電圧が14.2V未満」ということになる。つまり「バッテリー電圧が14.2V未満のときは充電状態を維持する」という意味になる。

psoc_soloar_22.gif
さらにもう一度「Add」ボタンをクリックする。

psoc_soloar_23.gif
今回は「Expression」を「Valuator1 >= 3」にし、「Charge」から「ChargeEnd」に設定する。これは「バッテリー電圧が14.2V以上になったら非充電状態に移行」という意味になる。

psoc_soloar_24.gif
これで「Charge」の状態遷移の設定が終わった。

psoc_soloar_25.gif
次に「ChargeEnd」をダブルクリックして非充電状態からの状態遷移を設定する。

psoc_soloar_26.gif
先ほどと同様に「Add」ボタンをクリックする。

psoc_soloar_27.gif
そして「Expression」を「Valuator1 < 2」にし、「Charge」へ遷移するように設定する。これは「バッテリー電圧が13V以下のときに充電状態に移行」という意味になる。

psoc_soloar_28.gif
もう一度「Add」ボタンをクリックして...

psoc_soloar_29.gif
「Expression」を「Valuator1 >= 2」にする。これは「バッテリー電圧が13V以上のときは非充電状態を保つ」という意味になる。

psoc_soloar_30.gif
これで状態遷移の設定が終わった。

psoc_soloar_31.gif
この設定により、バッテリー電圧が13V以下になると充電が始まり、14.2Vになると充電が終わるという動作になる。

psoc_soloar_32.gif
次に設定した状態通りにDCスイッチが動作するように設定する。DCスイッチを右クリックして現れたメニューから「Transfer Function」を選択する。

psoc_soloar_33.gif
今回は「TableLookup」を利用する。

psoc_soloar_34.gif
入力元として「Valuator2 state」を選択する。

psoc_soloar_35.gif
ここではデフォルトのまま「Next」ボタンを押す。

psoc_soloar_36.gif
そしてドラッグ・アンド・ドロップで「Charge」のときにDCスイッチが「ON」、「ChargeEnd」のときに「OFF」になるように設定する。

psoc_soloar_37.gif
同様にバッテリーからの電力供給側のDCスイッチも設定する。

psoc_soloar_38.gif
先ほどと同じく「TableLookup」を選択し...

psoc_soloar_39.gif
入力元では「Valuator1」を利用する。先ほどの「Valuator2 state」とは異なる入力を使うことに注意!

psoc_soloar_41.gif
そして10V以上のときに「ON」になるように設定する。

psoc_soloar_42.gif
同様に「LED_Battery」も設定する。

psoc_soloar_43.gif
こちらも「Valuator1」を選択する。

psoc_soloar_44.gif
10V以上で「ON」というのも同様だ。

psoc_soloar_45.gif
さらに充電中を示すLEDの設定をする。

psoc_soloar_46.gif
こちらは「Valuator2 state」になる。

psoc_soloar_47.gif
そして充電中のみ「ON」になるようにする。

psoc_soloar_48.gif
これで各モジュール間がオレンジ色の線で結ばれ、モジュール関係の設定が終わった。次にシュミレーションで動作を確認する。

psoc_soloar_49.gif
「Battery」の左側にあるバーを上下に動かしてDCスイッチやLEDの変化を確認する。

psoc_soloar_50.gif
今回の回路図はこのようになる。とは言うもののまったく同じように作る必要はない。適宜変更するといいだろう。特に重要なのがQ2かな?低ON抵抗のMOS FETを利用するといいだろう。

プロジェクトファイルをダウンロード


カテゴリー「電子工作」 のエントリー