• 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

I have been trying to get to grips with modelling the Tubelab SPP in LtSpice so that I can investigate how the simulation differs for an EL86 version. I am trying to add negative feedback, and I'd like to see how the operating points are affected by different values of the feedback resistor from the OPT secondary.

In order to do that, I have had to better understand how transformer models work, and I have also tried to derive a model for the Toroidy TTG-EL84PP, which looks to be quite different to the theoretical model I have in my simulation today.

Here is my test file for the Toroidy OPT, added to another simulation I sourced somewhere, and can't remember. I have had to get a better understanding of how the different windings are coupled, and calculate the inductances of each section.

In my näive view, the Toroidy should have the same power output as the theoretical one. With 300V p-p on the primary, the theoretical gives 25v p-p, so power output on the 16ohm tap should be ((25/1.4)^2)/16 = approx 20W, which is OK.

The Toroidy model only has 10V p-p. It has a primary inductance of 500H instead of 72H of the theoretical OPT.

Is this to be expected?
 

Attachments

  • trafo-test-pp-8000k-001.asc
    8.6 KB · Views: 77
Disabled Account
Joined 2013
Total pri inductance is 520H based on your data.
4 ohm inductance ratio=8000/4=2000
sec 4 ohms inductance=520/2000=0.26

sec 8 ohms inductance=0.26/6=0.0433
sec 16 ohms inductance=0.26/3=0.0867
40% UL tap=150*0.4=60Vp

see attach for sec output voltage
 

Attachments

  • 8k toroidal ul xformer.png
    8k toroidal ul xformer.png
    96.3 KB · Views: 167
Last edited:
Disabled Account
Joined 2013
Yes, you're correct to omit them in actual circuit. The purpose of two 4k resistors is chosen so they represent the total effective OT pri Z raa (r anode to anode) is 2*4k=8k, for OT Z=4k, two 2k resistors are used and so on. You can test by measuring the voltage after the resistors with respect to ground, should be half of generator voltage.


In actual circuit resistor is represented by the tube resistance, that is if raa=8k, and OT Z=8k when sec is connected, you'll measure 1/2 voltage at plate top with respect to ground or full voltage swing across the 2 plate tops
 
Last edited:
Disabled Account
Joined 2013
I have put together all the 300b models in one lib and each model is labeled using number rather than char. so can use ".step param tube list 1 2 4.." or just "param tube =7" will pick up 300b_we model.
The will make it possible for instant comparing various params like power dissipation, current, ouput and distortion etc.
Model naming as follow:-

1-EH
2-ER
3-FM
4-JJ
5-KR
6-PS
7-WE
8-GV
 

Attachments

  • 300b char comparing.png
    300b char comparing.png
    74.7 KB · Views: 164
  • trans 300b model.asc
    1.9 KB · Views: 71
  • 300b.lib.txt
    11.3 KB · Views: 75
  • Like
Reactions: 1 user
Disabled Account
Joined 2013
STC 4300B model


