Vacuum tube amplifiers



I love to listen to music and for a long time I have been curious about vacuum tube (a.k.a. valve) amplifiers. I decided to learn about the topic and after scavenging much material from the internet, I bought the 3rd edition of Morgan Jones' book "Valve amplifiers". The book was very interesting but not enough for me.

In the diyaudio forum about tubes, one of the members recommended the Radiotron Designer's Handbook. The pdf is freely available online, but I decided to buy a used copy of the 4th edition. This book is the bible! It is amazing and an incredible help if you want to calculate everything and model the behavior of your designs knowing what you do. Other interesting sources of information were some modules of the Navy Electricity and Electronics Training Series freely available online. Many other useful sources of information are listed in the Links page.

Choosing a tube for my design was not easy and after much debate (with myself), I chose the 211 for the output stage. The topology of the amplifier needed to be simple. A two-stage single ended amplifier was then the choice. I have no experience in amplifier building and I have not a very deep knowledge of electronics so my choices may be all wrong. Anyhow, I designed two amplifiers. The first used paralleled 211s for the output stage, the second did not. I have not built these amps so I don't know how they sound yet.

The parameter calculation, and all the number crunching was done using a Matlab-based software that I programmed to model tube behavior, calculate circuit values and parameters. This programming project also helped choosing the tubes as it allowed me to model many different output and input tubes.

The first step was to get data from tube datasheets. For that I used the PDFs or GIFs available online and digitize the Ip vs Vp curves using Engauge Digitizer, a fantastic freeware software. The digitizer will convert the curves to a series of XY coordinates that define each curve, the user only defines the axes of the graph by selecting with the mouse the 0 and max value for each axis after the software opens the graph (previously saved as a .bmp file). The XY coordinates are saved in a .csv file that can be viewed with Excel. My Matlab software opens the .csv file, plots the graph and finds the parameters of Norman Koren's triode model. Norman's model is in his page. The model worked very well for me with many different triodes. The pentode model is not as accurate and I could not implement it to my satisfaction. I wanted to use only triodes anyway so I didn't play much with the pentode model. After the parameters are found, one can draw a loadline and move it around as the program calculates all parameters of a single ended amplifier, and the values of the components for an output or input stage topology.







The software



The software is free and you can use it as long as you have Matlab and the fsolve function from the optimization toolbox. I have programmed and tested it in Matlab 6.5 Release 13. If you have an older or newer version it should work but minor changes may be necessary. If you do not have the optimization toolbox, there are ways around it using something other than fsolve.

Before you try this, let me say: my tube modeling software is in development, it is not finished, and it is provided with no warranty. It may not work at all or perform wrong calculations. Do not use it unless you are willing to accept the risk of using an experimental tool. In addition, know that designing, testing, repairing, or building an amplifier, or any other piece of electronic equipment, may result in fatal injuries to you and others including electrocution, burns, etc. It may also cause property damage. Do not use my software if you are not experienced enough to manage those risks. Do not use my software if you are not willing to assume those risks. I am not, and will not be, responsible for any injury to you or others, or property damage of any kind, resulting from the use, proper or not, of my software.

