単相誘導電動機における回転磁界の生成について

# はじめに
単相交流は、２極の電極に位相が180度だけずれた正弦波交流電圧が加わっているものとみなすことができる。しかし、誘導機を回転させるためには、位相が120度ずれた電極は3つ必要になる。もう少し制限を緩めると、3本以上かつ1本は、他の2本よりも位相が若干(90度程度？)ずれたものを必要とする。そこで今回は、コイルを2本用意して、位相が約90度ずつずらした交流電流を与えることで、回転磁界を以下のように生成することを目的とする。

![Sample_delta2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/69c24d3e-f90a-40d1-9994-6f56b3b65187.gif)


# 回路設定

回路設定としては、回転子に対して、励磁コイルを垂直に２本配置する。そして1本は交流電源に直接接続し、もう1本は、コンデンサを直列に介して接続する。これで、位相を約90度ずらすことが可能となる。

ただし、コイルは同一のものを使用し、内部抵抗が存在しているものとする。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/cb6c26aa-d296-479d-bbb8-617127173be2.png)

# 理論設定
単相交流電源電圧を以下のように定義する。
```math
e(t)=V \sin\omega t 
```
この場合、コンデンサを介していない方の電流は以下のように表すことができる。
```math
I_1=-I_3=\frac{V}{\sqrt{r^2+(\omega L)^2}} \sin (\omega t -tan^{-1}(\frac{\omega L}{R}))
```
一方で、コンデンサを介した方の電流は以下のようにあらわすことができる。

```math
I_2=-I_4=\frac{V}{\sqrt{r^2+(\omega L-\frac{1}{\omega C})^2}} \sin (\omega t -tan^{-1}(\frac{\omega L-\frac{1}{\omega C}}{R}))
```

これにより、コイルによって決定される$r,L$に対して$C$を上手く設定させることができれば、90度×4=360度の回転磁界を疑似的に生成することができる。ただし、実際は90度よりずれてしまう。

```python 2phase_to_3phase.py
"""
画面垂直方向に伸びる3本の導線に流れる3相電流により生じる磁場をシミュレーションするプログラム
"""
import numpy as np
import matplotlib.pyplot as plt
import math
import japanize_matplotlib
import matplotlib.animation as animation
fig = plt.figure()
ims = []
#グリッドの作成
LX, LY=10,10
gridwidth=0.1
X, Y= np.meshgrid(np.arange(-LX, LX, gridwidth), np.arange(-LY, LY,gridwidth)) 
#送電線の座標設定
r=1.0
# 電流の設定(最大値)
#I=10 *(2)**0.5 #電流の絶対値
f=50
omega=2*math.pi*f
# シミュレーション時間
num=10
t=np.linspace(0,1,num)
#真空の透磁率
myu=4*math.pi*10*(-7)

x1,y1=1,0
z1=x1+1j*y1

x2,y2=-1,0
z2=x2+1j*y2

x3,y3=0,1
z3=x3+1j*y3

x4,y4=0,-1
z4=x4+1j*y4

#一本の銅線に働く磁場を求める関数
def H_ary(I,x_k,y_k):
  #複素数(complex)対応にしておく
  H=np.zeros((len(X),len(X)),dtype=complex)
  plt.plot(x_k,y_k,'o',color='blue')
  for i in range(len(X)):
      for k in range(len(X)):
          x=X[i][k]
          y=Y[i][k]
          z=x+1j*y
          z_1=z-(x_k+1j*y_k)
          H[i][k]=I/(2*math.pi*abs(z_1))*((-1j)*z_1/abs(z_1))
  return H

def update(p):
    V=100
    R=10
    L=100*10**(-3)
    C=100*10**(-6)
    print((np.arctan(omega*L/R)-np.arctan((omega*L-1/(omega*C))/R))*180/math.pi)
  
    if p != 0:
        plt.cla()  # 現在描写されているグラフを消去
    I1=V/(R**2+omega*L**2)*np.sin(omega*t[p]-np.arctan(omega*L/R))
    I2=-I1
    I3=V/(R**2+(omega*L-1/(omega*C))**2)*np.sin(omega*t[p]-np.arctan((omega*L-1/(omega*C))/R))
    I4=-I3

    H_sum=H_ary(I1,x1,y1)+H_ary(I2,x2,y2)+H_ary(I3,x3,y3)+H_ary(I4,x4,y4)
    B_sum=H_sum*myu
    U=B_sum.real
    V = B_sum.imag
    plt.streamplot(X,Y,U,V,color="red",linewidth=0.5,density=2)
ani = animation.FuncAnimation(fig, update,  \
    interval = 100, frames = num)
ani.save("Sample_delta2.gif", writer = 'imagemagick')
```

# 結果

これを実行すると以下のようになる。

![Sample_delta2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/69c24d3e-f90a-40d1-9994-6f56b3b65187.gif)


このように、回転磁界を疑似的に生成していることが分かる。
これには、先ほども述べたとおり、パラメータ$C$の設定が重要になる。

# まとめ
今回は、Pythonを用いて、単相誘導電動機がどのように回転磁界を疑似的に生成しているのかをシミュレーションした。具体的には、コンデンサを用いることで、1本のコイルの電流を進めることで位相差を作り、回転磁界を生成させた。この様な創意工夫によって、様々な回転機器は機能しているため、とても面白い。

# 参考文献

https://amzn.asia/d/12fs5rL