見出し画像

[PYTHONで制御設計]スイッチングレギュレータ(降圧DCDC)のプラント伝達関数

今回はpython controlライブラリを使用して、Gplant(s)のボード線図を確認しました。そして、その過程を詳しく解説します。

系全体のブロック線図

電流制御モード降圧スイッチングレギュレータ(降圧DCDC)のブロック線図を示します。

画像1

これが一般的な電流制御モードスイッチングレギュレータのブロック線図になります。

プラントのブロック線図

上記のブロック線図はごちゃごちゃしているので、プラント部に絞って簡単化します。

画像2

電流帰還部分をGifb(s)と一括りにします。

画像3

FmとGifb(s)をGplant_pre(s)と一括りにします。

画像4

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)を求めることができます。

各ブロックの伝達関数

各ブロックの伝達関数は以下のようになります。

画像5

C:出力コンデンサ容量値[F]
L:出力コイルのインダクタンス値[H]
Vi:入力電圧[V]
r_C:コンデンサESR[Ω]
r_L:コイルのDCR[Ω]
Kiv:電流帰還帰還率[Ω]

これは「スイッチングレギュレータ 伝達関数」とかでググれば出てきます。なぜそうなるのか?は本記事では言及しません。賢い人が導出してくれているので、そうなるもんなんだろうと思って頂ければ、最初は問題ないと思います。

pythonで記述していく

jupyter notebookで記入した内容をそのまま貼っていきます。

まず使用するライブラリをimportします。

画像6

今回は以下の条件で計算しました。

画像7

出力コイルのインダクタンス値は150uHとしました。

画像8

出力コンデンサ容量値は47uFとしました。

画像9

電流帰還率Kivは0.1としました。

画像10

ここからplantの伝達関数計算です。

画像11

↓使用している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()関数でボード線図を計算しています。

画像12

最終的に以下のボード線図が得られました。

画像13

うーん。。。どうなんでしょうかね。あってるんですかね。これ。電流制御モードの伝達関数は近似的に1次遅れ系に見えるんで、gainがそんな感じですね。合ってんのかなぁ(笑)

今後この伝達関数を基にコントローラー設計をやってみたいと思っています。そこで間違ってたら修正します(笑)

以上です。参考になれば幸いです。最後までお読みいただきありがとうございました!!

この記事が気に入ったらサポートをしてみませんか?