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