• WARNING: Tube/Valve amplifiers use potentially LETHAL HIGH VOLTAGES.
    Building, troubleshooting and testing of these amplifiers should only be
    performed by someone who is thoroughly familiar with
    the safety precautions around high voltages.

Vacuum Tube SPICE Models

Actually... Yes. I collected a couple a while ago.

Code:
****************************************************
.SUBCKT GE_12HL7_125 1 2 3 4 ; A G2 G1 C;
*      Extract V1.998
* Model created: 13-Jun-2016
* NOTE: LOG(x) is base e LOG or natural logarithm.
* For some Spice versions, e.g. MicroCap, this has to be changed to LN(x).
X1 1 2 3 4 BTetrodeDE  MU= 30.35 EX=1.585 kG1=  97.9 KP= 297.3 kVB =     .0 kG2=  434.9
+Sc=.23E-01 ap=  .014 w=    18. nu= 15.50 lam= 11715.6
+ Ookg1mOokG2=.792E-02 Aokg1=.56E-05 alkg1palskg2=.792E-02 be=  .084 als=  2.84 RGI=2000
+ CCG1=0.0P  CCG2 = 0.0p CPG1 = 0.0p  CG1G2 = 0.0p CCP=0.0P  ;
.ENDS
 
****************************************************
.SUBCKT BTetrodeDE 1 2 3 4; A G2 G1 C
RE1  7 0  1MEG    ; DUMMY SO NODE 7 HAS 2 CONNECTIONS
E1 7 0 VALUE=
+{V(2,4)/KP*LOG(1+EXP(KP*(1/MU+V(3,4)/SQRT(KVB+V(2,4)*V(2,4)))))}
E2   8 0 VALUE = {Ookg1mOokG2 + Aokg1*V(1,4) - alkg1palskg2*Exp(-be*V(1,4)*SQRT(be*V(1,4)))}
E3   9 0 VALUE = {Sc/kG2*V(1,4)*(1+tanh(-ap*(V(1,4)-V(2,4)/lam+w+nu*V(3,4))))}
G1   1 4 VALUE = {0.5*(PWR(V(7),EX)+PWRS(V(7),EX))*(V(8)-V(9))}
G2   2 4 VALUE = {0.5*(PWR(V(7),EX)+PWRS(V(7),EX))/KG2 *(1+als*Exp(-be*V(1,4) * SQRT(be*V(1,4))))}
RCP  1 4  1G      ; FOR CONVERGENCE	A  - C
C1   3 4  {CCG1}   ; CATHODE-GRID 1	C  - G1
C4   2 4  {CCG2}   ; CATHODE-GRID 2	C  - G2
C5   2 3  {CG1G2}   ; GRID 1 -GRID 2	G1  - G2
C2   1 3  {CPG1}  ; GRID 1-PLATE	G1 - A
C3   1 4  {CCP}   ; CATHODE-PLATE	A  - C
R1   3 5  {RGI}   ; FOR GRID CURRENT	G1 - 5
D3   5 4  DX      ; FOR GRID CURRENT	5  - C
.MODEL DX D(IS=1N RS=1 CJO=10PF TT=1N)
.ENDS BTetrodeDE

Code:
* 12HL7-Triode model courtesy jackinnj 21 June 2016
*
.subckt 12HL7_T 1 2 3
+Params: MU=25.4 KP=431 KVB=1 EX=1.59 KG1=213
E1 7 0 Value = {(V(1,3)/KP)*LN((1+ EXP((KP/MU) + ((KP*(V(2,3)+.5))/(SQRT(KVB+V(1,3)*V(1,3)))))))}
RE1 7 0 1e12
G1 1 3 VALUE = {(((V(7))**EX)/KG1)*(1+SGN(V(7)))}
RCP 1 3 2.3e12
C1 2 3 2.3e-12
C2 1 2 2.1e-12
C3 1 3 0.7e-12
R1 2 5 2000
D3 5 3 dx
.model dx d(is=1e-09 rs=1 cjo=10e-12)
.ends
 
