Browse by Topic

# Building a Pulse-Forming Network with the Wolfram Language

In many physics experiments, a voltage or current is desired that quickly rises to a particular value, stays there for a duration of time and then declines rapidly, giving the so-called flat-top profile or square wave.

This has multiple applications in many physics- and electrical engineering–related systems, including radar, kicker magnets for accelerators and really any time a pulsed uniform voltage or current is needed. In my case, I needed this capability for a metal vapor vacuum arc plasma source that I’m using to study the properties of metallic plasmas in strong magnetic fields.

In this blog post, I’ll walk you through some pulse-forming network theory along with how I used the Wolfram Language to quickly and easily design a cost-effective pulse-forming network by using circuit theory, the interactive Manipulate function and data from an electronics vendor to explore practical design options. This will also show off the Quantity function in the Wolfram Language, which has proven helpful and easy to use.

## Capacitors Discharging

When people consider pulsed-power applications, the natural and easy solution that comes to mind is to connect a capacitor in series with the load, charge it and then discharge it. Assuming the capacitor’s inductance and series resistance are low, a large current can be created, but that current will rapidly (and exponentially) decay.

 ✕

What do we do to “flatten” the peak? Increasing the resistance or capacitance will stretch the previous figure horizontally or vertically, but varying the resistance or capacitance will not alter the shape of the discharge curve.

It is worth pointing out that there is one (conceptually) simple solution here: to use a very, very large capacitor. This capacitor will discharge only a minor fraction of its stored energy over the desired pulse width and use a switch to disconnect the circuit after the desired duration.

## What about Using a Switch?

While this indeed would produce a very flat profile, it requires capacitances so large that only electrolytic double-layer capacitors (also called supercapacitors) would work. Supercapacitors often have maximum voltages of around 2.7 V, requiring a large number of them in series to get up to a larger voltage. Placing capacitors in series adds the respective equivalent series resistance (ESR) of each capacitor as well as their inductances, often severely limiting the peak current.

Semiconductor switches are also limited in their ability to stop flowing currents, although top-of-the-line transistors, like the IXTN660N04T4 (~\$21), can switch around 700 A at approximately 40 V. That may work for some applications like an electromagnet system that requires modest voltages but high currents, but for most applications, this will be prohibitively expensive and still have poor performance.

## The RLC Circuit

Getting back to the question “How do we ‘flatten’ the peak of a capacitor’s discharge curve?”, the answer is simply to use inductors. Many inductors are merely wound coils of wire, and inductors tend to resist the change in current through them. They do this by storing the electrical energy in the form of a magnetic field. This is commonly compared to a capacitor, which stores electrical energy in an electrical field.

One of the most famous and important circuits of all time is the resistor–inductor–capacitor (RLC) circuit. If the resistance, inductance and capacitance are tuned properly, you can get resonant behavior in which the capacitor and inductor are alternately charging and discharging.

Wolfram|Alpha has some powerful functionality that simulates an RLC circuit and computes its properties:

 ✕

## Fourier Series

This sinusoidal charge-discharge curve is really important and very useful to what we are building up to. In mathematics, you may have heard of a Fourier series, the idea behind which is that any harmonic function can be closely approximated by a series of superimposed sinusoidal functions.

The pulse shape we are trying to generate is a square wave, and therefore we can use the Fourier series deconstruction of a square wave (or at least the first N terms) to determine a number of RLC circuits in series that approximate a square wave when discharged:

 ✕

## The Faults in Our Fourier Series

One important note is that using the Fourier series approximation to produce a perfect square wave has one serious downside: the Gibbs phenomenon, which more or less says that the edges of the approximation will have significant overshoot, and adding more terms does not improve this issue. Some bright physicist determined that looking at the Fourier series of a trapezoidal rather than a square wave suitably solved these issues.

## Finally! Pulse-Forming Networks

All right, so that’s probably enough theory. To recap, simply discharging a capacitor into a resistive load will give us a sharp rise with exponential decay, and adding an inductor will turn that discharge curve into a sinusoidal shape. Superimposing multiple sinusoidal discharges can create a pretty good approximation to an ideal “square” discharge curve.

How should we arrange these capacitors and inductors? As it turns out, there are a lot of different forms of pulse-forming networks, usually known by a letter. Many of these have a particular advantage; for example, the type D pulse-forming network uses capacitors of identical capacitance:

