見出し画像

降圧DCDCのインダクタ(コイル)、コンデンサ設計をpythonで計算してみた。

降圧DCDCの設計を始めるにあたって、まずは出力インダクタ、出力コンデンサを決めていくことになるかと思います。本記事ではインダクタンス値、容量値をpythonを使って計算してみましたので、計算順序とスクリプトを解説をして、最後に決定したインダクタンス値・容量値で狙い値通りの結果が出ているかをLTspiceを使ってシミュレーション確認をした結果を示します。

jupyter notebookを使用して計算したので、それをそのままキャプチャして載せます。

Pythonライブラリのインポート

画像1

まず使用するライブラリのimportです。numpyとsympyだけで多分問題ないです。matplotlibやcontrolライブラリは制御設計に使ってみようと思いますのでimportしていますが、今回は使用しません。

降圧DCDCの使用条件の設定

画像2

このセルでは降圧DCDCの使用条件を設定します。数値を手入力します。
入力電圧=8/12/16[V]
出力電圧=5[V]
スイッチング周波数=100[kHz]
出力電流=0.1/1/2[A]
の条件で計算してみました。

出力インダクタのインダクタンス値の計算

画像3

「出力電流min値でも連続動作する」という考え方を基にL値の暫定値L_preを計算しています。計算の結果、L値は171.875uH程度にしておけば良いことがわかりました。L値決定の考え方については以下記事で解説しておりますので、良かったら見てみて下さい。

画像4

L = 171uHというぴったりの値の部品はありませんので、今回は150uHと設定します。

画像5

L=150uHとしたときの、リップル電流を計算してみます。最大で230mAとなり出力電流が0.1A(=100mA)のときはギリギリ不連続モードで動作しますが、まぁ今回は良しとします。

出力コンデンサの容量値の計算

画像6

まず出力リップル電圧狙い値を決めます。出力電圧に対して十分小さければ問題ないので、今回は適当に0.1[V]としました(0.1/5=出力電圧の2%)。出力コンデンサのESR値r_C=0.1[Ω]として、リップル電圧計算によく使用される計算式

Vripple = Iripple * (r_C + 1/(8*fpwm*C))

から逆算して暫定の容量値C_preを決定します。

この計算の結果、3.716uF以上にしておけば、出力リップル電圧を0.1[V]以下に抑えれることがわかりました。

画像7

C=3.7uFというぴったりの値はありませんので、今回は10uFをします。最後に10uFでリップル電圧を計算すると51.6mV程度となると考えられます。

シミュレーションで確認

実際に回路図を書いてシミュレーションで確認してみました。まずシミュレーション回路図を示します。

画像9

入力電圧を.stepと書いてあるところで8/12/16[V]と振ってシミュレーションします。.paramと書いてあるところで各入力電圧に応じてスイッチングDUTYを計算してます。

シミュレーション結果を以下に示します。

画像9

上から、スイッチング電圧(コイルの左のノード)、出力電圧Vout、コイル電流ILとなっています。黄色:Vin=8[V]、緑色:Vin=12[V]、青色:Vin=16[V]です。

おいおい、出力電圧が5[V]になってないじゃん。と思いますが、これはスイッチのON抵抗やスイッチON/OFFの時間がかかっていることが影響して、理想的にはDuty=Vo/Vinなのに、ずれが生じてきているのだと考えられます。

今回は設計値のリップル電圧、リップル電流に関してどうかを確認してみましょう。

青色の16[V]時がぱっと見で大きく振れているので、それで見てみると

出力リップル電圧=70.4[mV](設計値予想値:51.6[mV])
出力リップル電流=0.242[A](設計予想値:0.229[A])

うーん。どうでしょうか。まぁ合ってんじゃね?って感じですかね。

出力リップル電圧が大きくなっている原因は出力リップル電流が大きくなっているためと考えられます。

出力リップル電流は出力電圧が小さくなっているから、コイル両端にかかる電圧が大きくなっているからかなぁと考えています。

まぁでも理想と現実は違うので、この程度の差はいいんじゃないでしょうか。

えーと以上です。

最後までお読みいただきありがとうございました。

本記事が理解の一助となれば、幸いです。

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