[PYTHONで制御設計]スイッチングレギュレータ(降圧DCDC)のプラント伝達関数
今回はpython controlライブラリを使用して、Gplant(s)のボード線図を確認しました。そして、その過程を詳しく解説します。
系全体のブロック線図
電流制御モード降圧スイッチングレギュレータ(降圧DCDC)のブロック線図を示します。
これが一般的な電流制御モードスイッチングレギュレータのブロック線図になります。
プラントのブロック線図
上記のブロック線図はごちゃごちゃしているので、プラント部に絞って簡単化します。
電流帰還部分をGifb(s)と一括りにします。
FmとGifb(s)をGplant_pre(s)と一括りにします。
Gplant_pre(s)とGdv(s)を直列につなげたものがGplant(s)です。
この簡単化していく流れをそのままpythonで記入します。
箇条書きすると、以下の手順で記述していきます。
①KivとGdi(s)を直列接続としてGifb(s)とする。
②FmとGifb(s)をフィードバック接続としてGplant_pre(s)とする。
③Gdv(s)とGplant_pre(s)を直列接続としてGplant(s)とする。
直列接続とかフィードバック接続とかはpythonに関数があるので、それに当てはめていくだけで、とても簡単にGplant(s)を求めることができます。
各ブロックの伝達関数
各ブロックの伝達関数は以下のようになります。
C:出力コンデンサ容量値[F]
L:出力コイルのインダクタンス値[H]
Vi:入力電圧[V]
r_C:コンデンサESR[Ω]
r_L:コイルのDCR[Ω]
Kiv:電流帰還帰還率[Ω]
これは「スイッチングレギュレータ 伝達関数」とかでググれば出てきます。なぜそうなるのか?は本記事では言及しません。賢い人が導出してくれているので、そうなるもんなんだろうと思って頂ければ、最初は問題ないと思います。
pythonで記述していく
jupyter notebookで記入した内容をそのまま貼っていきます。
まず使用するライブラリをimportします。
今回は以下の条件で計算しました。
出力コイルのインダクタンス値は150uHとしました。
出力コンデンサ容量値は47uFとしました。
電流帰還率Kivは0.1としました。
ここからplantの伝達関数計算です。
↓使用しているpython controlの関数
ctl.tf():ctl.tf([分子],[分母])と記述します。
ctl.series():伝達関数を直列につなげる。
ctl.feedback():伝達関数をフィードバック接続する。
各伝達関数をctl.tf()関数で記述した後に順番に以下の処理を行ってます。
①KivとGdi(s)を直列接続としてGifb(s)とする。
②FmとGifb(s)をフィードバック接続としてGplant_pre(s)とする。
③Gdv(s)とGplant_pre(s)を直列接続としてGplant(s)とする。
一応スイッチングのむだ時間もパテ近似で作って繋げました。
最後に以下のctl.bode()関数でボード線図を計算しています。
最終的に以下のボード線図が得られました。
うーん。。。どうなんでしょうかね。あってるんですかね。これ。電流制御モードの伝達関数は近似的に1次遅れ系に見えるんで、gainがそんな感じですね。合ってんのかなぁ(笑)
今後この伝達関数を基にコントローラー設計をやってみたいと思っています。そこで間違ってたら修正します(笑)
以上です。参考になれば幸いです。最後までお読みいただきありがとうございました!!
この記事が気に入ったらサポートをしてみませんか?