The Carbon Hat

Recently work has seen me fiddling with JSON APIs and Python’s requests module. I was also intrigued by the talk of decarbonisation and the banning of gas-fired heating systems.

The received wisdom when I studied this stuff was that it was better to burn fossil fuels in your home directly, than have a power station burn them for you and use the resulting electricity for heating, but maybe the increasing amount of wind energy on the grid has changed things?

While researching this I came across this fine effort by National Grid, Oxford University, WWF, and Environmental Defense Fund Europe. They are using machine learning to forecast the carbon intensity of electricity for the UK’s regions up to 48 hours in advance. Interestingly, in spite of the UK having a “national grid”, the carbon intensity can be very different for different regions, as power seems to mostly be consumed in the same region it’s generated. It turns out that living near to one of Europe’s largest wind farms and 2 funky vintage nuclear power stations, the electricity supply to Conner Labs is mostly wind and nuclear and can have a very low carbon footprint indeed.

Since Carbon Intensity didn’t offer a handy regional forecast widget, and JSON APIs are almost fun, the obvious course of action was to grab a Raspberry Pi and make something to inform my electricity consumption decisions.

https://github.com/ConnerLabs/carbonhat The source code is here for your edification and entertainment (?)

Carbon Hat surrounded by other experimental IoT junk

I found a Sense HAT in my drawer of IoT junk (some might say it’s more like an entire building than a drawer) so I used the RGB LED matrix on that to display the result. It fades from green at an intensity of 0, through to red at 215g CO2/kWh, which is approximately the carbon footprint of natural gas burnt for heating. All LEDs are programmed to the same colour, and it is covered with a globe from a broken LED light bulb to make it look like a single light source.

Carbon Intensity’s forecasts are updated every half hour, so I pull the 24 hour regional forecast from their API a few minutes after each half hour, and crunch it down to a single number representing the average carbon intensity for the next 3 hours.

Compensating the PG508

I got it to work and amplify, but the loop gain left a lot to be desired, so I decided to start over on the compensation. I also hooked up an unregulated power supply and a different output stage, partly because I wanted to see how the PSRR was doing, and partly because I wanted to reassemble the Ice Block with its original driver board.

It survived 🙂

Now, you should never anthropomorphise amplifiers, they hate it! I swear that this one “wants” to blast electronic music from the 90s at high volume though. 🙂

Found this in my junk pile, retro or what 🙂

Having given the Ice Block its output stage back, I had to find another one for my experiments. A search of the junk pile yielded the remains of a Maplin 100W MOSFET amp kit. I’d have preferred to try BJTs, but the PG508 prototype was already set up to work with lateral MOSFETs.

Put it together and what have you got?

I tried the time-honoured method of soldering RC networks in random places, or maybe places that seemed to make a difference when touched with a damp finger. 🙂 This improved it somewhat, but it still wasn’t doing a great job of correcting the output stage’s copious (and vintage correct!) crossover distortion.

Cordell to the rescue!

I eventually cracked Bob Cordell’s “Designing Audio Power Amplifiers” and spent an afternoon pondering Chapter 9, “Advanced Forms of Feedback Compensation”. It struck me that the PG508 topology is very similar to figure 9.7, except that the input stage doesn’t exist as such: the feedback node is the VAS input.

It also struck me that I’d already ended up with RC networks in the places shown in fig. 9.7 by trial and error, just with completely different values. R4 and C2 were in the original Tektronix PG508, and R5 C3, R3 C1 were my additions. So the obvious course of action was to change them to the values suggested by Cordell and see what happened.

Initial results weren’t great: it oscillated at 20MHz, but this was squelched by reducing R4 to 51 ohms. Having done this, performance was excellent: the 16pF C1 gave the extra loop gain I was looking for. I’d started out with 100pF here as that’s the value used in a Douglas Self Blameless amp. The Blameless input stage typically has 5-10x the gm of the PG508’s non-existent IPS, though. So funnily enough C1 needs to be 5-10x smaller to get comparable loop gain.

With these modifications the measured performance was 0.03% THD at full power at 10kHz, and 0.00something at 1kHz. The 10kHz figure seems high, but it’s now in the ballpark for a well functioning driver doing its best with a vintage MOSFET output stage. (Cordell’s AES paper quoted 0.02% at 10kHz with the Hawksford error correction turned off.)

Note that this THD figure is no better than I got with the old compensation and the Ice Block output stage. This just means that the Ice Block output stage must have about 3-5x less distortion than the single 2SK135/2SJ50 pair used here.

Slew rate was also improved, and stability with a capacitive load was just about acceptable: with 0.1uF slapped on the output it showed a few cycles of damped ringing but didn’t oscillate.

