1 trans.bs <- 2 function (p, ei, Ep0, Eg0, Rp, Rg2, func, Eg20) 3 { 4 # ブートストラップ負荷の電圧増幅の伝達特性を求める 5 # @param p 真空管のパラメータ 6 # @param ei 入力電圧 7 # @param Ep0 静止時プレート電圧 8 # @param Eg0 グリッド電圧(DC) 9 # @param Rp プレート負荷抵抗 10 # @param Rg2 次段の負荷抵抗 11 # @param func 次段の入力からブートストラップ電圧を求める関数 12 # @param Eg20 スクリーングリッド電圧 13 # @return 14 # $ip プレート電流 15 # $ep プレート電圧 16 # $ei2 次段の入力電圧 17 # $eb ブートストラップ電圧 18 19 Rk <- 0 20 if (missing(Eg20)) { 21 triode <- TRUE 22 op <- op.vol(p, Ep0, Eg0, Rp, Rk) # 動作点 23 f <- function(ep) { 24 # プレート電圧 25 ei2 <- ep - op$ep # 次段の入力電圧 26 eb <- func(ei2) # ブートストラップの結果を得る 27 ip2 <- (Ep0 + eb - ep) / Rp + (op$ep - ep) / Rg2 # 負荷を流れる電流 28 ip1 <- Ip(p, ep, egi) # プレート電圧に対するプレート電流 29 ip1 - ip2 30 } 31 } else { 32 triode <- FALSE 33 op <- op.vol(p, Ep0, Eg0, Rp, Rk, Eg20) # 動作点 34 f <- function(ep) { 35 # プレート電圧 36 ei2 <- ep - op$ep # 次段の入力電圧 37 eb <- func(ei2) # ブートストラップの結果を得る 38 ip2 <- (Ep0 + eb - ep) / Rp + (op$ep - ep) / Rg2 # 負荷を流れる電流 39 ip1 <- Ipp(p, ep, egi, Eg20) # プレート電圧に対するプレート電流 40 ip1 - ip2 41 } 42 } 43 44 Eg <- ei + Eg0 # 実際のグリッド電圧(対グラウンド) 45 ep <- rep(0, length(Eg)) 46 for (i in seq(along=Eg)) { 47 egi <- Eg[i] 48 ep[i] <- uniroot(f, c(0, Ep0*2))$root 49 } 50 ei2 <- ep - op$ep 51 eb <- func(ei2) # ブートストラップの結果を得る 52 ip <- (Ep0 + eb - ep) / Rp + (op$ep - ep) / Rg2 # 負荷を流れる電流 53 list(ip=ip, ep=ep, ei2=ei2, eb=eb) 54 }p には,真空管のパラメータを指定します. ei には,入力電圧(信号成分)を与えます. Ep0 には,静止時のプレート電圧を指定します. Eg0 には,静止時のグリッド電圧を指定します. Rp には,負荷となるインピーダンスを指定します. Rg2 には,次段のグリッド抵抗を指定します. func には,次段の入力からブートストラップ電圧を計算する関数を指定します. この関数には,プレートに生じた信号成分が第1引数として渡されます. 五極管の場合には,Eg20 でスクリーングリッド電圧を指定します.
CSPPの場合は,func として trans.se や trans.pp を利用して, Rp の電源側に生じる電圧,すなわち $ek (trans.se の場合)や, $ek1 (trans.pp の場合)を返します.
ここでは例として,5.3.2節の 12AU7-6L6のドライブ段のロードラインを描いてみます.
Eb <- 0:350 Ec <- seq(0, -24, by=-2) ip <- touter(Ip, t12AU7, Eb, Ec) g.plate(ip, 350, 450/35e-3, 15e-3) # 動作点を求める Eg2 <- -9.94163 Ep2 <- 210.836 + Eg2 RL2 <- 13e3 # プレート負荷抵抗 Ip20 <- Ip(t12AU7, Ep2, Eg2) points(Ep2, Ip20) # 出力段のパラメータ Ep1 <- 250 Eg1 <- -20 Rg1 <- 100e3 # 出力段のグリッド抵抗 RL1 <- 5e3 # 出力段の(P-K間)負荷抵抗 # 信号を作成して出力波形を求める ei <- seq(-8.16, 8.16, len=21) z <- trans.bs(t12AU7, ei, Ep1 + Eg2, Eg2, RL2, Rg1, function(ei) trans.se(t6L6T, ei, Ep1, Eg1, RL1, rUL=-1, rKF=1, Rbs=RL2)$ek) lines(z$ep, z$ip, col="cyan")trans.se に与える rUL, rKF の値に注意してください. rUL および rKF は,P-B間を1とした比で与えます. rKF はGND-K間の値ですので1になります. rUL はSG-Bの値ですから,CSPPの場合はカソード巻線と同じ側(通常のSGタップとは反対側にあるので,-1 を指定します.
ayumi