· 

Pythonで回路計算(2)

レゾネータの等価回路を使って、もうちょっといろいろ試してみます。題材は台湾のTAI-SAWの315MHz SAWレゾネータで、TC0437Aという部品です。これを選んだ理由は、、、まぁなんとなくです。

データシートを見るとSAWレゾネータの端子を2ポートとして測定しているようです。SAWレゾネータは実は1ポートデバイス(GND+1port)なんですが、なぜか2ポートで測定することが多いです。なんででしょう、、、(?)

では、やってみよー

データシートによると、

ということらしいので、

import skrf as rf
import matplotlib.pyplot as plt

freq = rf.Frequency(start=314.3, stop=315.7, unit='MHz', npoints=1001)
tl_media = rf.DefinedGammaZ0(freq, z0=50)
C1 = tl_media.capacitor(2.53e-15, name='C1')
L1 = tl_media.inductor(101.09e-6, name='L1')
R1 = tl_media.resistor(16.73, name='R1')
C0 = tl_media.capacitor(4.25e-12, name='C0')
gnd = rf.Circuit.Ground(freq, name='gnd')
port1 = rf.Circuit.Port(freq, name='port1', z0=50)
port2 = rf.Circuit.Port(freq, name='port2', z0=50)

cnx = [
    [(port1, 0), (L1, 0), (C0, 0)],
    [(L1, 1), (C1, 0)],
    [(C1, 1), (R1, 0)],
    [(port2, 0), (R1, 1), (C0, 1)],
    [(gnd, 0)]
]
cir = rf.Circuit(cnx)
ntw = cir.network

fig=plt.figure()
fig.add_subplot(2,2,1)
ntw.plot_s_smith(m=0, n=0, lw=2)
fig.add_subplot(2,2,2)
ntw.plot_s_db(m=1, n=0, lw=2)
fig.add_subplot(2,2,3)
ntw.plot_s_db(m=0, n=1, lw=2)
fig.add_subplot(2,2,4)
ntw.plot_s_smith(m=1, n=1, lw=2)
fig.tight_layout()
plt.show()

で、

できたけど、データシートの実測波形と思われるものとは周波数がずれてますね、、、そうなんです。わかります。TAI-SAWさんの気持ちが。、、、これ以上は触れない。

scikit_rfの回路網記述はspiceのネットリスト記述と方針が違っています。spiceは部品ごとに接続するノード番号を記述する感じですが、こちらはノードに対してどの部品のどの端子がつながっているかを記述していく感じです。

こう考えて、で、

cnx = [
    [(port1, 0), (L1, 0), (C0, 0)], #ノード1にport1とL1のpin0とC0のpin0がつながっている
    [(L1, 1), (C1, 0)],             #ノード2にL1のpin1とC1のpin0がつながっている
    [(C1, 1), (R1, 0)],             #ノード3にC1のpin1とR1のpin0がつながっている
    [(port2, 0), (R1, 1), (C0, 1)], #ノード4にport2とR1のpin1とC0のpin1がつながっている
    [(gnd, 0)]                      #ノード5にgndがつながっている
]

こうなります。まぁわかりますよね。初老のおじさんなので、複雑な回路では回路図をプリントアウトして鉛筆で番号ふって、間違えないようにしたいと思います。