****************************************************
.SUBCKT EF91 1 2 3 4 ; A G2 G1 C;
* Extract V1.950
* Model created: 20-Apr-2014
* NOTE: LOG(x) is base e LOG or natural logarithm.
* For some Spice versions, e.g. MicroCap, this has to be changed to LN(x).
X1 1 2 3 4 PenthodeDE MU= 72.4 EX=1.288 kG1= 149.7 KP= 262.4 kVB = 2760.2 kG2= 641.0
+ Ookg1mOokG2=.51E-02 Aokg1=.19E-05 alkg1palskg2=.51E-02 be= .057 als= 3.04 RGI=2000
+ CCG1=7.3P CCG2 = 0.0p CPG1 = 0.01p CG1G2 = 0.0p CCP=3.4P ;
.ENDS
****************************************************
.SUBCKT EF91_triode 1 2 3; A G C;
* Extract V1.950
* Model created: 20-Apr-2014
* NOTE: LOG(x) is base e LOG or natural logarithm.
* For some Spice versions, e.g. MicroCap, this has to be changed to LN(x).
X1 1 2 3 TriodeK MU= 72.44 EX=1.288 KG1= 149.7 KP= 262.4 KVB= 2760. RGI=2000
+ CCG=0.0P CGP=0.0P CCP=0.0P ;
.ENDS
****************************************************
****************************************************
.SUBCKT PenthodeDE 1 2 3 4; A G2 G1 C
RE1 7 0 1MEG ; DUMMY SO NODE 7 HAS 2 CONNECTIONS
E1 7 0 VALUE=
+{V(2,4)/KP*LOG(1+EXP(KP*(1/MU+V(3,4)/SQRT(KVB+V(2,4)*V(2,4)))))}
E2 8 0 VALUE = {Ookg1mOokG2 + Aokg1*V(1,4) - alkg1palskg2*Exp(-be*V(1,4)*SQRT(be*V(1,4)))}
G1 1 4 VALUE = {0.5*(PWR(V(7),EX)+PWRS(V(7),EX))*V(8)}
G2 2 4 VALUE = {0.5*(PWR(V(7),EX)+PWRS(V(7),EX))/KG2 *(1+als*Exp(-be*V(1,4) * SQRT(be*V(1,4))))}
RCP 1 4 1G ; FOR CONVERGENCE A - C
C1 3 4 {CCG1} ; CATHODE-GRID 1 C - G1
C4 2 4 {CCG2} ; CATHODE-GRID 2 C - G2
C5 2 3 {CG1G2} ; Grid 1-GRID 2 G1 - G2
C2 1 3 {CPG1} ; GRID 1-PLATE G1 - A
C3 1 4 {CCP} ; CATHODE-PLATE A - C
R1 3 5 {RGI} ; FOR GRID CURRENT G1 - 5
D3 5 4 DX ; FOR GRID CURRENT 5 - C
.MODEL DX D(IS=1N RS=1 CJO=10PF TT=1N)
.ENDS PenthodeDE
****************************************************
****************************************************
.SUBCKT TriodeK 1 2 3; A G C
RE1 7 0 1G
E1 7 0 VALUE=
+{V(1,3)/KP*LOG(1+EXP(KP*(1/MU+V(2,3)/SQRT(KVB+V(1,3)*V(1,3)))))}
G1 1 3 VALUE={0.5*(PWR(V(7),EX)+PWRS(V(7),EX))/KG1}
RCP 1 3 1G ; TO AVOID FLOATING NODES IN MU-FOLLOWER
C1 2 3 {CCG} ; CATHODE-GRID
C2 2 1 {CGP} ; GRID-PLATE
C3 1 3 {CCP} ; CATHODE-PLATE
D3 5 3 DX ; FOR GRID CURRENT
R1 2 5 {RGI} ; FOR GRID CURRENT
.MODEL DX D(IS=1N RS=1 CJO=10PF TT=1N)
.ENDS TriodeK
****************************************************
*****************************************************************
*
* Tube library based on uTracer data, fitted with ExtractModel.
*
* Version: Aug-31-2014
*
* Data traced by Derk Reefman, except mentioned otherwise; contributors are:
* Ale Moglia (valves@bartola.co.uk)
* Juha Niinikoski [mailto:juha.niinikoski@sitecno.fi]
*
* Capacitances are from datasheets available at Frank's Electron tube Pages (Frank's Electron tube Pages).
* If a capacitance is set to 0.0, it indicates that it is not included in the model.
* It does not mean it is actually zero!
*
****************************************************
 
