본문 바로가기

물리

전송선로에서 전압파, 전류파 시각화

지난번 줄의 파동은 이를 위한 수단이고, 사실 이번 주제가 내가 하려 했고 가장 힘들었던 타겟이였다!

줄의 파동과 유사하게 전송선로를 진행, 반사 등 하는 전압, 전류 파동의 규칙과

이를 표현하는 방법에 익숙해지기를 바라며 머릿속에 전압과 전류파의 전파되는 모습을 상상하고 싶었다.^^;

전자기파

내가 학부때 배웠던 회로이론, 전자기학, 초고주파 책들을 오랜만에 다시 들춰보게되고

몇 군데 인터넷사이트도 많이 봤는데, 솔직히 많이 어렵고 힘들었다. 잘 이해안되는 부분도 있고, 시간도 많이 걸리고,,, 

그러나 최대한 신뢰있는 자료를 근거로 검증된 것을 시각화하려고 노력했다.

 

먼저 파이썬 scikit-rf 패키지 아래 문서자료를 참고하여 기본코드를 작성하고 공부했는데,

복소 전파상수, 복소 반사계수, 복소 임피던스, SWR 등에 대해 많은 도움이되는 것 같다. 

https://scikit-rf.readthedocs.io/en/latest/examples/networktheory/Transmission%20Line%20Properties%20and%20Manipulations.html

 

Modeling Transmission Line Properties — scikit-rf Documentation

Introduction In this tutorial, scikit-rf is used to work with some classical transmission line situations, such as calculating impedances, reflection coefficients, standing wave ratios or voltages and currents. There is at least two way of performing these

scikit-rf.readthedocs.io

 

위 내용을 대략 이해한 다음, 'hayt의 전자기학 9th' 전송선로의 몇 가지 예를 파이썬으로 모델링해 보고 싶었다.

비슷한 사례가 있는지 구글링하다가 아래 블로그글에서 한 줄기 빛을 찾았다.

조금은 느리게 살자: 전압파의 반사 계수(Reflection Coefficient of Voltage Wave) (ghebook.blogspot.com)

 

전압파의 반사 계수(Reflection Coefficient of Voltage Wave)

물리학, 수학, 전자파, RF, 초고주파, 안테나, 통신 이론, 정보 이론

ghebook.blogspot.com

벌써 10년 더 전에 작성된 블로그글이었지만 전송선로에 대해 너무 깔끔하게 잘 정리되어 있었다!

특히 23번 식을 이용하면, 더 직관적이었고 코드로 구현이 더 쉬운 새로운 솔루션이 될 것 같았다.

매번 느끼는 것이지만 계속 고민하고 코드를 짤수록 정리와 이해가 조금씩 더 되는 것 같다.

결국 예시문제와 이를 모델링한 결과, 그리고 우여곡절 끝에 결국 완성한 코드는 아래와 같다!

 

<hayt의 전자기학 9th 예시문제> 안테나에서 TV 또는 FM수신기로 연결되는 인입선과 같이 특성 임피던스가 300Ω인 평행2선 전송선로를 생각하자. 이 회로의 선로길이는 2m, L과 C는 선로에서 전파속도 2.5M m/s를 만족하도록하는 값을 갖는다. 이 선로의 한 끝단에 입력저항이 300Ω인 수신기 두 대가 병렬로 연결된 되고, 안테나는 100MHz에서 Vs=60V와 직렬 연결된 저항 300Ω의 테브닌 등가회로이다. 전송선로에서의 전압은 어떻게 될까?

전송선로 등가회로도
Γ0=-0.33, Γs=0, L=2, γ=0+2.51501403j

import matplotlib.pyplot as plt
from numpy import *
import skrf as rf

rf.stylely()

freq = rf.Frequency(100, unit='MHz', npoints=1)

# load and line properties
#Z_L = 0  # Ohm
Z_L = 150  # Ohm
#Z_L = 300000  # Ohm
Z_0 = 300  # Ohm
L = 2  # m
VF = 2.5/3
lambd = rf.c/freq.f * VF   # 파장

