• 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

This is the best 12AX7 model I have, made by Wayne Clay using the Adrei Frolov curve captor :



I generate the curves with my SiMetrix simulator and fit them on the GE graph :

An externally hosted image should be here but it was not working when we last tested it.


It almost fit like a glove on a hand, specially in the most useful area, the bottom left corner ...

I always do that when I use a new model for my simulations. ;)
Thanks Alain,

Could you or anyone convert this to PSpice syntax please? For the life of me I can't figure it out all right now. I know the "Bp" should be changed to "Gp P K, VALUE={......}", but not sure what to do with URAMP. can anyone help?

Thanks,
.99

Code:
.SUBCKT 12AX7A P G K
* Made by Wayne Clay using the Adrei Frolov curve captor from a unknown datasheet
* Spice 3F4 model - Rydel 5 parameters - mean fit error 0.0364781mA
Bp  P K  I=((0.001162961073m)+(0.0001179305949m)
+*V(G,K))*uramp((89.27317344)*V(G,K)+V(P,K)+(50.06656412))^1.5
+*V(P,K)/(V(P,K)+(1.191219264))
Cgk G K 1.6p
Cgp G P 1.6p
Cpk P K 0.33p
RCP  P   K 1G
.ENDS
 
Last edited:
Got it:

Code:
.SUBCKT 12AX7A P G K
* Made by Wayne Clay using the Adrei Frolov curve captor from a unknown datasheet
* Spice 3F4 model - Rydel 5 parameters - mean fit error 0.0364781mA
Gp P K VALUE={((0.001162961073m)+(0.0001179305949m)*V(G,K))
+*MAX(0,(89.27317344)*V(G,K)+V(P,K)+(50.06656412))^1.5*V(P,K)/(V(P,K)+(1.191219264))}
Cgk G K 1.6p
Cgp G P 1.6p
Cpk P K 0.33p
RCP P K 1G
.ENDS
The function "uramp" is the integral of the unit step: for an input x, the value is zero if x is less than zero, or if x is greater than zero the value is x.

uramp(x) Output = 0 for x < 0, output = x for x >= 0

Possible PSpice substitutions:

LIMIT(x,min,max)
min if x < min
max if x > max
else x

IF(t,x,y)
x if t is true
y otherwise

MAX(x,y)
maximum of x
and y

PS. Thanks Jazbo and Alain for your previous suggestions to try LIMIT and MAX.
 
Last edited:
Thanks Alain,

Could you or anyone convert this to PSpice syntax please? For the life of me I can't figure it out all right now. I know the "Bp" should be changed to "Gp P K, VALUE={......}", but not sure what to do with URAMP. can anyone help?

Thanks,
.99
I traced it from the Mazda Belvu data sheet. Here's the PSpice version/flavour:
Code:
* --------------------------------------------------------------
* 12AX7A-mz PSpice model
* Rydel model (5 parameters): mean fit error 0.0364781mA
* Traced by Wayne Clay on 10/01/2006 using Curve Captor v0.9.1
* from Mazda Belvu data sheet
* --------------------------------------------------------------
.subckt 12AX7A-mz  P G K
    Gp  P K  VALUE=
+ {((0.001162961073m)+(0.0001179305949m)*V(G,K))*limit((89.27317344)*V(G,K)+
+ V(P,K)+(50.06656412),0.0,1.0e16)**1.5 * V(P,K)/(V(P,K)+(1.191219264))}
  Cgk G K 2.3p ; 0.7p added (1.6p)
  Cgp G P 2.3p ; 0.7p added (1.6p)
  Cpk P K 0.53p ; 0.2p added (0.33p)
  Rpk P K 1G ; to avoid floating nodes
  d3  G K dx1
.model dx1 d(is=1n rs=2k cjo=1pf N=1.5 tt=1n)
.ends 12AX7A-mz
The diode (d3) is mainly there to aid in convergence, not to model grid current. May commented out (*) if desired. ;)
 
Can anyone please post a utracer plot or model of Tungsol-Reissue 6SN7?. For some reasin the use of that particuar tube reduced the distortion in my 6SL7-6SN7-300b amplifier by 60-70%. ANY other 6SN7 gives much higher distortion. Something magical is going in between the tube curve lines, and I wish Ig coule see tha actula tube curves. You can see the effect of my tube rolling in the figure attached.
318742d1430686768-psvane-we-300b-kontra-tj-full-music-300b-n-capturex.jpg