Last edited:
BTW I would also like to convey my belated thanks to Adrian for his PC97 model. My problem0 apparently was that MicroCap is based on PSpice, and it loaded the model without signalling any error but the results were gibberish. I switched to LTSpice, and now that I have overcome the learning curve my simulations are looking very convincing ... now waiting for some components to arrive so I can test in Real Life.
 
Hi guys

Here is a A2293 spice model. Perhaps something for a single ended amp?

all the best, Adrian

PS: It's still an i4, as the i5 takes a bit longer to be developed...

Code:
*A2293 LTspice model based on the generic triode model from Adrian Immler, version i4
*A version log is at the end of this file
*100h BurnIn of 5 G.E.C. tubes, sample selection and measurements done in May 2021
*Params fitted to the measured values by Adrian Immler, May 2021
*The high fit quality is presented at adrianimmler.simplesite.com
*History's best of tube decribing art (plus some new ideas) is merged to this new approach.
*@ neg. Vg, Ia accuracy is similar to Koren.
*@ small neg. Vg, the "Anlauf" current is considered.
*@ pos. Vg, Ig and Ia accuracy is on a unrivaled level.
*This offers new simulation possibilities like bias point setting with MOhm grid resistor,
*Audion radio circuits, low voltage amps, guitar distortion stages or pulsed stages.
*             i4 version (no company abbreviations needed, as G.E.C. was the only A2293 manufacturer)
*             |  anode (plate)
*             |  | grid
*             |  | | cathode
*             |  | | |
.subckt A2293.i4 A G K
+ params:
*Parameters for the space charge current @ Vg <= 0
+ mu   = 4.8   ;Determines the voltage gain @ constant Ia
+ rad  = 170   ;Differential anode resistance, set @ Iad and Vg=0V
+ Vct  = -0.2  ;Offsets the Ia-traces on the Va axis. Electrode material's contact potential
+ kp   = 25    ;Mimics the island effect
+ xs   = 1.5   ;Determines the curve of the Ia traces. Typically between 1.2 and 1.8
*
*Parameters for assigning the space charge current to Ia and Ig @ Vg > 0
+ kB   = 0.5   ;Describes how fast Ia drops to zero when Va approaches zero.
+ radl = 56    ;Differential resistance for the Ia emission limit @ very small Va and Vg > 0
+ tsh  = 20    ;Ia transmission sharpness from 1th to 2nd Ia area. Keep between 3 and 20. Start with 20.
+ xl   = 1.3   ;Exponent for the emission limit
*
*Parameters of the grid-cathode vacuum diode
+ kvdg  = 15   ;virtual vacuumdiode. Causes an Ia reduction @ Ig > 0.
+ kg = 2k      ;Inverse scaling factor for the Va independent part of Ig (caution - interacts with xg!)
+ Vctg = -0.25 ;Offsets the log Ig-traces on the Vg axis. Electrode material's contact potential
+ xg   = 1.9   ;Determines the curve of the Ig slope versus (positive) Vg and Va >> 0
+ VT   = 0.124 ;Log(Ig) slope @ Vg<0. VT=k/q*Tk (cathodes absolute temp, typically 1150K)
+ kVT=32m      ;Va dependant koeff. of VT
+ Vft2 = -1 gft2 = 17;finetunes the gridcurrent @ low Va and Vg near zero
*
*Parameters for the caps
+ cag  = 8p5   ;No values found in original datasheet. 2.5x the values from 12AE7 (section 2) were used.
+ cak  = 2p1   ;No values found in original datasheet. 2.5x the values from 12AE7 (section 2) were used.
+ cgk  = 10p5  ;No values found in original datasheet. 2.5x the values from 12AE7 (section 2) were used.
*
*special purpose parameters
+ os = 1       ;Overall scaling factor, if a user wishes to simulate manufacturing tolerances
*
*Calculated parameters
+ Iad = {100/rad} ;Ia where the anode a.c. resistance is set according to rad.
+ ks = {pow(mu/(rad*xs*Iad**(1-1/xs)),-xs)} ;Reduces the unwished xs influence to the Ia slope
+ ksnom = {pow(mu/(rad*1.5*Iad**(1-1/1.5)),-1.5)} ;Sub-equation for calculating Vg0
+ Vg0 = {Vct + (Iad*ks)**(1/xs) - (Iad*ksnom)**(2/3)} ;Reduces the xs influence to Vct.
+ kl = {pow(1/(radl*xl*Ild**(1-1/xl)),-xl)} ;Reduces the xl influence to the Ia slope @ small Va
+ Ild = {sqrt(radl)*1m} ;Current where the Il a.c. resistance is set according to radl.
*
*Space charge current model
Bggi GGi 0 V=v(Gi,K)+Vg0 ;Effective internal grid voltage.
Bahc Ahc 0 V=uramp(v(A,K)) ;Anode voltage, hard cut to zero @ neg. value
Bst   St 0 V=uramp(max(v(GGi)+v(A,K)/(mu), v(A,K)/kp*ln(1+exp(kp*(1/mu+v(GGi)/(1+v(Ahc)))))));Steering volt.
Bs    Ai K I=os/ks*pow(v(St),xs) ;Langmuir-Childs law for the space charge current Is
*
*Anode current limit @ small Va
.func smin(z,y,k) {pow(pow(z+1f, -k)+pow(y+1f, -k), -1/k)} ;Min-function with smooth trans.
Ra  A Ai 1
Bgl Gi A I=min(i(Ra)-smin(1/kl*pow(v(Ahc),xl),i(Ra),tsh),i(Bgvd)*exp(4*v(G,K))) ;Ia emission limit
*
*Grid model
Bvdg G Gi I=1/kvdg*pwrs(v(G,Gi),1.5) ;Reduces the internal effective grid voltage when Ig rises
Rgip G Gi 1G ;avoids some warnings
Cvdg G Gi 0p1;this small cap improves convergence
.func fVT() {VT*exp(-kVT*sqrt(v(A,K)))}
.func Ivd(Vvd, kvd, xvd, VTvd)  {if(Vvd < 3, 1/kvd*pow(VTvd*xvd*ln(1+exp(Vvd/VTvd/xvd)),xvd), 1/kvd*pow(Vvd, xvd))} ;Vacuum diode function
Bgvd Gi K I=Ivd(v(G,K) + Vctg, kg/os, xg, fVT())
.func ft2() {gft2*(1-tanh(3*(v(G,K)+Vft2)))} ;Finetuning-func. improves ig-fit @ Vg near -0.5V, low Va.
Bgr Gi Ai I=ivd(v(GGi),ks/os, xs, 0.8*VT)/(1+ft2()+kB*v(Ahc));Is reflection to grid when Va approaches zero
Bs0 Ai K  I=ivd(v(GGi),ks/os, xs, 0.8*VT)/(1+ft2()) - os/ks*pow(v(GGi),xs) ;Compensates neg Ia @ small Va and Vg near zero
*
*Caps
C1 A G {cag}
C2 A K {cak}
C3 G K {cgk}
.ends
*
*Version log
*i1 :Initial version
*i2 :Pin order changed to the more common order A G K (Thanks to Markus Gyger for his tip)
*i3 :bugfix of the Ivd-function: now also usable for larger Vvd
*i4: Rgi replaced by a virtual vacuum diode (better convergence). ft1 deleted (no longer needed)
;2 new prarams for Ig finetuning @ Va and Vg near zero. New overall skaling factor os for aging etc.
 