To install my software simply unzip the file "tube.zip" (download here) into your Matlab work folder, and add work\tube to the path. The zip file has a folder called "tube". Inside "tube" you will find:
tubeplot.m (script to plot the data)
tubes.m (main script to launch the application)
tubeselect.m (GUI element parameters)
data (folder containing .csv files for different triodes and some triode-strapped pentodes)
input_stage.mat (image of an input stage)
output_stage.mat (image of an output stage)
tubecircuit.m (script to calculate circuit values)
tubefunc.m (function used in the optimization of Koren's parameters)
tubefuncnk.m (function used to calculate Koren's model values)
tubeop.m (script to calculate the operating point)
tubeopen.m (script to open .csv files and optimize Koren's parameters; fsolve is used here)
tubeopfunc.m (script to calculate operating point values)


If you are interested only in the XY coordinates of the curves for different tubes, just browse the "data" folder. Every file in there has XY coordinates for the set of curves digitized from tube datasheets. To know what grid voltage correspond to each curve, you should open tubeselect.m as a text file. There you will find the grid voltage for the first curve listed in the .csv file, and the interval at which the other curves appear in the datasheet. For the 845 Amperex tube tubeselect.m has the following entry:
case 2 %845 from Amperex Data Sheet
set(findobj('tag', 'egstart'), 'string', '0');
set(findobj('tag', 'eginterval'), 'string', '50');


That means that I digitized the Amperex datasheet for the 845 triode. The first set of XY coordinates listed on the .csv file corresponds to the Plate current vs. Plate voltage curve for 0V Grid voltage. The next set of coordinates corresponds to the curve for -50V Grid voltage, the next is for -100V, and so forth. You can see that because the "egstart" parameter is "0", and the "eginterval" is "50". The number of points digitized per curve varies but it is as much as I could get and enough to make the model pretty accurate.

The tube files included in the "data" folder are the following:
300b.csv
417A.csv
520B-c.csv
801A.csv
845.csv
EL84.csv
EL84_triode_connected.csv
gm-70.csv
px25.csv
2a3.csv
6AB4.csv
6BQ6_triode_connected.csv
6C33C-B.csv
6C45PE.csv
6DQ6B.csv
6J4WA.csv
6j6.csv
6JT6_A.csv
6l6_triode_connected.csv
6SL7.csv
6sn7.csv
12at7.csv
12au7.csv
12ax7.csv
27.csv
45_cunningham.csv
45_radiotron.csv
76.csv
211_high.csv
211_low.csv


To use the software, after you unzip it, set the path, and restart Matlab, type "tubes" in the command line and two windows will appear as follows:

Select one of the tubes in the "Tubes:" drop-down menu, or enter all necessary parameters if a new tube (Egstart, Eginterval, first parameter under "Params." which is the amplification factor, Pa, Vx, Va, and Caps). Placing the mouse over every item in those windows will display an explanation of what it is.

After you select a tube or type the necessary parameters, click "Open:" and select a corresponding .csv file. Once you open the file, another window will appear with the data from the .csv file plotted as black circles and the result of the model plotted as red lines. If the red lines do not fit well to the actual data (the black circles) you can repeat the operation but increase the "Iterate" number. The blue line is the dissipation line according to the parameter "Pa". For the 845 case, it looks like this:



Now you can hit "Loadline" to get an initial loadline and then move it around, or you can specify the impedance of the desired loadline in Ohms typing it inside the "Zo" window. For example an 11500 Ohms loadline would look like this:



You can see the loadline in purple, the operating point as a black diamond, the "Ig" or the grid voltage at which grid current starts (0V by default as in this case or user changeable) in light green, the point of maximal allowed swing "HT" (equal to "Vx" by default or used changeable) also in light green as a vertical dotted line with its associated curve in solid light green, and a vertical blue line indicating "Va" or the maximum allowed operating point voltage.

As you can see in the example, this initial loadline goes over the dissipation line and "HT" is a bit high. So if you type your desired HT (let's say 1400V), click on "Loadline" again, and then use the slider labeled "Y value" in the window labeled "Tube graph", you can have a loadline that runs under the dissipation line and an operating point at voltage lower than Va.



Now with this loadline the grid will swing from 0V to -239.0361V, the operating point will be in the middle of that swing at -199.5V at a plate voltage of 874V and a plate current of 81.68mA. You can see all the parameters of the stage, like total harmonic distortion (1.713%), etc. In the window labeled "Circuit values" you find the values associated with the circuit shown. In this case is a regular output stage with a primary DC resistance of 500 Ohms for the output transformer (you can change that by typing a different number). You can also select a different Rg value and click on "Cap loss" to get the frequency response for that circuit. You can also change the type of circuit using the drop-down menu at the top of that window to "Input Stage". That changes the picture of the circuit and recalculates the values. By choosing the value of the grid resistor of the following stage and clicking "Cap loss" you can get the frequency response of that stage. For input stages, the dynamic loadline (doted purple line in the picture below) can also be used instead of the regular loadline to perform all the calculations, as long as "Dynamic line calc." is checked.



Finally I would like to say that this work has been inspired by the work of Norman Koren, Mithat Konar, and Stefano Perugini.

The code is annotated to the best of my ability and how to use Engauge Digitizer to make the .csv files is included in the header of tubes.m and tubeopen.m (you can open them as text files). Please, feel free to ask me things about the use and code of the program, send suggestions, and comments (here).





The amplifiers



These are my two amplifiers design so far. None of them has been built so this section should be of little, if any, use. It is here anyhow, and as soon as I start to build I will post progress and tests here. My Matlab software helped with the design, and I used PSU designer II from Duncan Amps for the power supply.

I iterate that this is not intended to be built by anyone. It is here as an example of what I have done as a novice using the little knowledge I have about the topic. If you want to build something do not look at these schematics as plans, you should get a kit or a robust and tested design instead.

The first design was a parallel single ended 211 amplifier in a stereo block. There may be some issues with the power supply that I did not have time to look into. The idea here was to get a bit more power using a paralleled configuration, maintaining a simple single-ended design with only triodes and two stages. The 417A driver tube is pretty linear and can provide the swing needed by the 211 grid without the necessity of an intermediate stage. Alternative tubes could probably the Russian 6C45PE, or may be a PX-25, or a 76, although I haven't played much with those.

My second design is a single-ended version of the first that I am leaning more towards building right know. However, I have more thinking and modeling to do, as another possibility to drive the 211 is one of Gary Pimm's constant current sources (CCS).