The circuit at the end of a hard day of soldering capacitors at random (and trying to find a LM317 or 7912 : ) )

I also took the opportunity to test out the opamp front end inspired by the Quad 405 and Cordell Super Gain Clone. I used an OPA2604 as it was the best opamp I had around. This works very nicely: it reduces the DC offset to 2mV, undoes the phase inversion inherent in the PG508 circuit, and increases the overall gain from 10 to 50.

Note that the opamp must be a FET input type because of the high impedance of the DC feedback path. Also, as the circuit has 2 LF time constants (the 1M/1u and the 47k/2u) with feedback around them, it functions as a 2nd order active high pass filter. It rolls off at 12dB/octave and can resonate if the time constants are too close together.

I basically copied this part from the Quad 405, so it must have done the same thing. I guess it was desirable to have a good rumble filter here in the days of vinyl. Arguably it still is in the era of small vented speaker cabinets and dubstep. 🙂

PG508 audio amp part 2

I was so excited (honestly 8) ) about the idea of a PG508-based audio amp that I decided to try building it in real life.

Fig.1: This is what I made

I first tested the driver circuit with +-15V supplies, no output stage and pure dominant pole compensation. It oscillated happily at 6MHz, and to get it stable I had to go back to the original PG508 lag compensation network (the 51 ohm and 8n2) The back-to-back diodes helped the clipping behaviour: without them you can reverse bias the cascode transistors and burn out the LEDs if you really overdrive it.

Fig.2: DIY heatsinks for SOT-223 transistors

In the interest of getting something working quickly, I hooked it up to the output stage and power supplies of my ancient and long-suffering Ice Block amp, which conveniently happened to be partly dismantled with one driver board missing. It provides regulated +-65V and +-15V rails in addition to the main +-53V, so no worries about PSRR for the time being.

Fig.3: The heatsinks weren’t quite big enough.

To achieve stability with the Ice Block’s hefty lateral MOSFET output stage in the loop (2 pairs of double die Exicon FETs) I had to use both the original PG508 compensation and dominant pole compensation with an extra zero (the 1k and 100pF).

I think it’s a bit temperamental because there are 3 transistor stages in the loop enclosed by the dominant pole capacitor. The Douglas Self Blameless only has 2, and my previous attempts at adding a third stage to that (cascode connection of Cdom) also caused oscillations at a few MHz.

As with any half decent solid-state amp, THD+N was at the limit of my measurement system at 1kHz, and dominated by noise. I had to go to full power at 10kHz to see a meaningful distortion residual.

Fig.4: THD result at 10kHz, 100W into 9.4 ohms
Fig.5: Distortion residual at 100W, 10kHz. (Fancy scope on loan from work 🙂 )

The distortion appears to be what Douglas Self called “gm-doubling”: in a push-pull circuit the gain is higher when both halves of the circuit are contributing, than when one half is cut off. And in the residual we see small lumps corresponding to increased gain around the zero crossings. I’m not entirely sure what part of the circuit is causing it. It may be the output stage, as that’s the usual culprit. It looks like it wants less bias, but the bias pot won’t go down any further. (Got to replace that TL431 with a TLV431)

I also tested the full power bandwidth, and it happily delivers 100W to 100kHz and beyond. I didn’t push it beyond 130kHz for fear of burning out the Zobel network.

A reading of 0.025% at 100W and 10kHz, with no filters engaged, is not to be sneezed at. I’d be perfectly happy with it, except the other un-hacked channel of the Ice Block does 0.009%! The PG508 circuit has some way to go before it can beat the original Alexander CFB.

While I had the equipment out, I also tried measuring distortion with a LF411 in place of the SSM2131 in the Alexander circuit. It made no noticeable difference at any power level, even though I’d persuaded myself that the LF411 sounded bad…

Tek PG508 output stage as audio amp

I recently came across this gem in the X Chapters supplement to the Art of Electronics 3rd edition. (Not reproducing here because of copyright. You need to buy the book anyway, it’s brilliant 😉 )

Fig. 1: Tek PG508 nifty folded cascode with audio power amp output stage duct taped on.

Of course my first idea was to convert it to dominant pole compensation (C2) and bodge a standard audio power amp output stage onto it.

This worked very nicely in simulation, so the next step was to slap on an opamp front end ala Quad 405 or Cordell Super Gain Clone.

Fig.2: opamp adds voltage gain and functions as DC servo

The resulting circuit should give a lot of bang for the buck when used with a good quality FET input opamp. I expect it to outperform the Alexander CFB design in areas that matter, like HF THD, PSRR, playing well with the standard Bailey current limiter circuit, and not depending on an obsolete opamp or catching fire when overdriven.