# propagation constant
alpha = 0  # Lossless
#alpha = 0.02  # Loss : Np/m. Here a dummy value, just for the sake of the example
beta = freq.w/rf.c/VF
gamma = alpha + 1j*beta

z = linspace(-L, 0, num=301)

G_0 = (Z_L - Z_0)/(Z_L + Z_0)
SWR = (1 + G_0)/((1 - G_0))
G_in = G_0*exp(2*gamma*z)
Z_in = Z_0 * (Z_L + 1j*Z_0*tan(-beta*z)) / (Z_0 + 1j*Z_L*tan(-beta*z))
print('Z_in[z==-L] : ', Z_in[z==-L], abs(Z_in[z==-L]), angle(Z_in[z==-L])*180/pi)

# source properties
V_s = 60
Z_s = Z_0
#Z_s = 450
G_S = (Z_s - Z_0)/(Z_s + Z_0)
I_in = V_s/(Z_s + Z_in)
V_in = I_in * Z_in
print('V_in[z==-L] : ', V_in[z==-L], abs(V_in[z==-L]), angle(V_in[z==-L])*180/pi)
print('I_in[z==-L] : ', I_in[z==-L], abs(I_in[z==-L]), angle(I_in[z==-L])*180/pi)

V = (Z_0*V_s)/(Z_s+Z_0)*exp(-gamma*L)/(1-G_S*G_0*exp(-2*gamma*L)) \
    *(exp(-gamma*z)+G_0*exp(gamma*z))
I = V_s/(Z_s+Z_0)*exp(-gamma*L)/(1-G_S*G_0*exp(-2*gamma*L)) \
    *(exp(-gamma*z)-G_0*exp(gamma*z))
print('V[z==-L] = V_in : ', V[z==-L], abs(V[z==-L]), angle(V[z==-L])*180/pi)
print('V[z==-0] = V_L  : ', V[z==0],  abs(V[z==0]),  angle(V[z==0])*180/pi)

fig, ax = plt.subplots(2,1,sharex=True)
ax[0].plot(z, abs(V), 'r')
ax[1].plot(z, abs(I), 'b')
ax[1].set_xlabel('z [m]')
ax[0].set_ylabel('|V| (V)')
ax[1].set_ylabel('|I| (A)')
ax[0].set_title('Voltage')
ax[1].set_title('Current')
[a.axvline(0, lw=8, color='k') for a in ax]
[a.axvline(-L, lw=8, color='k') for a in ax]
ax[1].annotate('Load', xy=(0, 0.14), xytext=(-0.5, 0.14),
            arrowprops=dict(facecolor='black', shrink=0.05))
ax[1].annotate('Source', xy=(-L, 0.14), xytext=(-L+0.5, 0.14),
            arrowprops=dict(facecolor='black', shrink=0.05))

plt.show(block=False)

Z_in[z==-L] :  [464.16636236-206.57773312j] [508.05981122] [-23.99150608]
V_in[z==-L] :  [38.04906676-5.93401418j] [38.50901201] [-8.86426477]
I_in[z==-L] :  [0.07316978+0.01978005j] [0.07579622] [15.1272413]
V[z==-L] = V_in :  [38.04906676-5.93401418j] [38.50901201] [-8.86426477]
V[z==-0] = V_L  :  [6.2464922+18.99950882j] [20.] [71.80062175]

 

OK! 검증완료! 전송선로에 존재하는 전압파와 전류파 식이 잘 동작하는 것 같습니다^^;

여기에 더해서,,, 설정값들(Γ0, Γs, L, γ)을 바꾸어 시뮬레이션해 볼 수도 있다!

Γ0=-1, Γs=0., L=2, γ=0+2.51501403j (short)
Γ0=-1, Γs=0., L=2, γ=0+2.51501403j (open)
Γ0=-0.33, Γs=0.2, L=20, γ=0.02+2.51501403j

 

이상,,, 혹시나 잘못된 부분 있으면 지적해주시기 바라며,,,

이와 관련한 이론이나 물리적 의미는 추후에 좀 더 보완해야겠다. 늦어서 오늘은 여기서 굳바이!!!