Code:
**** 4300B ** Advanced Grid Current **********************************
* Created on 09/12/2021 00:06 using paint_kit.jar 3.1
* [url=http://www.dmitrynizh.com/tubeparams_image.htm]Model Paint Tools: Trace Tube Parameters over Plate Curves, Interactively[/url]
* Plate Curves image file: 4300B.GIF
* Data source link: [url]http://tdsl.duncanamps.com/dcigna/tubes/sheets/misc/4300b-3h.gif[/url]
*----------------------------------------------------------------------------------
.SUBCKT 300B-GD 1 2 3 ; Plate Grid Cathode
+ PARAMS: CCG=8.5P  CGP=7.5P CCP=11P 
+ MU=3.931 KG1=2763.1 KP=52.17 KVB=812.4 VCT=2.099 EX=1.534 
+ VGOFF=2 IGA=0.001 IGB=0.3 IGC=8 IGEX=1.6 
* Vp_MAX=650 Ip_MAX=100 Vg_step=20 Vg_start=0 Vg_count=11
* Rp=4000 Vg_ac=55 P_max=40 Vg_qui=-48 Vp_qui=300
* X_MIN=48 Y_MIN=26 X_SIZE=818 Y_SIZE=621 FSZ_X=1296 FSZ_Y=736 XYGrid=false
* showLoadLine=n showIp=y isDHT=n isPP=n isAsymPP=n showDissipLimit=y 
* showIg1=y gridLevel2=y isInputSnapped=n  
* XYProjections=n harmonicPlot=n dissipPlot=n 
*----------------------------------------------------------------------------------
E1 7 0 VALUE={V(1,3)/KP*LOG(1+EXP(KP*(1/MU+(VCT+V(2,3))/SQRT(KVB+V(1,3)*V(1,3)))))} 
RE1 7 0 1G  ; TO AVOID FLOATING NODES
G1 1 3 VALUE={(PWR(V(7),EX)+PWRS(V(7),EX))/KG1} 
RCP 1 3 1G   ; TO AVOID FLOATING NODES
C1 2 3 {CCG} ; CATHODE-GRID 
C2 2 1 {CGP} ; GRID=PLATE 
C3 1 3 {CCP} ; CATHODE-PLATE 
RE2 2 0 1G 
EGC 8 0 VALUE={V(2,3)-VGOFF} ; POSITIVE GRID THRESHOLD
GG 2 3 VALUE={(IGA+IGB/(IGC+V(1,3)))*(MU/KG1)*(PWR(V(8),IGEX)+PWRS(V(8),IGEX))}
.ENDS 
*$
 

Attachments

  • 300B-GD paint.jpg
    300B-GD paint.jpg
    380 KB · Views: 142
Disabled Account
Joined 2013
This sim is taken a step further:
Each tube set to output 200Vp
Each tube is bias so Pdissp is about 32W
STC 4300B is added to the list.
 

Attachments

  • 300b2.lib.txt
    12.3 KB · Views: 71
  • trans 300b model 3.asc
    2.7 KB · Views: 72
  • 300b char comparing 2.png
    300b char comparing 2.png
    100.6 KB · Views: 156
  • trans 300b model 3.log..txt
    7.2 KB · Views: 94
Last edited:
  • Like
Reactions: 1 user
Never ending saga ...

All of this advanced LTSpice usage leaves me a bit ashamed to bring up another issue with my simulation.

It was working perfectly, then I saw that I had got the OPT inductance wrong, it was 400H not 500H, so I reworked the windings and updated the model. Then it just stopped working. It all goes to pot after the phase splitter.

Unfortunately I lack the experience with this tool to iterate around standard issues, and divide and conquer.

Also, what is a reasonable line input level to work with? My resistance divider (40k + 60k) is meant to represent a potentiometer. I have reduced the amplitude of the input sine wave to 0.5V. I will lose some gain when I manage to get the NFB correct.
 

Attachments

  • SPP_EL84_1a.asc
    8.2 KB · Views: 69
Disabled Account
Joined 2013
One 40%Tab1 and the other 40%Tab2 is ok as long as they're not shorting out. I changed the circuit to Pentode mode and it worked, I must have moved the 2 tabs away so the circuit become operational. I check a few area wonder why UL mode not working, knowing the circuit is fine, same as you, then I spot it. It will happen if it copied as Ltspice will not change the 2 same labels, like "Tp1" or "40%", include this in troubleshoot checklist.
 
Last edited:
I've only seen one reference to this model and it's Koonw's post in a 12BH7A thread.

**** 12BH7A_STR ** Advanced Grid Current **********************************
* Created on 08/24/2020 14:31 using paint_kit.jar 3.1
* Model Paint Tools: Trace Tube Parameters over Plate Curves, Interactively
* Plate Curves image file: 12bh7a-str.png
* Data source link:
*----------------------------------------------------------------------------------
.SUBCKT 12BH7A_STR 1 2 3 ; Plate Grid Cathode
+ PARAMS: CCG=2.9P CGP=2.5P CCP=0.5P
+ MU=18.02 KG1=945.75 KP=185.4 KVB=1247.69 VCT=-0.6206 EX=1.181
+ VGOFF=-1.03 IGA=8.2E-4 IGB=0.162 IGC=6.624 IGEX=1.3
* Vp_MAX=500 Ip_MAX=16 Vg_step=2.5 Vg_start=5 Vg_count=12
* Rp=4000 Vg_ac=55 P_max=3.5 Vg_qui=-48 Vp_qui=300
* X_MIN=279 Y_MIN=106 X_SIZE=857 Y_SIZE=593 FSZ_X=1618 FSZ_Y=918 XYGrid=true
* showLoadLine=n showIp=y isDHT=n isPP=n isAsymPP=n showDissipLimit=y
* showIg1=y gridLevel2=y isInputSnapped=n
* XYProjections=n harmonicPlot=n dissipPlot=n
*----------------------------------------------------------------------------------
E1 7 0 VALUE={V(1,3)/KP*LOG(1+EXP(KP*(1/MU+(VCT+V(2,3))/SQRT(KVB+V(1,3)*V(1,3)))))}
RE1 7 0 1G ; TO AVOID FLOATING NODES
G1 1 3 VALUE={(PWR(V(7),EX)+PWRS(V(7),EX))/KG1}
RCP 1 3 1G ; TO AVOID FLOATING NODES
C1 2 3 {CCG} ; CATHODE-GRID
C2 2 1 {CGP} ; GRID=PLATE
C3 1 3 {CCP} ; CATHODE-PLATE
RE2 2 0 1G
EGC 8 0 VALUE={V(2,3)-VGOFF} ; POSITIVE GRID THRESHOLD
GG 2 3 VALUE={(IGA+IGB/(IGC+V(1,3)))*(MU/KG1)*(PWR(V(8),IGEX)+PWRS(V(8),IGEX))}
.ENDS
*$

From this thread: 12BH7 and questions about its operating conditions is AB or A1
 
Disabled Account
Joined 2013
Type 50 EML model:
Type 50 Emission Labs Data Sheet


Code:
**** EML50 ** Advanced Grid Current **********************************
* Created on 09/19/2021 21:40 using paint_kit.jar 3.1
* [url=http://www.dmitrynizh.com/tubeparams_image.htm]Model Paint Tools: Trace Tube Parameters over Plate Curves, Interactively[/url]
* Plate Curves image file: EML50.png
* Data source link: [url]http://www.emissionlabs.com/datasheets/50-curves.gif[/url]
*----------------------------------------------------------------------------------
.SUBCKT EML50 1 2 3 ; Plate Grid Cathode
+ PARAMS: CCG=3P  CGP=1.4P CCP=1.9P 
+ MU=3.951 KG1=3670.57 KP=57.29 KVB=629.46 VCT=-5.04 EX=1.395 
+ VGOFF=-0.6 IGA=0.001 IGB=0.3 IGC=8 IGEX=1.64 
* Vp_MAX=650 Ip_MAX=150 Vg_step=15 Vg_start=0 Vg_count=11
* Rp=4000 Vg_ac=55 P_max=35 Vg_qui=-48 Vp_qui=300
* X_MIN=65 Y_MIN=10 X_SIZE=699 Y_SIZE=563 FSZ_X=1296 FSZ_Y=736 XYGrid=false
* showLoadLine=n showIp=y isDHT=n isPP=n isAsymPP=n showDissipLimit=y 
* showIg1=y gridLevel2=y isInputSnapped=n  
* XYProjections=n harmonicPlot=n dissipPlot=n 
*----------------------------------------------------------------------------------
E1 7 0 VALUE={V(1,3)/KP*LOG(1+EXP(KP*(1/MU+(VCT+V(2,3))/SQRT(KVB+V(1,3)*V(1,3)))))} 
RE1 7 0 1G  ; TO AVOID FLOATING NODES
G1 1 3 VALUE={(PWR(V(7),EX)+PWRS(V(7),EX))/KG1} 
RCP 1 3 1G   ; TO AVOID FLOATING NODES
C1 2 3 {CCG} ; CATHODE-GRID 
C2 2 1 {CGP} ; GRID=PLATE 
C3 1 3 {CCP} ; CATHODE-PLATE 
RE2 2 0 1G 
EGC 8 0 VALUE={V(2,3)-VGOFF} ; POSITIVE GRID THRESHOLD
GG 2 3 VALUE={(IGA+IGB/(IGC+V(1,3)))*(MU/KG1)*(PWR(V(8),IGEX)+PWRS(V(8),IGEX))}
.ENDS 
*$


DHT model:


Code:
**** EML50 ** Composite DHT with Advanced Grid Current **************
* Created on 09/19/2021 21:39 using paint_kit.jar 3.1
* [url=http://www.dmitrynizh.com/tubeparams_image.htm]Model Paint Tools: Trace Tube Parameters over Plate Curves, Interactively[/url]
* Plate Curves image file: EML50.png
* Data source link: 
*----------------------------------------------------------------------------------
.SUBCKT DHT_EML50_A2 1 2 3 4 ; P G K1 K2
+ PARAMS: CCG=3P  CGP=1.4P CCP=1.9P RFIL=6
+ MU=3.951 KG1=3670.57 KP=57.29 KVB=629.46 VCT=-5.04 EX=1.395 
+ VGOFF=-0.6 IGA=0.001 IGB=0.3 IGC=8 IGEX=1.64 
* Vp_MAX=650 Ip_MAX=150 Vg_step=15 Vg_start=0 Vg_count=11
* Rp=4000 Vg_ac=55 P_max=35 Vg_qui=-48 Vp_qui=300
* X_MIN=65 Y_MIN=10 X_SIZE=699 Y_SIZE=563 FSZ_X=1296 FSZ_Y=736 XYGrid=false
* showLoadLine=n showIp=y isDHT=y isPP=n isAsymPP=n showDissipLimit=y 
* showIg1=y gridLevel2=y isInputSnapped=n 
* XYProjections=n harmonicPlot=n dissipPlot=n 
*----------------------------------------------------------------------------------
RFIL_LEFT    3  31 {RFIL/4}
RFIL_RIGHT   4  41 {RFIL/4}
RFIL_MIDDLE1 31 34 {RFIL/4}
RFIL_MIDDLE2 34 41 {RFIL/4}
E11 32 0  VALUE={V(1,31)/KP*LOG(1+EXP(KP*(1/MU+V(2,31)/SQRT(KVB+V(1,31)*V(1,31)))))}
E12 42 0  VALUE={V(1,41)/KP*LOG(1+EXP(KP*(1/MU+V(2,41)/SQRT(KVB+V(1,41)*V(1,41)))))}
RE11 34 0 1G
G11 1 31 VALUE={(PWR(V(32),EX)+PWRS(V(32),EX))/(2*KG1)}
G12 1 41 VALUE={(PWR(V(42),EX)+PWRS(V(42),EX))/(2*KG1)}
RCP1 1 34 1G
C1 2 34 {CCG} ; CATHODE-GRID
C2 2 1 {CGP} ; GRID=PLATE
C3 1 34 {CCP} ; CATHODE-PLATE
RE2 2 0 1G
EGC1 81 0 VALUE={V(2,31)-VGOFF} ; POSITIVE GRID THRESHOLD
GG1 2 31 VALUE={0.5*(IGA+IGB/(IGC+V(1,31)))*(MU/KG1)*(PWR(V(81),IGEX)+PWRS(V(81),IGEX))}
EGC2 82 0 VALUE={V(2,41)-VGOFF} ; POSITIVE GRID THRESHOLD
GG2 2 41 VALUE={0.5*(IGA+IGB/(IGC+V(1,41)))*(MU/KG1)*(PWR(V(82),IGEX)+PWRS(V(82),IGEX))}
.ENDS 
*$
 

Attachments

  • 50 EML paint.jpg
    50 EML paint.jpg
    244.2 KB · Views: 145