CORRECTION: THE CURVES/MODEL I NEED IS FOR THE 6SN7 REISSUE TUNGSOL, not 6SL7. I could not find a way to correct/edit my initial post. sorry
 
Here's a model for 6111 by Andrei Frolov traced using Andrei's Curve Captor.
http://www.diyaudio.com/forums/tube...be-modeling-software-beta-testers-wanted.html
Code:
************************************************************************
* tubes.lib  -  Andrei's tube models library (for LTSpice)
* 
* Copyright (C) 2001-2005 Andrei Frolov <frolov@cita.utoronto.ca>
* Distributed under the terms of GNU Public License.
* 
* Based on the models and ideas of many people; see in particular
*   - Norman Koren pages <http://www.normankoren.com/Audio/>
*   - Duncan Munro pages <http://www.duncanamps.com>
*   - Spice models survey by Stefano Perugini
*       <http://digilander.iol.it/paeng/spice_models.htm>
*   - Vacuum tube parameter identification by Mithat F. Konar
*       <http://www.birotechnology.com/articles/VTspice.html>
* 
************************************************************************
* 6111  -  IDH subminiature medium-mu twin Bp  P K  I=(m)*uramp(()*V(G,K)+V(P,K))**1.5
* From GE 6111 datasheet - traced on 19-01-04 by AF
.subckt 6111  P G K
    Cgp G P  1.5p
    Ci  G K  1.9p
    Co  P K  0.32p
* Modified Koren model (8 parameters): mean fit error 0.201853 mA
    Bp  P K  I=(0.02034100865m)*uramp(V(P,K)*ln(1.0+(-0.2330777236)+exp((3.468205829)+(3.468205829)*((22.70785084)+(-161.593886m)*V(G,K))*V(G,K)/sqrt((12.6772307)**2+(V(P,K)-(8.855211259))**2)))/(3.468205829))**(1.49067916)
.ends 6111
 
This is the best 12AX7 model I have, made by Wayne Clay using the Adrei Frolov curve captor :



I generate the curves with my SiMetrix simulator and fit them on the GE graph :



It almost fit like a glove on a hand, specially in the most useful area, the bottom left corner ...

I always do that when I use a new model for my simulations. ;)

Alain,

I like the way the 12AX7 model matches to the spec sheet. ;)

Do you (or Cogs maybe) happen to also have similar Rydel models by Wayne Clay for any of the following?:

12AT7
12AU7
12AY7
2A3
6SN7
300B

Thanks,
.99
 
Alain,

I like the way the 12AX7 model matches to the spec sheet. ;)

Do you (or Cogs maybe) happen to also have similar Rydel models by Wayne Clay for any of the following?:

12AT7
12AU7
12AY7
2A3
6SN7
300B

Thanks,
.99
No, because the Rydel model would be a terrible fit for those triodes. ;) Have a look here for the 12A*7 and 6SN7 models.

And here are the 2A3 and 300B models made by Andrei:
Code:
************************************************************************
* tubes.lib  -  Andrei's tube models library (for PSpice)
* 
* Copyright (C) 2001-2005 Andrei Frolov <frolov@cita.utoronto.ca>
* Distributed under the terms of GNU Public License.
* 
* Based on the models and ideas of many people; see in particular
*   - Norman Koren pages <http://www.normankoren.com/Audio/>
*   - Duncan Munro pages <http://www.duncanamps.com>
*   - Spice models survey by Stefano Perugini
*       <http://digilander.iol.it/paeng/spice_models.htm>
*   - Vacuum tube parameter identification by Mithat F. Konar
*       <http://www.birotechnology.com/articles/VTspice.html>
* 
************************************************************************

* 2A3  -  DH power amplifier low-mu triode
* Gp  P K  VALUE={(m)*limit(()*V(G,K)+V(P,K),0.0,1.0e16)**1.5}
* (filament: AC/DC 2.5V 2.5A)
* From Sophia 2A3 curves - traced on 10-09-01 by AF
.subckt 2A3  P G K
    Cgp G P  16.5p
    Ci  G K  7.5p
    Co  P K  5.5p
* Modified Koren model (8 parameters): mean fit error 0.713545 mA
    Gp  P K  VALUE=
+ {(0.05971145233m)*limit(V(P,K)*ln(1.0+(0.1795232428)+exp((10.17314834)+
+ (10.17314834)*((4.379335208)+(-0.8006439051m)*V(G,K))*V(G,K)/sqrt((-22.05356635)**2+
+ (V(P,K)-(5.934280729))**2)))/(10.17314834),0.0,1.0e16)**(1.624895041)}
.ends 2A3