This is a voltage feedback design, not current feedback, and won’t beat the Alexander’s slew rate without running the transistors at crazy idle currents. Besides being CFB, the Alexander driver circuit operated in Class AB and could call on arbitrary amounts of current when slewing was required. The price it paid for this was catching fire when overdriven 🙂 and also crossover distortion generated in the opamp’s output stage, which is very audible if you use any other opamp than the original SSM2131. (And kind of audible even with the SSM2131 imo…)

So overall I am happy with this set of compromises and looking forward to trying it out in real life.

A new input stage for the Blameless?

Regular readers will know that I’m a fan of Douglas Self’s Blameless philosophy of audio power amp design. (An uncontroversial choice, as the Blameless topology is not really that different to designs you would have seen in Wireless World in the 1970s, or indeed the innards of Bob Widlar’s opamps.)

Probably the biggest problem I have with the Blameless is the huge bias and offset currents at the inputs, which require a low resistance feedback network to avoid a huge DC offset at the output. This sets off a chain of design compromises and ultimately the carbuncle of C1 and D9 (Fig.1) pops up.

In my previous experiments I tried a matched pair for the input stage, but it made absolutely no difference. The collector currents aren’t necessarily matched, so neither will be the base currents. The biggest improvement was had by using high beta input transistors such as the now-obsolete BC213C. (MMBT5087 would be a suitable 21st century replacement.)

Fig.1: My original Blameless driver board

Revisiting this, I discovered that my first attempt at building it was badly unbalanced because of the clip detector (Q14 in fig 1) which robs a lot of base current from Q9. The other side of the mirror has Q12 robbing from it, but Q14 takes much more as it’s a high voltage part with low beta.

Fig.2: Improved version (complete model amp in LTSpice)

By adding a beta helper transistor to the input mirror (Q14 in fig 2) the imbalance due to base currents can be eliminated. The beta helper’s base current is drawn from one side of the mirror, and the base current of the Darlington VAS (Q2, Q17) comes from the other side. By setting R15=R7, Q2 and Q14 will run at the same collector current, so if they are matched for beta, their base currents will also be the same, and the whole input stage will be perfectly balanced to a first order.

(It’s not balanced to a second order because the current drawn from Q14 emitter by Q8-Q11 bases isn’t necessarily the same as that drawn from Q2 by Q17 base, but the imbalance due to this should be tiny. The clip detector can now be hung off Q8, Q9 bases with impunity. 2 transistors are now used to get a 2:1 ratio as required for balance with the current sourced by Q3. I used the same type of transistors as Q8, Q9 for improved balance, so a cascode Q23 is now needed because of their limited voltage rating.)

The other side of the problem was limited beta in the input stage. One of the pillars of the Blameless philosophy is to run the input stage at a high current to give it lots of gm, which you then throw away with emitter resistors. The goal is good slew rate, and the price paid is the high input bias currents.

We attacked the input offset current issue by improving balance of the collector currents (and hence base currents) but if we could reduce the input bias current too, the offset current would decrease still further in proportion.

A promising approach seemed to be replacing the input transistors for Sziklai pairs. (Q6, Q15, and Q7, Q16 in Fig 2.) Now the actual input transistor Q6 can run at a low current (300uA in this case) while Q15 conducts the remainder of the high current needed for decent slew rate. We have a double win because the Sziklai pair is more linear than a plain transistor.

Adding more and more transistors inside a feedback loop is always dodgy, and running one of them at low current where its Ft will be reduced especially so. In this case though, I think the bandwidth will still be adequate. The whole mess is cascoded by Q12, Q13, so there will be no Miller effect to slow Q6, Q7 down. The degeneration from R5, R6 should also help to stabilise things.

The LTSpice simulation of this showed an overall DC offset of 20uV, a huge improvement on my previous Blameless driver board. Of course this is with perfectly matched virtual transistors, but I think the real thing will do pretty well when built with BCM846/856 matched pairs. They specify Vbe to be matched within 1mV, and (what really matters for this circuit) beta to be matched within 10%, which works out at a 100nA worst case input offset current.

The overall result is that the DC offset and clip indicator trims from my original design can be done away with, and the impedances in the input and feedback networks can be increased by a factor of 10, for the same worst case DC offset of about 10mV at the speaker terminals. This means that C1 the obnoxious 1000uF electrolytic can be replaced by something more audiophile grade: the same 10uF plastic film capacitor that used to be the input DC block.

This is what the simulation says, so now I have to build one and see if it works in real life… 🙂

The Futurama FU-3 (part 3)

