|
! GIC回路
!
!抵抗、コンデンサーだけでも、増幅器を使用して、コイルのような誘導性の
!インピーダンスや、そのベクトル角が、180°になるような負性抵抗も作成できる。
!
! ※電圧増幅器の出力抵抗 Zo は、行列 5x5 で解く場合に使用する。
!
! 電圧増幅率Gの、出力端子を、節点(V2,V4) として選んでいるため、
! 増幅器内部の出力抵抗 Zoを、素子として必要とする。0Ωは不可。
! (0Ωでは、その節点の自己アドミタンス、相互アドミタンス共に ∞)
! 行列 5x5 では、Zo<>0Ω の影響を、簡素な行列要素で、反映できる。
!
! 行列 3x3 の節点は、増幅器出力を避けているため、Zo=0Ωでもよい。
! 例題の行列 3x3 は、Zo=0Ω での行列要素になっている。
! 行列 3x3 で、Zo<>0Ω にすると、3素子の合成が、行列要素になって煩雑。
OPTION ARITHMETIC COMPLEX
DIM A(5,5)
!-------------------------------------------------------------------------------
! Generalized Impedance Converter 行列 3x3
!
! ┌──┐
! (0ohm)│ +├──────────┐
! ┌Zo┤G │ │
! 1A │ │ -├┐ │
! → │ └──┘│ │
! Zin ──┬──Z1─┴──Z2─┬┴─Z3──┬─Z4──┴─Z5──┐
! (Zin==V1)│ │┌──┐ │ │
! │ └┤- │ │ ▽
! │ │ G├Zo┘
! └──────────┤+ │(0Ω)
! └──┘
! ↑V1 ↑V2 ↑V3
!
! | 1/Z1 G/Z1 -G/Z1 ||V1| | 1|
! |-G/Z3 1/Z2+1/Z3+G/Z2+G/Z3 -G/Z2 ||V2|=| 0|
! |-G/Z4 G/Z4 1/Z4+1/Z5 ||V3| | 0|
!-----
SUB mat3x3(Z1,Z2,Z3,Z4,Z5)
LET A(1,1)= 1/Z1
LET A(1,2)= G/Z1
LET A(1,3)=-G/Z1
!
LET A(2,1)=-G/Z3
LET A(2,2)= 1/Z2+1/Z3+G/Z2+G/Z3
LET A(2,3)=-G/Z2
!
LET A(3,1)=-G/Z4
LET A(3,2)= G/Z4
LET A(3,3)= 1/Z4+1/Z5
END SUB
!-------------------------------------------------------------------------------
! Generalized Impedance Converter 行列 5x5
!
! ┌──┐
! │ +├──────────┐
! ┌Zo┤G │ │
! 1A │ │ -├┐ │
! → │ └──┘│ │
! Zin ──┬──Z1─┴──Z2─┬┴─Z3──┬─Z4──┴─Z5──┐
! (Zin==V1)│ │┌──┐ │ │
! │ └┤- │ │ ▽
! │ │ G├Zo┘
! └──────────┤+ │
! └──┘
! ↑V1 ↑V2 ↑V3 ↑V4 ↑V5
!
! | 1/Z1 -1/Z1 0 0 0 ||V1| | 1|
! |-1/Z1 1/Z1+1/Z2+1/Zo G/Zo-1/Z2 0 -G/Zo ||V2|=| 0|
! | 0 -1/Z2 1/Z2+1/Z3 -1/Z3 0 ||V3| | 0|
! |-G/Zo 0 G/Zo-1/Z3 1/Z3+1/Z4+1/Zo -1/Z4 ||V4| | 0|
! | 0 0 0 -1/Z4 1/Z4+1/Z5 ||V5| | 0|
!-----
SUB mat5x5(Z1,Z2,Z3,Z4,Z5,Zo)
LET A(1,1)= 1/Z1
LET A(1,2)=-1/Z1
LET A(1,3)= 0
LET A(1,4)= 0
LET A(1,5)= 0
!
LET A(2,1)=-1/Z1
LET A(2,2)= 1/Z1+1/Z2+1/Zo
LET A(2,3)= G/Zo-1/Z2
LET A(2,4)= 0
LET A(2,5)=-G/Zo
!
LET A(3,1)= 0
LET A(3,2)=-1/Z2
LET A(3,3)= 1/Z2+1/Z3
LET A(3,4)=-1/Z3
LET A(3,5)= 0
!
LET A(4,1)=-G/Zo
LET A(4,2)= 0
LET A(4,3)= G/Zo-1/Z3
LET A(4,4)= 1/Z3+1/Z4+1/Zo
LET A(4,5)=-1/Z4
!
LET A(5,1)= 0
LET A(5,2)= 0
LET A(5,3)= 0
LET A(5,4)=-1/Z4
LET A(5,5)= 1/Z4+1/Z5
END SUB
!-------------------------------------------------------------------------------
OPTION ANGLE DEGREES
SET TEXT background "opaque"
SET COLOR MIX(15) .4,.4,.4
DEF sc$(i)=mid$("0.01 0.1 1 10 100 1K 10K100K 1M 10M100M", 4*(i+2)+1,4)
!+---------------------------------------------------------+
! グラフの上下限 (0.01~100M 間、10 の整数乗で、自由に変更) |
!+---------------------------------------------------------+
LET fL=0.01 !下限 周波数(Hz)
LET fH=10E6 !上限 周波数(Hz)
LET zL=0.01 !下限 インピーダンス(Ω)
LET zH=100E6 !上限 インピーダンス(Ω)
!
LET stp=10^(1/12) !10^(1/ 周波数10倍毎ステップ数=12 )
DATA 100,1000,1000000, 0 !テストする増幅率G
!※ Zo=0 は 行列 3x3 、Zo<>0 は 行列 5x5 が使用される。
!+---------------------------------------------------------+
! Z1~Z5 <1 は、コンデンサー (F) |
!1≦ Z1~Z5 は、抵抗器 (ohm) として計算 |
! |
! ( Z1 ,Z2 ,Z3 ,Z4 ,Z5 , Zo, m$ ) |
!+---------------------------------------------------------+
CALL GIC_Zin( 1e3 ,1e-6,1e3 ,1e3 ,1e3 , 0, "行列 3x3 Z2 ←1/jωC Zin=誘導性(L)")
pause
CALL GIC_Zin( 1e3 ,1e-6,1e3 ,1e3 ,1e3 , 10, "行列 5x5 Z2 ←1/jωC Zin=誘導性(L)")
pause
CALL GIC_Zin( 1e3 ,1e3 ,1e-6,1e3 ,1e3 , 0, "行列 3x3 Z3 ←1/jωC Zin=容量性(C)")
pause
CALL GIC_Zin( 1e3 ,1e3 ,1e-6,1e3 ,1e3 , 10, "行列 5x5 Z3 ←1/jωC Zin=容量性(C)")
pause
CALL GIC_Zin( 1e3 ,1e-6,1e3 ,1e-6,1e3 , 0, "行列 3x3 Z2,Z4 ←1/jωC Zin=負性(R)")
pause
CALL GIC_Zin( 1e3 ,1e-6,1e3 ,1e-6,1e3 , 10, "行列 5x5 Z2,Z4 ←1/jωC Zin=負性(R)")
SUB GIC_Zin( u1,u2,u3,u4,u5, Zo,m$)
CLEAR
CALL SCALE
LET w$="Zo="& STR$(Zo)& "Ω "& m$
PLOT TEXT ,AT logfL+1.1, logzL-.9*by :w$ !最下端
RESTORE
IF Zo=0 THEN MAT A=ZER(3,3) ELSE MAT A=ZER(5,5)
DO
READ G
IF G=0 THEN EXIT DO
PRINT w$
PRINT "G=";STR$(G)
PRINT " 周波数 V1/1 θ 設計式による値(Zo=0Ω)"
!----
LET f=fL
DO
LET ω=2*PI*f
IF u1< 1 THEN LET Z1=1/COMPLEX(0,ω*u1) ELSE LET Z1=u1
IF u2< 1 THEN LET Z2=1/COMPLEX(0,ω*u2) ELSE LET Z2=u2
IF u3< 1 THEN LET Z3=1/COMPLEX(0,ω*u3) ELSE LET Z3=u3
IF u4< 1 THEN LET Z4=1/COMPLEX(0,ω*u4) ELSE LET Z4=u4
IF u5< 1 THEN LET Z5=1/COMPLEX(0,ω*u5) ELSE LET Z5=u5
IF Zo=0 THEN CALL mat3x3(Z1,Z2,Z3,Z4,Z5) ELSE CALL mat5x5(Z1,Z2,Z3,Z4,Z5,Zo)
MAT A=INV(A)
LET Zv=ABS(A(1,1)) !A(1,1)= △11/△= V1/(1A) なので、A(1,1)==Zin
LET Za=arg(A(1,1))
!
!---------------- 比較の為、設計式による計算値 (電圧増幅器の出力抵抗 Zo=0)
!
!LET Zin=Z1*Z3*Z5/(Z2*Z4) ← 電圧増幅率 G= ∞ の場合
!
! G が小さい場合
! 1/Z2*1/Z4 + (1/Z2+1/Z3)*(1/Z4+1/Z5)*(1+G)/G^2
!Zin= Z1 * ───────────────────────
! 1/Z3*1/Z5 + (1/Z2+1/Z3)*(1/Z4+1/Z5)*(1+G)/G^2
!
LET w=(1/Z2+1/Z3)*(1/Z4+1/Z5)*(1+G)/G^2
LET Zin=Z1*(1/Z2*1/Z4 +w)/(1/Z3*1/Z5 +w)
!
LET Zv00=ABS(Zin)
LET Za00=arg(Zin)
!----------------
!
! リスト
PRINT USING "###,###,###.#Hz #,###,###,###Ω ####.#度 #,###,###,###Ω ####.#度": f, Zv, Za, Zv00, Za00
! グラフ
IF fL< f THEN
SET LINE COLOR "black"
PLOT LINES: LOG10(f_),LOG10(Zv_); LOG10(f),LOG10(Zv) !Z[Ω]
SET LINE COLOR "red"
PLOT LINES: LOG10(f_),Za_/90+zct; LOG10(f),Za/90+zct !位相[度]
END IF
LET f_=f
LET Zv_=Zv
LET Za_=Za
LET f=f*stp
LOOP UNTIL fH< f
PRINT
LOOP
END SUB
SUB SCALE
LET logfL=LOG10(fL)
LET logfH=LOG10(fH)
LET logzL=LOG10(zL)
LET logzH=LOG10(zH)
LET zct=INT((logzH+logzL)/2)
!
ASK bitmap SIZE i,j
LET bx=(logfH-logfL)*40/(i-80) !左右 40pixel の border( 目盛りの余白)
LET by=(logzH-logzL)*24/(j-48) !上下 24pixel の border( 目盛りの余白)
SET WINDOW logfL-bx, logfH+bx, logzL-by, logzH+by
DRAW grid0
SET TEXT COLOR "red"
FOR i=-2 TO 2
PLOT TEXT ,AT logfH+.1*bx, zct+i-by/3, USING "+###°" :i*90 !y軸 右
NEXT i
SET TEXT COLOR "black"
FOR i=logfL TO logfH
PLOT TEXT ,AT i-bx/2 , logzH+by/3 :sc$(i)& "Hz" !x軸 上
NEXT i
FOR i=logzL TO logzH
PLOT TEXT ,AT logfL-bx, i-by/3 :sc$(i)& "Ω" !y軸 左
NEXT i
END SUB
END
|
|