Given these variations, you’ll have to consider your application in great detail to decide which one is best, and that usually comes down to a decision of practicality (i.e. cost and ease of construction).

## Practicalities of Building a Pulse-Forming Network

Depending on the voltage, current, rise time and pulse-width requirements of a particular application, difficulties can be found in a number of places. For fast rise times, the issue may be switching (a topic outside the scope of this blog), or even the inductance of the capacitors. For high-voltage applications involving high charge transfer, finding suitable capacitors may be very difficult and expensive. It really depends on the application as well as available capacitor and switching technology. One last note: for most practical purposes, there are few benefits to using more than five sections.

## Designing a Particular Pulse-Forming Network

For the remainder of the post, we’ll talk about pulse-forming networks in the context of a particular project: an upgrade I am making to a metal vapor vacuum arc plasma source I built to study various aspects of metal plasmas.

For this application, the switching is performed by the initiation of a vacuum arc by a Marx generator—if you’d like an article about Marx generators, mention it in the comments—so switching is not an issue. The main design considerations would be that there should be as fast a rise time as possible; that the current should exceed 100 A throughout the pulse; and that the homogeneity should be reasonably high. The voltage is modest—no more than 800 V—and many film capacitors exist that can satiate the desired low ESR and equivalent series inductance (ESL) requirements.

The major design difficulty will be the proper arrangement and choice of capacitors and inductors (necessarily a tradeoff between complexity, cost and performance), and the major implementation difficulty will be in making the inductors. Commercially available inductors that can handle the expected peak currents—possibly in excess of a kiloampere—are prohibitively expensive, but making a large coil of thick wire will produce an inductor with high-peak current-handling capabilities on a budget, so long as the needed inductance is low. The desired rise time for this application is less than 500 ns and the pulse width, counted as the period where the current exceeds 100 A, is desired to be around 500 ms.

One final caveat: a little while ago, I picked up two giant power film capacitors in an auction. They are individually able to deliver a surge current of over 20,000 A, and for cost reasons, I’d like to use them rather than get all-new capacitors.

 ✕

## A Note about DIY Pulse-Forming Networks

As far as I am aware, there is only one report on the internet of someone making a DIY pulse-forming network to construct an amateur radar assembly.

While the application considered here is not too complex, there are many circumstances, including very fast rise times, large charge transfer and high voltages, that make professional pulse-forming network design challenging. That being said, there’s no reason why they are any more difficult to build than various other resonant circuits.

A word of caution: any of the things discussed here could be potentially dangerous if mishandled, so don’t play around with high voltage. The voltages discussed here are potentially lethal and should only be handled by competent, cautious and safety-aware people.

## The Type B Pulse-Forming Network

When considering the aforementioned requirements, the natural first choice is the type B pulse-forming network. It is typically the choice when you don’t want/need mutual inductance between the various inductors, and it has the neat feature of having two capacitors (the leftmost ones) that have reasonably similar capacitances, where my two 250 µF capacitors could go:

This is where the first difficulty is encountered: capacitors are typically rated at a particular granular capacitance: 250 µF, for example, not 263 µF. There are capacitors that have odd capacitances, but they are sufficiently unusual that we have to design around the available capacitances:

 ✕

This diagram shows the ideal ratios of the capacitors, and right off the bat it doesn’t look to be too bad of a fit. The middle capacitor would need to be 300 µF, followed by 350 µF and 800 µF, respectively, but it’s not that off. If you wanted to get really precise values, you could use multiple capacitors in parallel to form an equivalent capacitor of some fractionally higher value, but for this project you’ll soon see why that introduces unreasonable complexity and cost.

So how would this circuit perform? When using the previous diagram along with known load parameters, you get this circuit I simulated using Falstad:

 ✕

When charged and discharged, it produces the following discharge pattern:

 ✕

While there is good homogeneity, there are four downsides to this arrangement:

1. The rise time is too slow, on the order of several thousand nanoseconds.
2. The complexity is high, involving five large capacitors and five custom inductors.
3. The increase in stored energy over the old system (straight discharge of the 2 × 250 µF capacitors into load) is only about four times as much.
4. The cost is high for what it’s accomplishing, around \$200 just for the capacitors (before tax and shipping).

## Rethinking the Configuration, Computationally

Now we can get into the real “meat” of this blog: an interesting electrical engineering problem that is both theoretical and practical. Can the Wolfram Language help us make a cost-effective decision?

