ダイオードによる三相整流回路の波形シミュレーション

# はじめに
三相の整流回路には、整流器を3本使用する半波整流回路と6本使用する全波整流回路が存在する。一般に半波整流回路よりも全波整流回路のほうが得られる電力は多くなる。そこで、今回は平滑コンデンサー等に通して波形をなだらかにする前の整流波形がどのようになるのかをプログラミングを用いて調査することを目的とする。そして最後に、以下のような全波整流回路において出力される波形に対してフーリエ変換を行うことによって、交流系統において発生しうる奇数高調波はpN±1次(p:相数,N:自然数)で表され、整流された直流系統においてはpN次の高調波を流出させることをイメージすることを試みた。ただし、今回は整流器としてダイオードを用いたシミュレーションを行った。

![全波整流回路.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/125f145d-97e6-0840-0460-869d3e3df75a.png)

![全波整流回路_フーリエ解析による高調波次数の解析.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/d2594790-c36e-7f85-89b5-dee6980213ae.png)


# 半波整流回路
## 導入
各相に、ダイオードを接続して末端をつなげる回路設計をしている。ゆえに、各相について、中性点を基準として最大の電圧を取る相を選択して導通させるという方法で整流していると考えることができる。

## プログラム
したがって、以下のようなプログラムを書くことができる。

``` python 3han.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math 

n=100
alpha = math.pi/3
out = np.zeros((n))

A=(2)**0.5*1.0
f=50
omega = 2*math.pi*f
t= np.linspace(0,2*1/f,n)
#三相単相電圧
sin_a=A*np.sin(omega*t)
sin_b=A*np.sin(omega*t-2*math.pi/3)
sin_c=A*np.sin(omega*t-4*math.pi/3)
#ダイオードの役割
for i in range(n):
  if sin_a[i] == max(sin_a[i] ,sin_b[i] ,sin_c[i] ):
    out[i]=sin_a[i] 
  elif sin_b[i] == max(sin_a[i] ,sin_b[i] ,sin_c[i] ):
    out[i]=sin_b[i]
  else:
    out[i]=sin_c[i]


plt.plot(omega*t,sin_a)
plt.plot(omega*t,sin_b)
plt.plot(omega*t,sin_c)
plt.plot(omega*t,out)

plt.xlabel("ωt")
plt.ylabel("電圧")

plt.savefig("半波整流回路.png")
plt.show()

```

これを実行すると以下のような画像が出力される。

![半波整流回路.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/df4d6bed-7790-2765-58c9-3362ae6a403b.png)

# 全波整流回路
## 導入
6本の整流器を用いてブリッジ回路を形成する。
したがって、整流された電圧波形は各相の最大電圧から最小電圧を引いた波形を描写すればいいということが分かる。
## プログラム
``` python 3zen.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math 

n=1000

out = np.zeros((n))

A=(2)**0.5*1.0
f=50
omega = 2*math.pi*f
t= np.linspace(0,2*1/f,n)
#三相単相電圧
sin_a=A*np.sin(omega*t)
sin_b=A*np.sin(omega*t-2*math.pi/3)
sin_c=A*np.sin(omega*t-4*math.pi/3)
#ダイオードの役割
for i in range(n):
  out[i]=max(sin_a[i] ,sin_b[i] ,sin_c[i] )-min(sin_a[i] ,sin_b[i] ,sin_c[i] )

plt.plot(omega*t,sin_a)
plt.plot(omega*t,sin_b)
plt.plot(omega*t,sin_c)
plt.plot(omega*t,out)
plt.xlabel("ωt")
plt.ylabel("電圧")

plt.savefig("全波整流回路.png")
plt.show()
```
これを実行すると以下のようなグラフが出力される。

![全波整流回路.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/125f145d-97e6-0840-0460-869d3e3df75a.png)

## フーリエ変換による高調波次数の解析
全波整流波形には、高調波が含まれていることが分かっている。したがって、適切な次数の高調波を吸収するフィルタ設備を設けるなどの対策を行わないと電力用コンデンサの破損などを招く恐れがある。そこで、どのような次数の高調波が発生しうるのかを知りたい。そのときに役立つのがフーリエ変換である。今回はPythonのモジュールのnumpyに搭載されている離散フーリエ変換という機能を用いて、波形に含まれる高調波の次数について調査する。ただし、フーリエ変換のやり方は、参考文献に載せておく。

``` python 3zen_fft.py
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math 

n=1000
N=1024
out = np.zeros((n))

A=(2)**0.5*1.0
f=50
omega = 2*math.pi*f
t= np.linspace(0,2*1/f,n)
#三相単相電圧
sin_a=A*np.sin(omega*t)
sin_b=A*np.sin(omega*t-2*math.pi/3)
sin_c=A*np.sin(omega*t-4*math.pi/3)
#ダイオードの役割
for i in range(n):
  out[i]=max(sin_a[i] ,sin_b[i] ,sin_c[i] )-min(sin_a[i] ,sin_b[i] ,sin_c[i] )


# 全波整流波形の図示（フーリエ変換を行う上では不要なのでコメントアウトしている）

# plt.plot(omega*t,sin_a)
# plt.plot(omega*t,sin_b)
# plt.plot(omega*t,sin_c)
# plt.plot(omega*t,out)
# plt.xlabel("ωt")
# plt.ylabel("電圧")

# plt.savefig("全波整流回路.png")
# plt.show()

#以下、発生しうる高調波の影響について調査するためにフーリエ変換を行う。

F = np.fft.fft(out)                       # フーリエ変換
freq = np.fft.fftfreq(N, d=2*1/(f*n)) # 周波数スケール

# フーリエ変換の結果を正規化
F = F / (N / 2)

# 振幅スペクトル
Amp = np.abs(F)

### 全波整流のスペクトル ###
plt.plot(freq[1:int(N/2)], Amp[1:int(N/2)]) # A-f グラフのプロット

#上のNはフーリエ変換のサンプリング数だが下のNはただの自然数であることに注意！！

# 6N±1次の高調波が発生するはず 黒点が6N-1次の目印で赤点が6N+1次の目印とする（直流整流波形に含まれている高調波は6N次なはず）

N= np.arange(1,10,1)


plt.scatter(f*(6*N-1),0*N,color="black",label="6N-1次")
plt.scatter(f*(6*N+1),0*N,color="red",label="6N+1次")

plt.legend()
plt.xscale("log") # 横軸を対数軸にセット
plt.xlabel("周波数/Hz")
plt.ylabel("振幅スペクトル")
plt.savefig("全波整流回路_フーリエ解析による高調波次数の解析.png")


plt.show()

``` 

![全波整流回路_フーリエ解析による高調波次数の解析.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/d2594790-c36e-7f85-89b5-dee6980213ae.png)





このグラフより、確かに6N±1次の高調波が主に交流側で発生していて、Nが小さいときほどその影響は大きいということが分かった。一方で、整流後の直流側では6N次の高調波が含まれているということが分かった。このことから、フィルタ設備により高調波を吸収するためには、交流側は5,7次高調波をターゲットとし狙い、直流側では6次高調波をターゲットとして狙うのが、今回の全波整流回路（6相）では合理的であると考えられる。


# まとめ
今回は、三相交流における整流回路について波形をシミュレーションした。具体的には、半波整流回路と全波整流回路の場合についてそれぞれを調査した。結果、整流器がダイオードの場合、制御角がないので単純なプログラムを用いて解析することができた。今後は、サイリスタのような点孤制御角が存在する整流回路においても調査してみたい。

# 参考文献
https://qiita.com/chnokrn/items/57c89382942778a20e7f