Attachments

  • fit_A2293_logIg.png
    fit_A2293_logIg.png
    839.1 KB · Views: 218
  • fit_A2293_Ia.jpg
    fit_A2293_Ia.jpg
    183.4 KB · Views: 246
Disabled Account
Joined 2013
6ac7 (GE) model, triode plot:


Code:
* [url=http://www.dmitrynizh.com/tubeparams_image.htm]Model Paint Tools: Trace Tube Parameters over Plate Curves, Interactively[/url]
* Plate Curves image file: 6ac7.png
* Data source link: <plate curves URL>
*----------------------------------------------------------------------------------
.SUBCKT 6AC7 P G2 G K ; LTSpice tetrode.asy pinout
* .SUBCKT 6AC7 P G K G2 ; Koren Pentode Pspice pinout
+ PARAMS: MU=49.9 KG1=467.5 KP=209.15 KVB=12.3 VCT=0.174 EX=1.434 KG2=813.48 KNEE=373650.69 KVC=2.239
+ KLAM=2.384E-9 KLAMG=8.994E-7  KD=2.006E-10 KC=47.1 KR1=0.22 KR2=1.923E-6 KVBG=0.0069 KB1=4.665 KB2=2328.17 KB3=2.02 KB4=0.23 KVBGI=5.6E-4 KNK=0.1306 KNG=0.004658 KNPL=0.37 KNSL=133.12 KNPR=71.68 KNSR=80.64
+ CCG=11P CGP=0.015P CCP=5P VGOFF=-0.6 IGA=0.001 IGB=0.3 IGC=8 IGEX=2
* Vp_MAX=500 Ip_MAX=40 Vg_step=1 Vg_start=0 Vg_count=9
* X_MIN=73 Y_MIN=54 X_SIZE=730 Y_SIZE=586 FSZ_X=1296 FSZ_Y=736 XYGrid=true
* Rp=1400 Vg_ac=20 P_max=3.02 Vg_qui=-4 Vp_qui=300 
* showLoadLine=n showIp=y isDHP=n isPP=n isAsymPP=n isUL=n showDissipLimit=y 
* showIg1=y isInputSnapped=y addLocalNFB=n
* XYProjections=n harmonicPlot=y dissipPlot=n 
* UL=0.43 EG2=150 gridLevel2=y addKink=y isTanhKnee=n advSigmoid=y 
*----------------------------------------------------------------------------------
RE1  7 0  1G    ; DUMMY SO NODE 7 HAS 2 CONNECTIONS
E1   7 0  VALUE=  ; E1 BREAKS UP LONG EQUATION FOR G1.
+{V(G2,K)/KP*LOG(1+EXP((1/MU+(VCT+V(G,K))/SQRT(KVB+V(G2,K)*V(G2,K)))*KP))}
RE2  6 0  1G    ; DUMMY SO NODE 6 HAS 2 CONNECTIONS
E2  6 0  VALUE={(PWR(V(7),EX)+PWRS(V(7),EX))} ; Kg1 times KIT current
E4   8 0  VALUE={V(P,K)/KNEE/(KVBGI+V(6)*KVBG)}
E5  81 0  VALUE={PWR(V(8),KB1)}
E6  82 0  VALUE={PWR(V(8),KB2)}
E7  83 0  VALUE={PWR(V(8),KB3)}
E8   9 0  VALUE={PWR(1-EXP(-V(81)*(KC+KR1*V(82))/(KD+KR2*V(83))),KB4)*1.5708}
RE4  8 0  1
RE5 81 0  1
RE6 82 0  1
RE7 83 0  1
RE8  9 0  1
RE21 21 0 1
E21  21 0 VALUE={V(6)/KG1*V(9)} ; Ip with knee but no slope and no kink
RE22 22 0 1 ; E22: kink curr deviation for plate
E22  22 0 VALUE={V(21)*LIMIT(KNK-V(G,K)*KNG,0,0.3)*(-ATAN((V(P,K)-KNPL)/KNSL)+ATAN((V(P,K)-KNPR)/KNSR))} 
G1   P K  VALUE={V(21)*(1+KLAMG*V(P,K))+KLAM*V(P,K) + V(22)}
G2   G2 K  VALUE={V(6)/KG2*(KVC-V(9))/(1+KLAMG*V(P,K)) - V(22)}
RCP  P K  1G     ; FOR CONVERGENCE
C1   K G  {CCG}  ; CATHODE-GRID 1
C2   G P  {CGP}  ; GRID 1-PLATE
C3   K P  {CCP}  ; CATHODE-PLATE
RE23 G 0 1G 
GG G K VALUE={(IGA+IGB/(IGC+V(P,K)))*(MU/KG1)*
+(PWR(V(G,K)-VGOFF,IGEX)+PWRS(V(G,K)-VGOFF,IGEX))}
.ENDS
*$
 

Attachments

  • 6ac7 triode plot.png
    6ac7 triode plot.png
    94.2 KB · Views: 229
  • 6ac7 paint3.png
    6ac7 paint3.png
    718 KB · Views: 228
  • 6ac7 plot2.asc
    4.2 KB · Views: 79
Tesla data-sheet of 6F36 tube mentions that it is equivalent to 6AH6 and 6Ж5П and does show triode curves: https://frank.pocnet.net/sheets/183/6/6F36.pdf

6Ж5П = 6AH6 = 6F36 = 6J5_China

However, the triode data does not correspond to the curves ... to have a Rk of 160 ohms at 150v 12.5mA, Vg should be -2v. Furthermore, 6AH6 should be identical in values ​​to 6AC7, which in turn should be identical to Russian 6Ж4. Also in the 6Ж4 graph I posted below the Vg -2v curve meets more or less 150v at 10mA.
 
Last edited:
Disabled Account
Joined 2013
The curve from GE is used for painting is Pentode or Tetrode, the max plate (500V) voltage can not be the same in triode mode because of max Vg2 voltage (250V) can be applied. You can re-plot the triode curve using the dissipation and max Vg2 allowed as guideline and as basis for your design.


p/s I should add the screen current to plate current for the triode plot, please do so yourself
 

Attachments

  • 6ac7 triode plot2.png
    6ac7 triode plot2.png
    88.1 KB · Views: 165
Last edited:
Wouldn't that be Russian 6zh5pi (6J5P)?

I think 6J4P is the equivalent of 6AU6.
6Ж4 and 6Ж4П are two different tubes :)
The first is equivalent to 6AC7, the second - to 6AU6

UPD: 6Ж5П was indeed designed to be the glass envelope replacement for the 6Ж4. That is, to the later production (post-1959) 6Ж4, which was internally different from the early 6Ж4 and 6AC7.
 

Attachments

  • 480.jpg
    480.jpg
    168 KB · Views: 78
Last edited:
in any case, I will soon have several pairs of 6AC7 NOS and I will be able to test them directly on the circuit, and perhaps in this way we will be able to solve the mystery of its triode curves. Rp should be 3k6, gm 11000 Microhms and U = 40 approx. With this data it is quite similar to the renowned E81L. Anyway, on the site: Universal loadline calculator for vacuum tubes - Vacuum Tube Amplifiers - DIY, about 6AH6. the curves look similar to the GE datasheets.
 
The curve from GE is used for painting is Pentode or Tetrode, the max plate (500V) voltage can not be the same in triode mode because of max Vg2 voltage (250V) can be applied. You can re-plot the triode curve using the dissipation and max Vg2 allowed as guideline and as basis for your design.


p/s I should add the screen current to plate current for the triode plot, please do so yourself

Thank you!

6AH6 GE datasheets have a recommended triode configuration, even if there is nothing else, not even the maximum values.
 
Last edited: