diyAudio (
-   Tubes / Valves (
-   -   Vacuum Tube SPICE Models (

jackinnj 12th October 2013 09:29 PM


Originally Posted by jazbo8 (
That's beyond my pay grade...:D I am looking forward to see some new methodologies and software tools for pentode model building.

It's a good thing that you're not a grad student in my wife's lab.

Here's how the curves sort out when the data is ranged to all data points, or limited to Vak ranges:

An externally hosted image should be here but it no longer works. Please upload images instead of linking to them to prevent this.

mogliaa 13th October 2013 11:27 AM

Here is my improved version of the 4P1L triode model including A2 grid current:
4P1L model improved | Bartola Valves

jackinnj 14th October 2013 12:47 PM

Here are the params for the 832, Vg2=250:

All Data Points: MU=6.27 KP=44.84 EX=1.55 KVB=36.1 KG1=5476
For Vak>= 50: MU=6.86 KP=28.01 EX=1.55 KVB=24.7 KG1=4795
For Vak>=100: MU=6.90 KP=27.40 EX=1.55 KVB=38.1 KG1=4614

All of the above are dependent upon the number of points, where you choose to select them from, and how you describe the error term being minimized. This was a pretty quick rendering of the datasheet into Excel, so ymmv.

Robert Weaver 15th October 2013 09:45 AM

Oh No! Another Pentode Model
6 Attachment(s)
In another thread I posted the results of a new pentode model for the GU50 tube, and said that I would start a new topic to discuss this model in detail. I'll warn everyone right up front that this new model has a lot of parameters that need to be calculated. However, the model has been designed in such a way that there is minimum interaction between the parameters, so that they can be calculated in small independent sets.

Over the past year I've been working on a spreadsheet to do loadline analysis of output tubes, and have been using the Koren model which works very well for triodes, but I've had trouble getting an accurate fit especially near the knee of the plate current curves. Recently, I've been tinkering with an alternative pentode model. When I started on this, I wasn't aware of Ayumi's pentode model. I had a look at it (using Google to translate from Japanese) and, while I didn't read the entire article in detail, I was impressed with methodology for determining the parameters. However, I was still a bit disappointed with the way the model fit around the knee of the plate current curve. So, I decided to continue with my project.

Although the Koren model is empirical, it appears that it's theoretically based with some empirical additions. This is generally a good way to do it, because we can be reasonably confident that if we try to extrapolate the model beyond the original fitting data, the curves won't likely veer out of control.

Unfortunately, there sometimes comes a point where the theoretical model is just too approximate, and piling empirical additions onto it makes it more and more unwieldy. I decided to start with clean slate and use a completely empirical model based on very simple math functions. Examining the plate current curves for a pentode, we can approximate the curve with two straight lines: the first, to the left of the knee with a steep slope (see Line A in Figure 1), and the second, to the right of the knee, with an almost horizontal slope (see Line B in Figure 1). In the transition region, a function must be provided to blend smoothly from one to the other. For the time being, I'll ignore the effects of changing screen and control grid voltages. I'll assume the values of Ec and Es to be fixed at the maximum voltage for the published data. That means that we only have to fit a single variable function.

I'll use the data for the GU50 as an example, and assume Ec=0 and Es=250V. I'll refer to these reference voltages as EcRef and EsRef respectively.

For the part of the curve below the knee voltage, a simple straight line will suffice (Line A, Figure 1), and has the form:
where g0 is the slope and b0 is the Ip axis intercept. Since Ip must be zero when Ep is zero, b0 must be zero, and can be eliminated from the formula. So the plate current function for the left side of the curve is simply:


g0 is simply the transconductance below the knee, and can be found directly from the plate current curves by picking a point on the curve just before the knee and dividing the current by the corresponding voltage.

For the GU50 example, the curve starts to bend after Ip goes above 0.160 A (For Ec=0). The plate voltage at this point is about 24 volts, so the slope is 0.16/24. Hence:

For the right side of the curve (Line B, Figure 1), I looked at several different functions, in order of increasing complexity:
- A simple straight line (2 parameters)
- A parabola (3 parameters)
- A square root function (4 parameters)
- A hyperbola (4 parameters)

The choice of which function to use is a compromise between ease of calculation, and how well it fits. A simple straight line may work well in many cases where the plate curves are very straight, and it is very easy to calculate with nothing more than a ruler to measure slope and intercept, but in the general case there's often too much curvature to the Ip/Ep characteristic. So, I looked at the next simplest function, a parabola. This requires only one more parameter than the straight line, and there are many online curve fitting calculators that will do the work of determining the 3 coefficients. This gives a better fit than the straight line in most cases. However, it isn't very good when attempting to use the model beyond the range of the fitted data, because the parabolic curve naturally starts to drop off at high values. The hyperbola and square root function don't suffer from this problem, making them fairly safe for use beyond the range of fitting data. I eventually chose a hyperbolic function with an additional linear term of this form:


This involves a bit more work to calculate the parameters. Currently, I'm using a solver macro in my spreadsheet to do the fitting work, but I hope to develop a method for calculating them directly.

For the GU50 example, the solver came up with these values:

In the knee region a method is needed to transition from the nearly vertical line on the left to the nearly horizontal curve on the right. This can be handled with a math function that exhibits an S-shaped curve. There are numerous examples. The arctan function is one of them, and it is the first one that I tried. However, it wasn't satisfactory. So, I moved on to an exponential form:

where parameter kt1 determines the position of the centre of the transition region, and kt2 determines the width of the transition region.

For the GU50 example, the centre of the transition region (kt2) will be somewhere above 24 volts, so I chose a value of 30 for kt1 and then tried different values of kt2 to see the effect of widening or narrowing the transition region. (The smaller the value of kt2, the wider the transition region.) The best value turned out to be less than one. I let the solver fine tune these values, and it came up with:

Combining the three functions into one, we get:

Using the above calculated parameters, we get the plate current curve show in Figure 2. The blue data points are as measured off of the manufacturers data sheet, and the red curve is the fitting function. It's pretty good, but not perfect near the knee.

At this point I decided to let the solver fine tune all of the values simultaneously, and it came up with the following optimized values:

Surprisingly, the solver changed some of the values quite radically, but this gave a very good fit that wouldn't have been possible by manually manipulating the numbers.

Now, you're probably thinking it's a lot of parameters (seven) for a function that still doesn't account for screen voltage and control grid voltage. True enough, but that's the cost of getting a good fit. The following chart shows how the fitted curve (red line) compares with the published data (blue points). The fit is almost exact. (See Figure 3)

Next we have to account for control and screen grids.

We can see that when the control grid is made more negative, the Ip curve moves closer to the Ep axis, but stays the same shape. It seems reasonable then that the plate current function can simply be multiplied by a scale factor which is a simple function of Ec. I found a parabolic fit works very well for this. It's simply a matter of picking a fixed value for Ep, say (600 volts for the GU50 example), and then measure the curves to find Ip for different values of Ec. These current values are divided by the value of Ip when Ec=EcRef. This normalizes the values so that the scale factor function will return a value of 1 when Ec=EcRef. The resulting data points are then plugged into a curve fitter to get the coefficients for what I will call the control grid reduction function:

Frc = kc1*Ec^2+kc2*Ec+kc3

We're now up to ten parameters, but the good news is that these last three parameters will have no interactions with the first seven parameters, making their calculation reasonably painless.

The curve fitting calculator gave the following values:

The complete set of curves for Es=250V is shown in Figure 4.

To account for screen voltage, we do the same thing we did for the control grid. This time, we hold Ep constant (700V) and Ec constant (0V), and then measure the different values of Ip as we vary Es. Again this is normalized by dividing the Ip values by the value of Ip at Es=EsRef, and then is fitted to a parabolic curve using a curve fitter. This give the screen reduction function:

Frs = ks1*Es^2+ks2*Es+ks3

We're now up to 13 parameters, but again, these last three will have no interaction with the first 10 parameters so they can be calculated independently. The curve fitter gave the following values:

In this particular example the best fit happens to be a straight line, and so ks1 is zero. However, we can't assume that a straight line fit will work in every case.

We're almost done, but not quite. When the both control and screen grids are made more negative, the resulting plate current decreases more than the combined Frc and Frs functions will account for. This is shown on the screen curves of Figure 5. Notice how the fitted curves (red lines) sit too high in the mid region.

Therefore one last function must be included to account for the interaction between screen and control grid. I tried a few functions experimentally and found the following to work reasonably well:

Fsc = 1/(1-(kcs*(Ec-EcRef)*(1-Es/EsRef)))

where EcRef and EsRef are the reference values of control and screen grid voltages mentioned earlier, and kcs is a value between 0 and 1 that is manually adjusted for best fit.

For the GU50 example I manually adjusted kcs for the best fit. The optimum value is:

The improvement is shown in Figure 6.

The model is now:


If this model is to be used in a situation where plate voltage can go negative, then it should be enclosed inside of a Max() function to force Ip to zero for negative Ep values. Hence the final model is:


And there it is. It requires the calculation of a total of 14 parameters, though the calculations are very simple for the most part. I don't include EcRef or EsRef in the total because they are simply reference points on the published data and it's trivial to pick them.

Summarizing the parameters for the GU50, we have:
EcRef= 0
EsRef= 250
g0= 0.006963
kp1= -7.0253
kp2= 14.76
kp3= 4.8470e-5
kp4= 3.1618e-1
kt1= 24.05
kt2= 4.35
kc1= 3.3616e-4
kc2= 3.6311e-2
kc3= 1.0061
ks1= 0
ks2= 4.6688e-3
ks3= -0.16667
kcs= 0.09

At this point the plate current model does not account for non-zero suppressor voltage. To account for this, would require info not normally available in the published data. But if there is any interest in this, I could take a look at it.

I have not developed any model for control grid current or screen grid current. I'll probably take a crack at them eventually. In the meantime, an existing model (Koren or Ayumi) will have to be used for these.

Since I've been using this plate current function only on a spreadsheet for doing loadlines, I don't have it coded into a Spice model yet. However, it should be straightforward to take the above formulas and create the Spice model.

Hopefully I haven't made any errors in transcribing the above formulas.

Robert Weaver 15th October 2013 09:58 AM

6V6GT parameters
3 Attachment(s)
The GU50 model in the previous post worked out quite well. I've also been working on a 6V6GT model which is a bit more difficult because of the rather severe kinks in the plate curves just above the knee voltage. Here are the parameters that I've come up with.

6V6GT Parameters
EsRef= 250
EcRef= 0
g0= 2.9777E-03
kt2= 2.2108E-01
kt1= 2.2138E+01
kp1= -2.6959E+01
kp2= 3.0208E+02
kp3= -6.1546E-05
kp4= 1.7709E-01
kc1= 8.8589E-04
kc2= 5.9183E-02
kc3= 1.0066E+00
ks1= 5.8261E-06
ks2= 2.5991E-03
ks3= -1.3870E-02
kcs= 0.2000

The attachments show how it fits. As you can see, at low plate voltages and very negative grid voltages, the model diverges significantly from the actual data. However, I believe that the important regions of operation which would follow a load line from upper left to lower right are still fairly accurate.

jazbo8 15th October 2013 12:04 PM

Awesome work! A lot to digest here, it seems to be a purely empirical approach but if it works, who am I to argue :) I would like to bring your attention to a paper by the good professors at University Hamburg, I still like the idea of a "physically-motivated" model, i.e., one that relies largely on the underlying physical properties of the vacuum tube a la Child-Langmuir Law. In their paper, the basic technique IIRC, is based on surface-fitting the plate and the transfer characteristic curves while adhering to the physical model.

Obviously, for a pentode, it will much harder to do, since there is the screen voltage/current to content with as well. Anyway, please take a look at the paper and see if it makes any sense to incorporate the physical aspect into the curve/surface fitting routine.

cogsncogs 15th October 2013 03:50 PM

jackinnj 15th October 2013 03:59 PM

1 Attachment(s)
Do I have the parentheses nested properly, I'm getting different results:

Robert Weaver 15th October 2013 09:28 PM

My apologies. I made typos when transcribing the Frc and Frs formulas. They should be:

I had inadvertently used Ep instead of Es and Ec.

I also made a typo in the Ip function. I accidentally had a multiply symbol instead of addition between Ep and kp2. The correct formula is:


Thanks for pointing out the problem. I went back and edited my original post to correct the errors.

In your Fsc formula, you have one extra closing parenthesis immediately following EcRef. It should be:

Fsc = 1/(1-(kcs*(Ec-EcRef)*(1-Es/EsRef)))

Robert Weaver 16th October 2013 10:56 AM


Originally Posted by jazbo8 ( seems to be a purely empirical approach but if it works, who am I to argue...

Yes, I'm afraid it's completely empirical. Though, I normally prefer to work with a model based on the theoretical equations, and then make small adjustments as necessary. However, that appears to be how the current popular models were derived, and they didn't seem satisfactory in certain respects. So, I had to make the decision of adding some ugly kludges on top of the existing models, or simply scrap everything and start over using a different approach. I decided to try the second approach. Only time will tell whether it was the right decision. :)

Thanks for the link to the Dempwolf Zölzer paper. I haven't seen it before, and will give it a good read through.

All times are GMT. The time now is 11:05 PM.

Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2018 DragonByte Technologies Ltd.
Resources saved on this page: MySQL 18.75%
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2018 DragonByte Technologies Ltd.
Copyright ©1999-2018 diyAudio