The new generation of Solid State Tesla Coils
Project Goals:
>1m Sparks, 400kHz

QCW Tesla Coil

The QCW, or Quasi-Continuous-Wave DRSSTC is a variant of the Double Resonant Solid State Tesla Coil and is characterized by its ability to make long, straight sparks usually more than 10x the length of its secondary. The QCW was first conceived and implemented by Steve Ward in around 2009/10 or so, around half a decade after the invention of the DRSSTC (generally accredited to the work of Steve Ward, Steve Conner & Terry Fritz). To date (2013), it remains the newest and perhaps most interesting Solid State Tesla Coil variant. With the success of my previous electronic coils (also see my SSTC 1, SSTC 2, DRSSTC 1 and DRSSTC 2), building a QCW is the logical next step.

However, the design and construction of a QCW is generally regarded to be more challenging and difficult than any other SSTC variant, and there is not much information online on its principle of operation, construction details etc. Thus my goal for this project is two-fold. [1] To create a comprehensive document on the operation, design and construction of a small and relatively simple QCW coil, and [2] to serve as a learning project. I expect to face difficulties throughout the project, but I know it will be a good learning experience.

At time of writing (mid-Oct 2013), the QCW DRSSTC is still indeed somewhat of a rarity. As far as I know from forums and such, Steve Ward remains the leader in this field with his excellent bus-modulated QWC (the original, which plays to his electric guitar), as well as Zrg's impressive 'Junky QCW' (which holds the record for longest spark length of 230cm with a 25cm tall secondary). I've created a small list of what I would call the pioneering few QCWs in the world at the bottom of the page. After browsing various forums, there seems to be around 10 or so of such coils in existence. This should make my QCW 1 to be one of the first in the South East Asian region, or even in Asia! Finally, I note that there are several variants of QCW coils, including the newer 'phase shifted' bridge topology. This project focuses more on the original bus modulated QCW, but I will also explain some of the newer methods of QCW operation below.