For more aluminium welding practice I decided to weld up the knob holes in the original Corvette front panel. The front looks OK but you don’t want to see the other side. I then made a new layout using MAD- permanent Marker Aided Design.

Next step was to finish wiring up the Marshall 2204 preamp.

See earlier posts on the Ninja Corvette Hybrid if you’re puzzled by all the extra transistor stuff.

Yeah it makes the master volume Marshall racket 😀 This was recorded at the 1W power output setting.

Got some matching knobs from Thonk. I will get round to making a completely new panel one day using the MAD one as a template.

The Futurama FU-3 (part 2)

With the chassis suitably butchered it was time to start on the electronics. I used Mark Huss’s schematic as a guide.

Soon the phase inverter and power amp were finished and working.

One big difference is that the 2204 uses negative feedback around the output stage while the original Corvette didn’t. So I decided to go with the NFB, and include the transistor output stage in the feedback loop too for an extra challenge.

It was perfectly stable first time! LOL just kidding… It suffered from high frequency parasitics-

And these comically chaotic LF oscillations could be provoked by overdriving it at low frequencies.

After much trial and error I ended up with something like this. The 0.68uF/5 ohm RC snubber killed the HF oscillations, and removing C17 and C18 (this schematic) stopped the motorboating. With these values it was just barely stable with the load disconnected and a 220k NFB resistor (vs 100k in the original 2203 circuit)

Note that when the transistor output stage is in play, the OPT secondary becomes bootstrapped and flies around with the speaker output, so the NFB takeoff point I used sees the output voltage of the transistor stage plus the output voltage of the valve OPT.

Removing C17 and C18 demanded quite a lot of extra current from the bias generator, but it seemed to deliver it no problem, so no changes were required there.

Resistor values were also changed to reduce the current gain of the transistor output stage, due to the increased output of the valve part of the circuit.

The Futurama FU-3 (part 1)

I got bored of the Ninja Corvette Hybrid and decided to transform it into something with a little more “FU”.

The plan I came up with was to strip out the valve part of the circuit and replace it with a clone of a Marshall 2204. This is a classic rock amp that I hadn’t had much experience with.

I decided to use 6AQ5 power tubes running off 250V, for a modest apartment-friendly power output. The 3 position power switching would be retained, giving power levels of 1W, 10W and 40W.

The Marshall 2204 circuit has 5 valves, but there are only 2 holes in the chassis…

A new output transformer was also required, as the original one was single-ended. I used the cheapest PP one I could find at TAD. I also TIG welded a bracket for it, as I’ve been watching way too much Project Binky.

PFC Part 10: Integration test

It was time to put it all together! (This actually happened in March- these are post hoc posts 🙂 )

Tesla coil driver converted for 24V DC control power.

First Odin’s control electronics had to be converted to run off 24V DC instead of the original 240V AC. (And mounted in a Eurorack while I was at it…) This wasn’t too difficult as they already used 20-something volts DC internally, derived from the mains with a traditional iron cored transformer and rectifier, and regulated to 15V.

24V DC input module. It is essential to test this on a furry rug.

I added DC input sockets to the driver and gate drive amplifier modules, and changed the fan for a 24V one too. The original 240V AC inputs are retained in case the PFC breaks down and I need to change back to the old power supply.

The PFC will be situated at the operator’s position with long cables for 750V and 24V running to the coil. This made everything simpler, as there was no need for remote control and the circuit breaker on the PFC could be the emergency shutoff for the whole system. But it did leave the 24V cable vulnerable to strikes and general pickup of the extreme levels of EMI around a Tesla coil. My solution was to make a DC input module using a surplus Traco 40W DC-DC converter to give galvanic isolation, and lots of EMI filtering on both input and output.

The red module is the receiver for my Teslink system that sends multiplexed control signals over a Toslink optical fibre. I finally got round to completing it (and making a Eurorack mounting transmitter too)

PFC provides 750V DC output (on left) and 24V DC (on right)

The idea is that the PFC accepts single or 3 phase power at anywhere between 208 and 415V, and supplies 24V DC to the Tesla coil electronics from its own control power supply. I didn’t want the hassle of having to change taps on control power transformers, or rather the carnage of connecting it to 415V with the taps set to 240. (I have done this before- it was messy)

Setup for integration test

The Tesla coil primary was set up using a water-filled steel pan as a dummy load.

It didn’t explode! 😀

The next step would have been to take the PFC and immersion heater bucket to a lab with 3 phase 415V power. Unfortunately this was made impossible by the COVID-19 lockdown. The debut was to have been the Nottingham Gaussfest, but this was also cancelled. Insert corona joke here 🙁