To do this, let’s get some real-world data about the price and capability of existing capacitors. Then we can create a circuit simulator for these pulse-forming networks to give us some key information about the performance, cost and complexity of a circuit. Then we can have it simulate all possible circuits (within reason) and give us the top-ranked ones.

Easier said than done, but it’s a nice computational approach and might give us an unexpected result. It would be too tedious to go through and try to figure this out manually, but it will likely take a modern processor seconds or minutes to step through all the permutations.

I’ve found that the online electronics distributor Digi-Key has some of the best search tools, and they allow you to download large tables of data about their products. I went to their page on film capacitors and filtered out those with a maximum working voltage under 800 V, as well as capacitors with a capacitance under 500 µF. I then downloaded a CSV file of the remaining 151 capacitors.

## Importing and Cleaning the Capacitor Data

One of the best but rarely mentioned aspects of the Wolfram Language is that it’s great for scraping and homogenizing data. That’ll be handy as we import the raw capacitor data and clean it up:

 ✕

Here are the fields and the first capacitor:

 ✕

Let’s first filter out capacitors that aren’t in stock or require more than a four-minimum order quantity:

 ✕
 ✕

Only 46 capacitors are left. What about price? If a capacitor is too expensive, we shouldn’t consider it:

 ✕

Let’s consider capacitors with a price below \$125 because we will probably need two or three of them:

 ✕
 ✕

As a final step to pare down the list of capacitors, let’s allow only one capacitor per capacitance class. The ESR of all of these options is quite low, so it’s not an important factor:

 ✕
 ✕

Finally, let’s get rid of the data we don’t really care about and get our final dataset:

 ✕
 ✕

An interesting way to visualize the cost effectiveness of these capacitors is to examine their capacitance per dollar. In this respect, one capacitor in particular has a large advantage: the B25690A0128K903 offers 1200 µF for only \$60.76:

 ✕

## Pulse-Forming Network Configuration

In order to optimize for complexity and cost, we’re going to consider a two-section type B pulse-forming network, with one caveat: to get very fast rise times, the two 250 µF capacitors will be attached in series with the load along with a current-limiting resistor. The circuit diagram looks like this:

 ✕

The load is on the left, connected via a current-limiting resistor (500 MOhms) to the two 250 µF capacitors I already have. On the right is the behemoth 1200 µF capacitor (that we established as the most cost effective), along with a 130 MOhm current-limiting resistor and 250 µH inductor, which shapes the rise of the pulse. When discharged, this circuit produces the following output over one millisecond:

 ✕

Is this a square wave? Not really, but it keeps the current at a single value (510 A) +/– 2.5% for one millisecond; take a look at the current rise:

 ✕

The current rises to the central value in under 180 ns. And this configuration costs all of \$61… I think we have a winner.

## Making a Custom Pulse Inductor

The last thing we’ll need to do is design a custom inductor. The design we figured out calls for a 250 µH inductor, and we’d like it to be able to handle some very serious current (1 kA+) for 30 ms, in order to have some safety margin. Looking at an American wire gauge (AWG) chart, we can see that any thick copper wire above 8 gauge will do:

 ✕

I have some short spare lengths of #0 AWG wire, so that’s what I’ll be using to make this custom pulse inductor.

At its core, an inductor is most commonly a coil of wire. There are publicly available formulas to calculate the inductance of a coil of wire, and we can use them to figure out how to make a 250 µH inductor. Wolfram|Alpha has a feature that allows you to calculate the inductance of a coil of wire:

 ✕

After some playing with it, we can get the parameters needed for a coil to supply the required inductance. The end result looks like this:

 ✕

## Begin Your Own Computational Journey

I hope you enjoyed this post. And as for my experiment to study the properties of metallic plasmas in strong magnetic fields that required a pulse-forming network? The results were primarily visual spectra of the metallic plasmas and measurements of their helical paths, which can have unusual instabilities and self-defocusing due to collisions. The pulse-forming network produced a reasonably homogeneous stream of plasma flow that reduced noise and uncertainty in the experiment.

I think pulse-forming network design is interesting because of the union of mathematical theory, physics and electrical engineering. The computational approach to finding optimal electrical components is powerful, and I’ve used it often in other scientific projects.

For those who are interested, here are links to two helpful sites I used for this project:

• Falstad—a great (free) circuit simulation tool
• Digi-Key—an electronics components distributor with great component data
 Visit Wolfram Community or the Wolfram Function Repository to embark on your own computational adventures!