Update (Sept 2014) - QCW 1 has been finally put together and has achieved its original goals of 1m (40") of spark with a 5.5" secondary, which is greater than 7x secondary length, all with just a 150V ramp. My components have the ability to go up to 300V or more, so the new stretch goals for the project will be 10x secondary length of 55 inches (140cm), and then to fit it all together in a nice enclosure.

Thanks for visiting my page! If you have any questions, wish to share your projects, or feel that my projects have inspired you in one way or another, feel free to email me at loneoceans[at]gmail(dot)com. I'd love to hear about your projects too!

Page Contents

1. QCW Introduction
2. Constructing the QCW (DRSSTC)
3. Constructing the QCW (Buck Bus Modulator)
4. Results
5. Credits and Links

Specifications for QCW 1 (updated Sept 2014)

- IRGP50B60PD1 Dual Full Bridge Inverter 'easyBridge v1.0'
- 12.8nF Mica 6kV 40Arms Resonant Capacitor
- 60N60C2D1 Dual IGBT + ISL9R3060 diode asynchronous Buck Converter
  > Might upgrade to dual 50B60 IGBTs with a FFH75H60S diode
- ATtiny45/85 for ramp generation and interrupter control
- 100A primary current (150A max)
- 100cm spark goal (140cm stretch goal)
- UD 2.7A, My own modification of the UD2 driver
- 9 x 14cm secondary (or 3" x 5.5")
- 60-degree conical primary
- 8 x 2" Spun Toroid
- About 400khz secondary frequency unloaded
- Max 340VDC on the bridge (240V rectified)
- 10 - 20ms ramp time
- Large bus capacitance (>= 6800uF)


Here are the schematics for my QCW 1. Note that these are still experimental and subject to more changes!

Universal Driver 2.7 for DRSSTC Driver and my QCW Buck Controller V1.0

Schematic for my new 8-IGBT bridge layout

For much more videos and images of the coil in action, please scroll down to Results!

 25 Oct 2013 

1. Introduction and Goals

The newest frontier of Tesla Coils in the modern age is the QCW DRSSTC, capable of generating huge, long sparks with some clever drive techniques. Having built several successful coils, I wanted to try my hand at a more advanced project. In this writeup, I assume the reader has a good understanding in basic DRSSTC operation. For more information, do check out my other DRSSTC pages.

What is a QCW and how does it work?

A QCW (Quasi Continuous-Wave) Tesla Coil is a variant of the Double Resonant Solid State Tesla Coil (DRSSTC), characterized by long-pulse durations and a high impedance primary circuit. The input of the inverter is fed via a gradual ramp of the bus voltage. This results in what appears to be a very efficient spark propagation, leading to very long sword-like sparks with incredible spark lengths compared to the secondary coil.

Pioneering QCW work by Steven Ward, Jan 2010, which has been refined and improved over the years.

The first QCW was first built by Steve Ward in 2008/09. The principle of operation was based on the observation that long straight sparks could be obtained in Vacuum-tube Tesla Coils when they were running in staccato mode.

In this mode, the VTTC is powered on in sync with the rising quarter input AC wave-form from the mains. The above diagram shows how the interrupter (blue) signal might look like, with the bus of the inverter powered by the rising slope of the mains AC wave. I demonstrated this principle in my Ramped SSTC, producing similar spark characteristics. This led to the hypothesis that gradually increasing the bus voltage throughout the duration of the spark would be conducive for huge spark growth. In a VTTC or a ramped SSTC, we are limited by the period of the AC wave, thus placing a limit on the maximum ramp duration and how big we can 'grow' our spark. The second observation was that coils running at 300kHz or higher generate sparks that tended to become straighter and straighter. Combining these two ideas together produced the QCW.

In a classic DRSSTC, the primary is energized for only several RF cycles (around 10 or so). Due to the resonance and low-impedance of the primary circuit, primary current rings up quickly to several hundreds of Amps in a matter of several hundred micro-seconds (e.g. 70-150us in my DRSSTC 2). In a QCW, the rise time occurs over several milli-seconds instead (e.g. 10 to 20ms), which is some two orders of magnitudes greater. In order to prevent the current from ringing up too high, a high impedance primary circuit is required. This translates to a primary coil with large inductance (this results in high coupling) and a small resonant capacitor. The primary current is usually kept around 100 to 200A (limited by the bus modulator). The highest at time of writing is Zrg's coil running at 300A with a dual full-bridge making 2.3m sparks.

According to simulations and some measurements carried out by Steve Ward, the actual voltage produced at the top of the secondary coil doesn't exceed more than several 10s of kV (around 50 - 70kV). It appears that the streamer grows well as energy is pumped in over the course of each pulse duration, and the spark growth is guided by the electric field around the toroid.

Thus to summarize, the QCW is characterized by:

- Resonant frequency of at least 300kHz (higher than 400kHz and it becomes more and more difficult to switch the IGBTs)
- High impedance primary (coupling of >=0.3, many turns for primary and with a small tank cap of around 8 -  15nF)
- A gradual linear bus voltage switched by the inverter over a 10 to 20ms duration
- Relatively large toroid to stabilize the frequency deviation caused by a large streamer (acts to increase capacitance of secondary and lowers fres)

There are currently three main methods to achieve the QCW effect. The first method is via some sort of bus modulator, which needs to be capable of feeding a linear voltage input to the bridge inverter at 100 - 200 Amps. This is implemented as a high power buck converter. The big challenge is that the buck converter needs to be able to supply the current required by the bridge, and the physically large filter components (inductor and capacitor) required. However, if a suitably powerful buck converter can be made, then we can potentially produce the best results since the inverter transistors are soft-switched. Therefore this method is also best suited to scaling up.

The second method is via a phase-shifted bridge. In this topology, the inverter bridge driving the primary coil is not working in perfect opposition, but rather in a modulated shift over time. This achieves the same gradual voltage rise across the primary circuit, and consequently does away with the need for the physically large buck converter. However, half of the transistors of the bridge are being hard-switched (versus zero-current switching in the previous method), which requires a very robust bridge design with proper thermal management due to much higher switching losses. Consequently, the transistors are being driven to their edge. Steve and Phillip have both tried this approach and strung several bridges (and primaries) in parallel to handle the hard-switched current. This uses many expensive transistors but is known to produce good results in a compact size. In the phase-shift topology, there is a limit to the current handling capability of the hard-switched transistors, making scaling up challenging (it seems like a 16-transistor bridge is the largest at the moment). One way this can be improved is to alternate the hard switching among the transistor pairs. This method requires some clever circuitry and arguably more complex to implement.

The third method is Delta Sigma modulation proposed by Steve Conner, whereby a conventional DRSSTC controller with a over-current detector is used. This over-current detector's reference comparator is fed a ramp input, so the result is more like a 'PWM' control and the current ramps up proportionally to the over-current ramp signal. However, there hasn't been any proper working models demonstrating this concept at the time of writing. Note that this method ramps the current up linearly (with a linear ramp), as opposed to a linear voltage ramp for the other two methods.

In order to keep the costs of the project down and to make the circuit as simple and elegant as possible, I have opted for the buck-converter topology. The difficult part now lies in building a suitable buck converter, since the rest is no different from a normal DRSSTC (other than some parameters).

QCW 1 Project Goals

Because this will be my first QCW Tesla Coil, I plan to keep the design as simple and straightforward as possible, whilst not being overly ambitious in terms of is performance for the purpose of reliable operation.

Project Goals

- Produce sparks of at least 1 meter (39")
- Using a secondary coil of around 6"
- Show reliable operation
- Planned running frequency of 0.5Hz to 5Hz
- Operate at 300V max
- Be reasonably compact

With the goals set, it is time to get started!

2. Constructing the QCW - High Z DRSSTC

 October 2013

The QCW (buck driven design) can be broken down into two large components: the DRSSTC, and the Bus Modulator. The first part is constructing the DRSSTC. A QCW calls for a high impedance (Z) coil. Building these two components separately allows me to test the system in two major modules.

Secondary Coil

The goal of a QCW coil is to produce very large sparks from a small Tesla Coil, so this motivated me to design a secondary which was reasonably small, yet maintain a resonant frequency around 300 - 400kHz which is optimum for spark growth. I had some spare 3" PVC (which has a 3.5" Outer Diameter) pipe around, so I decided to use that for my coil form. I also decided to use a 8 x 2" aluminium toroid for the coil. Using JAVA TC, I found that winding the coil with AWG 32 for a length of around 5.5 inches would give me a resonant frequency of around 320kHz with the topload. Therefore, the secondary coil was wound by hand using a simple makeshift coil winder I built with some scraps of wood.

I also cut out some around acrylic pieces (6mm thick) which I then threaded with 2-56 holes which screw onto the coil as end caps! These were later threaded in the middle to accept a 1/4-20 bolt where I could screw the secondary to the base and the toroid.

The winding proceeded smoothly and was done in little over half an hour. I gave the coil 3 coat of clear polyurethane. Now it turned out that the insulation of the wire was thicker than I expected and therefore quite significant, and the resonant frequency of the secondary coil with toroid turned out to be closer to 400kHz! This was somewhat out of spec and I might need to make a new coil form if it does not perform well. However, with a simulated 3 foot long wire as a streamer, the streamer capacitance brought the resonant frequency of the secondary closer to 320kHz. One good thing about the higher frequency is that more power can be put into the spark, and that higher frequency usually leads to straighter sparks. I might make another lower frequency coil to see how that performs.


Primary Coil

For the Primary Coil, I designed and laser cut supports which will accept some normal stranded 14 AWG wire I had around. The wire is slightly thin, but given the relatively low (in DRSSTC land) peak currents of 100A that I plan to run the coil at, along with the low duty cycle, it should be sufficient for now.

It's great to have access to a laser cutter! The primary coil was designed with the following specifications:

- 5.1" Innermost diameter
- 60 degree inverse conical shape
- Capability of up to 12 turns for the primary
- Press-fit accepting 14 AWG stranded wire from HomeDepot
- Around 7.4" diameter at height of 1.85" for the 10th turn
- k of around 0.33 for 9 turns

The result of this gives me a coupling coefficient of around 0.32 to 0.35k depending on the number of turns I decide to use eventually, which is great for a QCW.


Coupled with my 12.8nF tank capacitor, the resonant frequency can be adjusted all the way down to around 270kHz at turn ~12, and anything higher to match! For example, turn 8.5 gives me a primary resonant frequency of around 360kHz and 8 around 390kHz. The primary coil turned out very well (acrylic piece were glued with a solvent acrylic glue, probably some sort of chloromethane).

The completed primary coil with 60 degree inverse cone geometry and 14AWG wire.

As mentioned, the first secondary coil I made turned out to have a higher than expected resonant frequency. This can be fixed by winding a new coil, adding some capacitance (e.g. larger toroid), or alternatively, just tuning the primary to a higher resonant frequency.

For tapping the primary, I found it best to simply cut segments of the insulation on the wire off. I also made a brass tap which allows me the clamp the primary return wire on. Finally, another thing to note about QCWs is the characteristically low top-voltage. According to measurements done by Steve Ward, it seems that the voltages on a QCW are only on the order of several tens of kV (50 - 70kV), and the amazing spark length is caused by 'growing' the spark. This allows us to use very high coupling without any flashover. The high coupling also causes the poles of the resonant system to move apart more - more on this later.


The Resonant Capacitor

The resonant tank capacitor of a DRSSTC is usually made from several small polypropylene film capacitors (hence the name Multi-Mini Capacitor or MMC), usually of the CDE 940/942 variant. For QCW, the tank capacitor needs to sustain long pulses and several thousand RF cycles, and therefore need to be low-loss and have an excellent RMS rating. In addition, the high impedance primary (to keep the primary currents reasonably low throughout the long pulse duration) allows the use of a lower voltage capacitor. However, it must have high RMS current handling capability since we will be running several thousands or more of RF cycles per pulse.

Thus for a QCW, we need a tank capacitor of the following features:

- High RMS current handling
- Generally low capacitance to increase primary impedance

A capacitor of 8 to 15nF is typical in QCW coiling use to keep the primary impedance low. Polypropylene film capacitors will probably be ok for QCW use but they can get hot due to the high RMS currents at high duty cycles. The best capacitor of choice is therefore the Mica capacitor. However, they are difficult to find and expensive! Fortunately, I managed to pick up a few of them at a local swap-meet for $5 each! These are very nice 20A RMS capacitors, being 10nF and 18nF at 4kV and 2kV respectively. Together, they form a 40RMS 12.857nF 6kV capacitor bank, measured at 12.87nF.

12.87nF Mica resonant capacitor rated 40A RMS at 6kV, with full bridge inverter (this was later replaced with a bigger bridge).

The capacitor measured out at 12.87nF as expected (Mica caps are usually made with very high accuracy). Brass bars were machined to hold them together and act as terminals.


Measuring the Resonant Frequencies

I decided to do a quick test to measure the actual resonant frequencies of my system.

First up was testing the resonant frequency of the secondary coil with the slightly-smaller-than 2x8" toroid in place. As mentioned it turned out that the resonant frequency of the unloaded secondary seems to hover around 406 - 409kHz, which was higher than I had expected. However, added a simulated streamer (wire) at the top about 2.5 feet long dropped the resonant frequency to 321-326kHz.

Next I hooked up the MMC to the primary and proceeded to test the resonant frequency of the primary with the secondary coil in place. At turn 9.5, the primary showed a resonant frequency of 323kHz. This increased to 355kHz at turn 8.5.


Finally, I sent a square wave signal to the primary and measured the resonance of the whole system by hanging the scope probe in the air attached to a piece of wire to find the resonant frequency of the system at turn 8.5 on the primary. This gave me 384kHz. The values here are documented for reference.

New Toroid (2014)

I managed to get a new toroid which measures 2.1" x 8", larger than the previous 1.9" x 8" toroid, which looks nicer, and helps also in terms of lowering the secondary resonant frequency.

This gave me a secondary resonant frequency (with pri coil in place) of about 392kHz. Two of the same toroids stacked on top of each other gave 361KHz, and adding a half meter long wire to simulate streamers dropped the frequency down to 339kHz. The primary should resonate at around 390kHz at turn 7.5. With a k = 0.32, this should give a lower pole at 340kHz. As far as tuning goes for a QCW, I'm not exactly sure what the best way is so I'll keep this section as a reference for now.


The Full Bridge Inverter (Old Version)

*Update 2014 - the single transistor full bridge has been updated to a better dual-bridge. See below for the new inverter*

The QCW is simply a variant of the DRSSTC. Since we're looking to maximize power for a QCW, a full bridge makes the most sense (although there is no reason why it wouldn't work with a half bridge). For my full bridge (I'll be interchangeably using the term inverter), I decided to go with the tried and tested ultra-fast FGA60N65SMD IGBTs in a TO-247 package. They are especially fast IGBTs even at 300kHz+, which are important since unlike normal DRSSTCs which run from 5 to 10 RF cycles, QCWs run for thousands of cycles, and heating losses (per burst) become a big issue. I have also used these IGBTs in my DRSSTC 1 with fantastic results and very reliable operation (no failures yet!) so I have decided to use these IGBTs. The real reason however, was because I bought a bunch of them and had them on hand :-).


Eagle schematic and board layout for the TO-247 Single H-Bridge

An important part about making the bridge circuitry is to reduce the inductance of the bridge so that during the high current switching events, there will be as little voltage spikes as possible. For this, I designed and etched a double-sided laminated PC board which should keep the inductance as low as possible! I designed the simple bridge in Eagle. Its features include:

- Laminated bus for low inductance
- Snubber capacitor (CDE 940C type 1600V 0.22uF capacitor)
- Integrated current transformer (300 turns with 47 Ohm giving 0.157V/A) via BNC
- 5.1R gate resistors and 1N5819 reverse diodes

The input of this will come from the buck converter. With this all designed, I printed it out and etched it! It was my first time doing a double sided home-brew PCB so I made sure to line up the two sides carefully. The result turned out very well.

The etching was done by printing the PCB layout onto glossy photo paper, then transferring the toner via a heat laminator machine (custom built from a laser printer heater). It was then etched in ferric chloride.

I had a spare 220nF 1.6kV CDE capacitor lying around so I used that as the snubber capacitor to catch any extra high voltage spikes. The IGBTs were screwed down with 4-40 hex bolts onto a copper heat-sink with integrated fan. Note that I soldered the copper traces completely to increase its current carrying capacity. However, they should do 100A just fine even without the soldering. Finally, I soldered flexible silicone wired to the bridge to complete it. The bridge is complete.


Gate Drive Transformer (Old Version)

*Update 2014 - the single transistor full bridge has been updated to a better dual-bridge with new GDTs. See below.*

If you have been familiar with my SSTC work, you will see that I have once again employed the trusty GDT for gate drive.

Most important thing is to find a suitable core. Bayley gave me a medium sized ferrite ring which he claimed used to drive some large IGBTs before. I tested them with around 7 turns using a signal generator (square wave at around 320kHz). The output is shown on the scope. As long as it is reasonably rectangular looking, it should do just fine.

Since I was going to be driving a full bridge with this GDT, I decided to use the trick of simply wrapping the core with an ethernet cable, which conveniently has 8 wires inside already. The GDT was then soldered to the bridge, with care taken to ensure the correct phasing of the gate drive! I cannot reiterate how important this is.

Finally, the bridge was assembled together with the GDT. Notice that I marked one side of the leads white to make sure that I didn't mix up the polarity and phasing! The GDT was then screwed into a piece of plastic glued to the side of the heat sink.

For the control side, I'm using a standard DRSSTC driver with primary feedback. Feedback is taken from a 175:1 primary current transformer wound on two cascaded ferrite cores, for both phase lead (100:1) and OCD (175:1). The on-time is simply controlled by the duration of the ramp, and will be in sync with the buck converter.

Above you can see the feedback current transformers in my older 2013 setup (in its junky looking wooden platform). For good feedback, I wanted around 1A of feedback current, hence justifying the choice of a 100:1 transformer (versus say 1000:1 in a conventional large DRSSTC). This is also important for starting up the QCW because at the beginning of the pulse, the bus voltage is quite low, on the order of 30 to 40V. Combined with the low primary impedance, the primary current will begin much lower than a conventional DRSSTC.


The New Dual Bridge Inverter (2014)

Work stopped for a few months on the QCW project, and I wound up using the full bridge I built earlier for other projects. I decided to finish the project in mid-2014. After looking at all my parts again and with more experience, I figured that I would be able to push my coil to even higher currents than 100A, so I decided to simply re-build the bridge with a new dual-IGBT setup. This was also something I wanted to try, given my good experience with some of the great Warp2 series IGBTs from International Rectifier.

When browsing around the Russian tesla coil forums, it was clear that the TO247 Warp2 IGBTs used by Barmaley and Zrg in their QCWs were doing great, in particular the IRGP50B60PD1 IGBT. Both of them had achieved close to 1.5m sparks with a single full bridge at around 150A, and both of them were pushing 2.2m sparks or so with a double H bridge running at 300Apk. Frequencies ranged from 420kHz to 320kHz. Zrg tested these IGBTs to failure at around 200A.

After some planning, I designed a came up with a new bridge design which I have dubbed 'easyBridge v1.0', which allows the IGBT legs to be directly soldered onto pads, with on-board diodes and gate resistors, as well as snubbers, efficient layout, MMC discharge resistor and a primary protection capacitor. This was designed to fit a common 10 x 12cm heat-sink. The solder-on pads should also make replacing the IGBTs easy if required.

I tapped holes into the heat-sink and assembled the bridge together. Gate drive is provided by two GDTs with a 6:5 primary : secondary ratio for 20V gate drive with 24V on the primary. This will also hopefully allow me to reduce gate drive power to a manageable level.  Finally I cut out some acrylic supports for the GDTs. One component not pictured is the bypass polypropylene film capacitor from the negative bus to the grounded heat-sink. I'm happy how colorful the bridge turned out to be.

For the DRSSTC driver, I used my version of the Universal Driver V2.7 which I have improved on and is based on Steve's original UD2. I won't go into the details of the driver in this page, but it features a beefy gate drive with phase lead and over current protection. However, since it is driving heavy a large amount of IGBTs, I found that I had add 1000uF of capacitance on the 24V rail to prevent the voltage sagging down too much during each drive. I also used a beefy 2A 24V SMPS to provide power to the board (instead of my usual 18VAC 1A transformer). This gave me reliable gate-drive operation. Feedback is still via the same 100:1 and 175:1 CTs as described above.


Testing the DRSSTC (2013)

With all the components for the DRSSTC part complete, the first thing to do is the test the phasing of the bridge, and to make sure that the bridge and the driver work! This test was done with a 0-30V DC power supply.

For this, I quickly wired up the driver to the bridge. The input of the bridge was given around 13VDC from a current limited power supply and the input to the driver was simply a sine wave at around 380kHz. The output of the bridge shows +- 12.8V and seems to be working correctly (pardon the noise on the scope; a fake non-shielded scope probe was used)! The coil made very very tiny sparks to a grounded clip, showing that the basic bridge and driver are working as expected. I'm using the same interrupter as my DRSSTC 1 and DRSSTC 2 coils for now.

With the coil working fine, I plugged it into a 60V power supply with a small bus cap. At turn 8.5 on the primary, the coil resonates at around 340kHz (seems to be lower pole) producing small sparks. This was controlled using my ATtiny85 interrupter and buck controller - the little circuit board with variable resistors attached. All seems to be going well!


Testing the DRSSTC in 2014

The project was put on hold for a while since I got busy with other things, but after moving to a new apartment, it was time to get the project back on its feet. First up was kicking the dust off the system. I re-did some resonant frequency measurements, recorded here as a reference.

Secondary alone with single toroid - 408kHz
Primary alone with no secondary - 392kHz @7.5, 358kHz @ 8.5, 321kHz @ 9.5

Primary + Sec, Turn 8.5, primary frequencies - 327, 410, 457kHz (pole, node, pole)
Primary + Sec, Turn 7.5, primary frequencies - 340, 409, 482kHz (pole, node, pole)
Primary + Sec, Turn 7.5 with 50cm 'streamer', secondary - 349kHz
Primary + Sec, Turn 7.5 with 1m 'streamer', secondary - 310kHz

Next was to test the system at low power again, and to tune the phase-lead on my driver to achieve as close to ZCS and ZVS as possible. This was done at 60VAC into the system with 170V on the bus (just a capacitor - we'll replace this with the bus modulator later on!). This was done with my new double bridge and my normal interrupter set at about 100us and 200 bps.

The coil springs into life! At this point, it is a fully functioning DRSSTC already! Now I removed the secondary and started to fiddle with the phase lead.

Because the coil will be switching thousands of RF cycles, we want each switch to be as clean as possible, and this is achieved with ZVS. The first blue trace shows the bridge output with no phase lead. As you can see, it is very bad with some 100V+ of switching spikes! This will not do! After trying out various values, I found the perfect adjustment. The pink trace shows the new bridge waveform - look how beautiful and clean it is, devoid of any switching spikes near higher currents. The coils is running at about 380kHz with a peak current of about 120A. With the DRSSTC done, on to the bus modulator.

3. Constructing the QCW - The Bus Modulator (Buck)

 November 2013 

The bus modulator is the heart of the QCW and what differentiates it from a normal DRSSTC. It is simply a high-current buck converter that feeds a rising voltage waveform into the inverter input. The input of the buck converter is rectified mains (possibly doubled for higher voltage) into a huge bus capacitor. The buck converter chops up the bus voltage (like PWM), and sends it through a low-pass LC filter. Since the filter is low-pass, all the high frequency switching associated with the PWM is removed and the average voltage of the PWM comes out. In this way, the buck converter is simply just a big class-D amplifier fed into a low pass filter.

Output LC Filter

The LC filter is a large filter that must be rated to run at the switching frequencies of the converter, and must be able to handle the peak current the bridge will pull from the buck converter. The current will be 100Apk+, so we need to design the filter to not saturate at these currents. I decided to use a 800V 20uF film capacitor I had lying around, which is usually used for IGBT snubbing. Next was to make a suitable inductor such that the combination would give me a filter with a cut-off at around 3kHz. This will allow the high frequency switching (order of several tens of kHz) to be blocked. My simulations gave me a low frequency of around 7kHz up to 25kHz, so I thought 3kHz would work well. I went with a powered iron inductor with L = 113.6uH (after measuring) to give a pole at 3.339kHz.

The inductor core was challenging to wind but I managed to complete it with 66 turns using AWG 14 wire. The core used was a Mag-inc T300-2D powered iron core. The very low permeability of the No. 2 mix allows the core not to saturate at 150A+. Many other people have also used a E-shaped ferrite core with a small gap but I wasn't able to find any E ferrite cores of suitable size.

Together with the 20uF output capacitor and the 8.8uF of snubber capacitors I have on my double bridge, the overall LC filter gives a cut-off frequency of 2782.5 Hz with Z=1.986 Ohms.

B-H curve for type -2 material

I also made sure my inductor would be able to handle all the current. From the data-sheet, the core has permeability of 10u_0 with A_L = 22.8nH/N^2, area of 1.68cm^2 and OD/ID/Height = 77.2,49,12.7mm, r = 31.55mm, path length =19.8cm . This gave me a calculated inductance of 99uH with 66 turns but it turned out to be 113.6uH after measurement, probably due to the imperfect winding.

For the particular core I was using with -2 material, as the level of peak AC flux density increases, the material experiences an increase in permeability (about 110% initial permeability) up to an AC flux density of around 4-5000 gauss before saturating. (Koolmu toroids come to mind with their 10,500Gauss saturation flux density which I would recommend for those seeking to make their own). Since B_op = (E * 10^8 ) / 4 * A * N *f) for a square wave, the strongest B in our case when E = 340VRMS, N =66, f = 20000Hz, A=1.68cm^2, B = 0.3484T. We also know that Magnetizing force H = (I * N)/(path length) = 40kA/m. B = u_0 * H * u_r. It looks like the core will be ok. (Toroid is in saturation when B doesn't increase linearly with H, in this case about 0.5T) With a B_m of 0.5T (5000Gauss). I plan to do a quick test to find the saturation current of my inductor with a capacitor discharge across the inductor.

Asynchronous Buck Control

Since I will be using an asynchronous buck, care needs to be taken to bring the voltage back down after a burst or when the OCD trips. If you don't do this the bridge will turn on with high voltage on the bus from the output capacitor and this can be catastrophic for the IGBTs. A sync buck automatically brings voltage back down and recycles it back into the bulk bus capacitors because of it's low side switch. A sync buck also can be more efficient then a regular one if built and tuned correctly, but with the added parts cost and complexity. Instead, we can fix the problem this by adding a resistor on the output of the buck converter to discharge the output capacitor. For example at 340V, a 10k resistor would need to be rated to be 12W for constant operation. As for choosing the value of the resistor, the goal is basically to keep make sure the 20uF output capacitor to be mostly discharged if something happens on the tesla coil inverter side at 340V. Since I plan to run the max bps frequency to be no faster than 5Hz, having 3RC = 200ms should do fine. We need a 3.33k resistor. I had a 4.7k 7W resistor, and decided to use it - should work fine :)

I also have some CM200 brick IGBTs on hand and might move to a synchronous buck converter if required. To keep everything simple, I decided to go for a simple async buck. The next step is building a control system. There were a few options I was considering for my buck control. This was the first time I was making a buck converter so I did extensive reading up beforehand. The main options were:

- Open loop control with no regulation
- Bang-bang / hysteric control
- Delta Modulation
- Voltage Mode Control
- Current Mode Control

It might be possible to run the buck converter open-loop without any sort of closed regulation, since our goal is merely to provide some sort of ramp input to the inverter. Note that it doesn't technically need to be a perfectly linear ramp. For example, VTTCs with stacatto run off a sine wave from the mains but still produces sword-sparks. Measuring the output with the tesla coil load should also give an idea of how to pre-distort the input ramp to suit the load.

Several other people have tried various techniques in regulation, but for simplicity, I decided to use Bang-Bang-Control for the buck. This control seems to have been successfully tested such as in Steve Ward's design. With some help from Chris King, I used a simple comparator circuit with hysteresis. It is important to use a fast comparator to ensure the buck regulates quickly. For my first design, I used an AD8561 which has a 7ns propagation delay at 5V. This is orders of magnitude faster than most standard comparators or op-amps. This was later swapped to a TL3016 fast comparator when I re-did my QCW buck circuit due to some errors in the design, and also because I had some 3016s lying around (the AD8561 works great but is quite expensive).

Unlike other forms of control such as proportional control, the beauty of bang bang control is that it is much easier to be stable.  Also, the switching frequency also varies based on the voltage, and is easy to implement. After several iterations, physical tests and simulations in LTspice, I settled on a design which seemed to work well.

[More theory as well as design decisions and theory to come here soon]


Developing the Ramp Generator

Once the buck converter is complete, it should in theory be able to accept any arbitrarily shaped wave voltage input. To generate the ramp for the QCW, I used an ATtiny45 microcontroller which outputs the ramp as a PWM signal which is smoothed by its own RC filter. The ATtiny is a rather slow microcontroller, but it's incredibly compact, cheap and simple.

Old, failed ramp generator

I was originally messing around with some 'lazy' code simply using delay loops to generate the PWM for the ramp which I whipped up in about half an hour. This turned out to be quite awful with poor resolution and horrible results. I also had some errors I made in my buck driver circuit all of which resulted in a really sub-par ramp generator. So after a while, I got around to implementing it properly with interrupts.

That's much better. Attiny85 ramp generator with PW, BPS and Ramp Peak adjustable (yellow, overlaid with interrupter signal in blue),
and on the right, the buffered signal on the buck controller to the feedback circuit.

After some work (now in 2014), I got it figured out. Here's the new result implemented on the same ATtiny45/85 microcontroller clocked internally at 8MHz. I went for a 8-bit granularity, resulting in a 31.25kHz 8-bit PWM. This allowed me to use a simple RC filter to achieve this beautiful ramp signal. At the moment it has a 'maximum power' setting of 5Hz with a ~19-20ms total pulse. I measured the actual output on my final buck controller and the ramp peaks out at 4.75V with a ~0.9V off-set. The off-set basically sets a floating voltage so the QCW can start-up, which should translate to about 40V (at 0.9V) and 425V (at 4.75V max)  (with a 100:1 voltage divider, zeroed before a 0.5V diode drop). And as you can see, I also got myself a new scope :-).

The microcontroller takes in 3 potentiometer inputs for pulse-width, beats per second, and ramp peak adjustment. Note that it automatically sends an interrupter 'on' signal to the DRSSTC controller (aqua blue line). All signals are sent via fiber-optic for safe remote control.


Testing the (original, not very good) Buck Converter v0.5 (Dec 2013) This has been improved!

After figuring out some bugs with my circuit and replacing a faulty optoisolator, I tested the buck converter using 3 light bulbs as a load (12 Ohms), a small 1000uF bus capacitor with a 100VDC power supply. The buck sprang into life well and regulated as expected! The voltage is a bit low for me to test via the actual ramp (for 340V operation). I was also able to input a small voltage control into the comparator which allowed me to control the brightness of the bulbs (voltage). The results for my first test are here for reference:

- 0.8V in, 33V out
- 0.9V in, 45.6V out
- 1.0V in, 52.4V out
- 1.1V in, 68V out

For a ramp with 300V peak, I should require about 3.2V in (3.55V for 340V output). Subtracting the 0.7V from the diode drop, this should required 2.5V peak from the ramp which is around what my ramp produces. Next, I tested with a large resistive load - a several hundred Watt 15R resistor. I used a standard voltage doubler circuit for the main bus caps for my buck, so measuring the output was somewhat tricky to prevent ground loops. To get a good reading, I had to charge up the bus cap (via variac) and turn it off before getting a waveform.

Buck converter v0.5 is working with first revision of the buck driver, Dec 2013.

The buck was tested till 340VDC. Bus cap was two 6800uF caps, but after doubling makes it effectively 3400uF. Above are the scope shots of the voltage across the load resistor of a roughly 6ms pulse (as you can see it tops out just around 300V). As you can see, the buck is regulating! The small dip at the start of the ramp is due to a mistake I made in the micro causing it to delay for a bit longer than usual. One problem is that there seem to be a problem with offsets from the input of my micro to the output, and I will need to get that fixed. The resistor makes a little click every pulse! Now is a matter of tweaking offsets and the ramp generator code running on the ATtiny85. [edit - Micro code improved significantly! 2014]

 July 2014

Testing the improved 2014 Buck Converter Driver v1.0

Time to bring Buckverter back into life! After getting my ramp generator working much better, I focused on re-designing the new asynchronous buck driver after finding several mistakes with the original (even though it worked). So it was back to the drawing board. This time, the new driver has a proper +12/-12V (to be improved to 15V) transistor drive via an opto-isolated FOD3184 mosfet driver with VDD-VSS up to 35V (run at 24Vp2p, to be upgraded to 30Vp2p). It also improves on a mistake I made with my previous buffer, causing it to top-out since my op-amp wasn't rail-to-rail.

I also got my buck converter PCB fabricated and the result is a nice compact board. For the power supply, I used an unmarked signal transformer which conveniently had various isolated 11V and 30V windings for my logic and gate-drive isolated supplies, supplying isolated power for the gate drive and logic.

The old buck controller was removed and the new one was added. Now it's time to get it tested!

Since I moved to a new place, I did not have access to my original workshop and its isolated 60V power supply, so I had to test the buck off a current-limited mains supply. The new buck converter was first tested with a 25 ohm resistor as a load, and then a 100W 10 ohm resistor on the output of the buck. The bus capacitor (3400uF) was charged up to about 350VDC, and a ramp signal was sent in. Notice how the baseline is floated at about 30VDC or so. This aids in DRSSTC startup.

On the left is a 12ms ramp up to 282V with a baseline switching frequency of 7.81kHz with a 20Vp2p ripple. The highest switch frequency is around 25kHz. The right shows a longer 14ms ramp up to 300V, at which point notice how our bus capacitor runs out of juice causing the funny ripple at the top, exactly in like with what we expect (any longer pulse and we'll see a decaying line). All we need is a higher bus voltage or a large bus cap, or both (I have enough for 13600uF). The output is generally what we expect, and the buck switching frequency at 25kHz is not too high. Since these IGBTs are hard switching, we had better make sure they're not pushed too hard and have proper protection.

So the only disconcerting thing is... the little kinks along the slopes for both up and down slopes. What's going on? If we look at the voltage, notice this happens around 140V, where the current is 14A across the 10 ohm load. After a bit of head scratching and math, it turns out this is caused by the buck converter transitioning from discontinuous to continuous conduction mode. To investigate more, I made an LTspice model and plotted the output voltage with inductor current.

Here we can see green = output voltage, blue = inductor current, with a ramp up to almost 300V with 350V on the bus. Notice how at the red line, the inductor current no longer drops to 0A and is always positive, and this point shows the transition from discontinuous mode to continuous mode. This happens at around 120V (slightly lower than our 150V, due to the higher switch frequency in the simulation), and this (in real life) causes the kink in the profile.

In a standard buck converter design, the buck converter enters discontinuous mode when the load current drops below a certain I_critical, for given buck parameters. We can write an equation to describe the minimum load current for continuous operation (Source: TI Application Notes).

Similarly, we can re-arrange the terms I_out and L_min to find the minimum inductor value required. The value V_inputMax is used because the worst case condition (Giving largest L_min) is when Vinput is maximized. Typically, the buck is designed to operate in continuous level at 5 to 10% of full load. In addition, I want to keep my switching frequency at around 20kHz or so.

Here are the following parameters we can play with to reduce I_critical:
- Increase L
- Increase f_switch
- Increase V_out to approach V_in
So I use the equation above and plotted a few graphs assuming a constant load R.

Here we plot the current versus voltage for a voltage ramp from 0 to 330V across varying loads R. The green lines show the current across R as R decreases (current goes up). The orange curves shows the critical current with increasing inductance across different V_out from 0 to 330V. Thus any load current below each orange curve will put the buck converter into discontinuous mode. For continuous operation, we want to find a way to make the green line mostly above the orange curve. The bolded lines show my example with a 10R load at 25kHz with L = 113.6uH. Notice how the transition happens at 140V, which matches our kink location almost exactly. However, note that changing the load also changes switch frequency.

So what can we do about it? Turns out, there isn't any need to do anything about it! In actual QCW operation, the coil should draw significantly more power, forcing the buck to run into continuous mode almost from the beginning, thus avoiding the problem. Note that this only applies to asynchronous bucks. Regardless, I thought it was a useful exercise to go through the math.

It is now time to put the bus modulator together with the coil.


 Sept 2014 

First Light!

Finally after almost a year of on and off (mostly off) work, a redesign of both the buck converter, a new bridge and a new UD2.7, I finally got around to putting the coil together for its inaugural first-light run.

The photo of the layout shows quite clearly all the different components working together, with the large 6800uF bus capacitor (this was originally in voltage doubler configuration but I found 3400uF to be too little so I swapped it with a single one with Full-wave rectification from the mains), as well as my BuckConverter v1.0 with the large capacitor, inductor and signal transformer, and finally the 8-bridge, the red UD2.7A and the Mica MMC. Power is fed through an isolation transformer so I can scope the buck output safely. The UD and the buck converter are both controlled via fiber optic by my ATtiny45 controller and ramp generator. Notice how I used different fiber optic types to prevent confusion. With the DRSSTC and buck converter working well independently, I was hoping they would work together well, so I connected them together and turned on the power..

It's alive! It all came together in the end, and without any tuning at all! Here are the run parameters for the first light test:

- Bus charged to 180VDC at 6800uF
- Pulse length around 6.2 to 6.5ms to peak of ramp, total ramp time just over 7ms
- 465kHz to 434kHz running frequency from start to maximum ramp
- Primary current ~100 to 108A at peak
- Spark length around 40 inches (1m)
- OCD conservatively set at around 120 - 125A
- Primary set at turn 7.5 (392kHz) but coil oscillates itself to the upper pole

It was beautiful and mesmerizing to watch (and hear). Ramping down really makes the spark much quieter (during OCD trips, it ends with a harsher bang sound). I found that for reliable operation, I needed to add a lot of capacitance to my UD2.7 drive up to 1000uF or more (I used 2000uF in the end just so it would look symmetric!), and used a beefier 2A 24V SMPS for drive power. This was also because I got ahead of myself and implemented an under-voltage lock-out on my UD2.7, and I found that it worked well :-).

Above shows a capture of the primary current (yellow, 0.05V/A) and the buck output into the inverter. The output is quite good and everything is working as expected. Here you can see the interrupter pulse about 7.8ms long (probably a bit too long at the end after it ramps down, so I'll fix my interrupter code soon). In this particular pulse, the current goes up to about 126A just below my current OCD limit. The bus floats at about 30V. Note how at the end of the ramp (where the primary current is about 30A), when the interrupter cuts, the current in the inductor causes the jump in the bus voltage (remember this is an async buck), which then decays through my 4.7k bleeder resistor across my output cap. This has a 3RC value of 406ms, which is sufficient for the low BPS I am currently running at.

Another note - I was never really sure what sort of load a high-Z tesla coil would be. The trace above of the primary current may provide some insight. I realized that the envelop looked very much quadratic, and sure enough, I fitted a quadratic line to it and it looks almost perfect (pink line). Now with normal resonance at a fixed bus input, I noticed that the current rises basically linearly. Since the voltage in the primary tank goes up linearly, this implies the load should be constant. With the voltage now increasing from our buck converter, we can think of the voltage increase as a sum of an arithmetic series, which is quadratic (n^2+n /2). Perhaps open-loop control might just work for an even simpler design. I'll be thinking about this a bit more.

Right now everything is working and I am very glad to see that all my effort paid off in the end and I reached my goal of 1m without any tuning, and at only 150V bus voltage! After thinking about this a bit more, I see no reason why I can't push the coil up to higher currents, maybe 160A or so. These are the following improvements I plan to make since my original project goal has now been achieved!

- The buck-layout is quite poor, probably will re-design it, or even make a small PCB
- Improve drive power for my buck driver with more capacitance and maybe 15V drive
- New goal of 10x secondary length (55" = 140cm)
- A new secondary with lower frequency
- Improve the bleeder circuit for cleaning up the spike (or simply dropping the ramp to 0 before going up to 30V again)
- Put everything into a nice enclosure
- Maximum current at 160A with maximum of 300V ramp

Looking forward to see how far I can push this project. :-)


I would like to thank the following people, for this project would not have even started without their inspiration and help.

  • Steve Ward for his advice on my QCW design (and for coming up with the first QCW DRSSTC)
  • Chris King for advice on buck converter design
  • Barmaley from for the inspiration to create a simple yet reliable and small QCW
  • Inspiration from zrg's 'Junky QCW' and his QCW with very impressive output
  • The many great tesla coil and high voltage forums on the internet which gave me valuable advice
  • And everyone else who has helped me in one way or another.

More to come soon!

Back to main page
(c) Gao Guangyan 2017
Contact: loneoceans [at] gmail [dot] com

Loneoceans Laboratories. Copyright (c) 2003 - 2017 Gao Guangyan, All Rights Reserved. Design 3.
Removal of any material from this site without permission is strictly prohibited and will result in infringement of copyright laws.
Disclaimer: Projects and experiments listed here are dangerous and should not be attempted. ... page generated in 0.00201 seconds