* 300B  -  DH power amplifier low-mu triode
* Gp  P K  VALUE={(m)*limit(()*V(G,K)+V(P,K),0.0,1.0e16)**1.5}
* (filament: AC/DC 5.0V 1.2A)
* From Sophia 300B curves - traced on 10-09-01 by AF
.subckt 300B  P G K
    Cgp G P  15p
    Ci  G K  9p
    Co  P K  6p
* Modified Koren model (8 parameters): mean fit error 1.41017 mA
    Gp  P K  VALUE=
+ {(0.05155171876m)*limit(V(P,K)*ln(1.0+(0.02305306912)+exp((11.51679853)+
+ (11.51679853)*((4.057143765)+(-0.306429473m)*V(G,K))*V(G,K)/sqrt((4.009601802e-05)**2+
+ (V(P,K)-(6.302617801))**2)))/(11.51679853),0.0,1.0e16)**(1.646922576)}
.ends 300B
They're in the PSpice flavour, but will work just fine in LTspice.
Wayne :)
 
Last edited:
Hi,
6P36S can be used well with 25 W anode dissipation. It's specification is just very "gentle", Pa = 17 W and Pg2 = 5 W.
The real potential of 6P36S can be understood when comparing it's size with EL34 and 6L6 for example. Also the 6,3 V / 2A heater gives some idea of the current handling capacity of the cathode.

Anyhow, the curves of 6P36S and 6P44S are identical. The real differences of their performance can be observed only with actual tests, not with similations.
 
No, because the Rydel model would be a terrible fit for those triodes. ;) Have a look here for the 12A*7 and 6SN7 models.

And here are the 2A3 and 300B models made by Andrei:
Code:
************************************************************************
* tubes.lib  -  Andrei's tube models library (for PSpice)
* 
* Copyright (C) 2001-2005 Andrei Frolov <frolov@cita.utoronto.ca>
* Distributed under the terms of GNU Public License.
* 
* Based on the models and ideas of many people; see in particular
*   - Norman Koren pages <http://www.normankoren.com/Audio/>
*   - Duncan Munro pages <http://www.duncanamps.com>
*   - Spice models survey by Stefano Perugini
*       <http://digilander.iol.it/paeng/spice_models.htm>
*   - Vacuum tube parameter identification by Mithat F. Konar
*       <http://www.birotechnology.com/articles/VTspice.html>
* 
************************************************************************

* 2A3  -  DH power amplifier low-mu triode
* Gp  P K  VALUE={(m)*limit(()*V(G,K)+V(P,K),0.0,1.0e16)**1.5}
* (filament: AC/DC 2.5V 2.5A)
* From Sophia 2A3 curves - traced on 10-09-01 by AF
.subckt 2A3  P G K
    Cgp G P  16.5p
    Ci  G K  7.5p
    Co  P K  5.5p
* Modified Koren model (8 parameters): mean fit error 0.713545 mA
    Gp  P K  VALUE=
+ {(0.05971145233m)*limit(V(P,K)*ln(1.0+(0.1795232428)+exp((10.17314834)+
+ (10.17314834)*((4.379335208)+(-0.8006439051m)*V(G,K))*V(G,K)/sqrt((-22.05356635)**2+
+ (V(P,K)-(5.934280729))**2)))/(10.17314834),0.0,1.0e16)**(1.624895041)}
.ends 2A3


* 300B  -  DH power amplifier low-mu triode
* Gp  P K  VALUE={(m)*limit(()*V(G,K)+V(P,K),0.0,1.0e16)**1.5}
* (filament: AC/DC 5.0V 1.2A)
* From Sophia 300B curves - traced on 10-09-01 by AF
.subckt 300B  P G K
    Cgp G P  15p
    Ci  G K  9p
    Co  P K  6p
* Modified Koren model (8 parameters): mean fit error 1.41017 mA
    Gp  P K  VALUE=
+ {(0.05155171876m)*limit(V(P,K)*ln(1.0+(0.02305306912)+exp((11.51679853)+
+ (11.51679853)*((4.057143765)+(-0.306429473m)*V(G,K))*V(G,K)/sqrt((4.009601802e-05)**2+
+ (V(P,K)-(6.302617801))**2)))/(11.51679853),0.0,1.0e16)**(1.646922576)}
.ends 300B
They're in the PSpice flavour, but will work just fine in LTspice.
Wayne :)

Thanks Wayne.

In your opinion, those two for the 2A3 and 300B are about as good as it gets?

