GIC回路

 投稿者:SECOND  投稿日:2013年 8月26日(月)02時25分24秒
  ! 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
 

戻る