1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

昇降圧チョッパ回路の数値計算

Posted at

はじめに

昇降圧チョッパ回路は直流電圧を昇圧したり降圧したりする場合に使用される。出力電圧は、リアクトルに注目してエネルギー保存の法則を立てることで求めることができる。ただ、これはあくまで平均電圧であり、実際の瞬時値電圧とは異なる。
そこで、今回は、瞬時値を数値計算によって求める。
まず、キルヒホッフの法則をチョッパ回路に適用して微分方程式を導出する。
次に、状態方程式に変換してオイラー法によって計算を行う。
最後に、エネルギー保存の法則から求められた平均電圧と計算での実効値電圧を比較する。

チョッパ回路の状態変数の時間変化.png

回路設定

以下のような回路を考える。ただし、実際の回路はスイッチではなく、トランジスタなどの半導体素子を用いている。

回路.png

ON時

ON時.png

E=L\frac{di_1}{dt}

OFF時

image.png

-L\frac{di_1}{dt}=C\int ({i_1-\frac{e_2}{R}})dt

状態方程式

したがって、状態方程式は以下のようになる。

ON時


\frac{d}{dt}
\begin{pmatrix}
   i_1 \\
   e_2 
\end{pmatrix}
=
\begin{pmatrix}
   0 & 0 \\
   0 & -\frac{1}{CR}
\end{pmatrix}

\begin{pmatrix}
   i_1 \\
   e_2 
\end{pmatrix}

+
\begin{pmatrix}
   \frac{1}{L} \\
   0 
\end{pmatrix}
E_1

OFF時


\frac{d}{dt}
\begin{pmatrix}
   i_1 \\
   e_2 
\end{pmatrix}
=
\begin{pmatrix}
   0 & -\frac{1}{L} \\
   \frac{1}{C} & -\frac{1}{CR}
\end{pmatrix}

\begin{pmatrix}
   i_1 \\
   e_2 
\end{pmatrix}

+
\begin{pmatrix}
   0 \\
   0 
\end{pmatrix}
E_1

計算条件

以下の3点に注意し計算を行う。
1.$i_1,e_2$の初期値は0とする。
2.1サイクルをスイッチのON,OFF期間($T_{on},T_{off}$)として周期$T$を繰り返すものとする。
3.平均出力電圧は以下の式で与えられるものとする。

E_2=\frac{T_{on}}{T_{off}}E

プログラム

python buck-boost_chopper_circuit_DC_DC.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math

T_on=0.1  # チョッパのオン時間
T_off=0.1 # チョッパのオフ時間
T=T_on+T_off  # チョッパの周期

L=1.0  # インダクタンス
C=1.0  # キャパシタンス
R=1.0  # 負荷抵抗
E_1=1.0  # 入力電圧
# 状態変数ベクトルの初期値
x=np.array([[0.0],[0.0]])  # x[0]: インダクタの電流, x[1]: キャパシタの電圧\

i_1_ary=[]
e_2_ary=[]

# m : シミュレーション時間の整数倍
# n : シミュレーションの時間ステップ数
m=100
n=1000
t_ary=np.linspace(0,m*T,n)  # シミュレーション時間の配列
dt=t_ary[1]-t_ary[0]  # 時間刻み
for i in range(n):
    t=t_ary[i]
    # チョッパのスイッチング制御
    if (t % T) < T_on:
        # チョッパのオン状態の微分方程式
        x_dot=np.array([[0,0],[0,-1/(C*R)]])@x+np.array([[1/L],[0]])*E_1
    else:
        # チョッパのオフ状態の微分方程式
        x_dot=np.array([[0,-1/L],[1/C,-1/(C*R)]])@x +np.array([[0],[0]])*E_1
    # オイラー法による数値積分
    x=x+x_dot*dt
    # 状態変数の記録
    i_1_ary.append(x[0])
    e_2_ary.append(x[1])


# シミュレーション結果の表示
plt.plot(t_ary,i_1_ary,label='インダクタ電流[A]')
plt.plot(t_ary,e_2_ary,label='キャパシタ電圧[V]')
plt.plot(t_ary,[E_1*(T_on/T_off)]*n,'--',label='理論出力平均電圧[V]')
plt.xlabel('時間 [s]')
plt.ylabel('状態変数')
plt.title('チョッパ回路の状態変数の時間変化')
plt.legend()
plt.grid()
plt.savefig('チョッパ回路の状態変数の時間変化.png')
plt.show()

結果

プログラムを実行すると以下のようになる。

チョッパ回路の状態変数の時間変化.png

このように、振動しながら徐々に出力電圧、出力電流上昇する。
これは、電池→リアクトル→コンデンサという流れで電力が移動していることを示している。
また、出力電圧も徐々に理論平均値に漸近している。
ただし、振動分が少しあることに注意されたい。

まとめ

今回は昇降圧チョッパ回路を題材にして瞬時値の数値計算を行った。結果、瞬時値は時間経過とともに理論平均値に漸近することが分かった。ただし、時間が経過しても瞬時値はわずかに振動をしてしまうことに注意したい。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?