The link for the 12A()7 and 6SN7 just takes you back to this page. Could you repost the correct link please?

Thanks,
.99
 
Hi Wayne,

The two models (2A3 and 300B) may be in PSpice flavor, but they are missing a couple of key ingredients, i.e. they don't work in PSpice.

The LIMIT function needs the form of : LIMIT(x,min,max) to work. These are missing. Also, PSpice does not recognize "ln" for natural log, it needs to see simply "log". So here is the corrected and tested versions of those two models (I used MAX rather than LIMIT):

Code:
* 2A3  -  DH power amplifier low-mu triode
* Gp  P K  VALUE={(m)*limit(()*V(G,K)+V(P,K),0.0,1.0e16)**1.5}
* (filament: AC/DC 2.5V 2.5A)
* From Sophia 2A3 curves - traced on 10-09-01 by AF
.subckt 2A3  P G K
Cgp G P  16.5p
Ci  G K  7.5p
Co  P K  5.5p
* Modified Koren model (8 parameters): mean fit error 0.713545 mA
Gp  P K  VALUE=
+ {(0.05971145233m)*MAX(0,(V(P,K)*LOG(1.0+(0.1795232428)+exp((10.17314834)+
+ (10.17314834)*((4.379335208)+(-0.8006439051m)*V(G,K))*V(G,K)/sqrt((-22.05356635)**2+
+ (V(P,K)-(5.934280729))**2)))/(10.17314834),0.0,1.0e16)**(1.624895041))}
.ends 2A3
*
*
* 300B  -  DH power amplifier low-mu triode
* Gp  P K  VALUE={(m)*limit(()*V(G,K)+V(P,K),0.0,1.0e16)**1.5}
* (filament: AC/DC 5.0V 1.2A)
* From Sophia 300B curves - traced on 10-09-01 by AF
.subckt 300B  P G K
Cgp G P  15p
Ci  G K  9p
Co  P K  6p
* Modified Koren model (8 parameters): mean fit error 1.41017 mA
Gp  P K  VALUE=
+ {(0.05155171876m)*MAX(0,(V(P,K)*LOG(1.0+(0.02305306912)+exp((11.51679853)+
+ (11.51679853)*((4.057143765)+(-0.306429473m)*V(G,K))*V(G,K)/sqrt((4.009601802e-05)**2+
+ (V(P,K)-(6.302617801))**2)))/(11.51679853),0.0,1.0e16)**(1.646922576))}
.ends 300B
.99
 
I see there are remnants (,0.0,1.0e16) of the LIMIT function in those 2A3 and 300B models. Here is the corrected WORKING version, again keeping with the MAX function instead (it is simpler):

Code:
* 2A3  -  DH power amplifier low-mu triode
* Gp  P K  VALUE={(m)*limit(()*V(G,K)+V(P,K),0.0,1.0e16)**1.5}
* (filament: AC/DC 2.5V 2.5A)
* From Sophia 2A3 curves - traced on 10-09-01 by AF
.subckt 2A3  P G K
Cgp G P  16.5p
Ci  G K  7.5p
Co  P K  5.5p
* Modified Koren model (8 parameters): mean fit error 0.713545 mA
Gp  P K  VALUE=
+ {(0.05971145233m)*MAX(0,(V(P,K)*LOG(1.0+(0.1795232428)+exp((10.17314834)+
+ (10.17314834)*((4.379335208)+(-0.8006439051m)*V(G,K))*V(G,K)/sqrt((-22.05356635)**2+
+ (V(P,K)-(5.934280729))**2)))/(10.17314834))**(1.624895041))}
.ends 2A3
*
*
* 300B  -  DH power amplifier low-mu triode
* Gp  P K  VALUE={(m)*limit(()*V(G,K)+V(P,K),0.0,1.0e16)**1.5}
* (filament: AC/DC 5.0V 1.2A)
* From Sophia 300B curves - traced on 10-09-01 by AF
.subckt 300B  P G K
Cgp G P  15p
Ci  G K  9p
Co  P K  6p
* Modified Koren model (8 parameters): mean fit error 1.41017 mA
Gp  P K  VALUE=
+ {(0.05155171876m)*MAX(0,(V(P,K)*LOG(1.0+(0.02305306912)+exp((11.51679853)+
+ (11.51679853)*((4.057143765)+(-0.306429473m)*V(G,K))*V(G,K)/sqrt((4.009601802e-05)**2+
+ (V(P,K)-(6.302617801))**2)))/(11.51679853))**(1.646922576))}
.ends 300B
.99