# Increasing the compliance voltage range for a variable, two-quadrant constant current pin-driver circuit

The following is for hobbyist work and I have no commercial intentions at all. Only a handful (two?) will be built. (I use these for part testing and curve generation, though with the higher voltage compliances I may find still more uses than before.)

I've got the following pin driver circuit, which provides up to $\pm 50\:\textrm{V}$ output compliance voltage while providing $\pm 10\:\textrm{mA}$ to a load connected between the pin driver output and ground. (The larger plus and minus rails are about $\pm 60\:\textrm{V}$, with the opamp rails at $\pm 15\:\textrm{V}$.) simulate this circuit – Schematic created using CircuitLab

Slew rates at the output for the above circuit are generally no more than $20\:\frac{\textrm{A}}{\textrm{s}}$ or $100\:\frac{\textrm{mV}}{\mu\textrm{s}}$. (I drive the input at rates on the order of no faster than $1\:\textrm{ms}$, peak to peak, and often slower than that.)

I'd like to expand the compliance voltages to $\pm 800\:\textrm{V}$ and reduce the current drive capability to somewhere from $\pm 500\:\mu\textrm{A}$ to perhaps $\pm 1\:\textrm{mA}$. (The voltage slew rate then increases to $1.6\:\frac{\textrm{V}}{\mu\textrm{s}}$ and this may be a concern, too.)

Getting the paired high voltage supply rails of $\pm 850\:\textrm{V}$ isn't the problem. But I was able to pick up $Q_1$ through $Q_4$ as parts on the same dice (BCM846S, etc.) I'd like to keep the matching of $V_{BE}$ (and perhaps even $\beta$.) But now the $V_{CEO}$ has gone up "a lot" and the same topology isn't going to work, since I don't think there are ANY matched pairs of BJTs with that kind of $V_{CEO}$. In fact, I'm not sure of any discrete PNP BJT that gets close to what I'd like to see. (NPN, perhaps. But PNP?)

I can imagine setting up yet another pair of voltage rails (close to the high voltage rails, but perhaps $40\:\textrm{V}$ closer to ground) and using a cascoded design (using four more BJTs) in order to protect the high and low side matched mirror pairs. That added voltage supply wouldn't need to handle more than $10\:\mu\textrm{A}$ or thereabouts, so it may not be all that difficult to construct out of the new high voltage supply rails. But if there are other/better thoughts about the topology I'd like to hear them.

Here's what I mean: simulate this circuit

Is there a problem I missed thinking about here, or can I do better? Does anyone have a suggestion of any process by any FAB for discrete BJTs I might consider for the cascodes here?

I also know that I will also face entirely different problems related to clearances and creepage, that I didn't have to face here before. That's a different topic though, which I'll address separately and later. Right now, I'm focused on how to get the significantly higher voltage compliances I'd like to achieve.

Just for clarity's sake, in case it isn't obvious, the circuit is a DC voltage controlled current source (VCCS) that either sinks or sources current into a grounded load. (One use has been for semiconductor curve tracing.) An input voltage of $-10\:\textrm{V}$ would source $500\:\mu\textrm{A}$ into the grounded load. An input voltage of $+10\:\textrm{V}$ would sink $500\:\mu\textrm{A}$ from the grounded load. A voltage triangle wave, oscillating smoothly between $-10\:\textrm{V}$ and $+10\:\textrm{V}$ would generate a current triangle wave into a load oscillating smoothly from $+500\:\mu\textrm{A}$ to $-500\:\mu\textrm{A}$ (whether that load was a diode or a resistor.) And the voltage compliance should support doing all of the above with a $1.5\:\textrm{M}\Omega$ resistor as the load. On occasion, it will be operated with a sawtooth or triangle wave as its input. I may also operate it with between $-1\:\textrm{V}$ and $+1\:\textrm{V}$ at the control input (or even with between $-100\:\textrm{mV}$ and $+100\:\textrm{mV}$ at the input.) Behavior must be monotonic, throughout. The maximum frequency I use about is $1\:\textrm{kHz}$, but I can sacrifice a factor of 10 on that point if necessary.

The above circuits are also good for another purpose. If I remove (by replacing it with $0\:\Omega$) $R_8$ and use the inverting input of the opamp as a node into which I can sink or source current, and if I also then place a known precision resistor from the output to ground, then the bipolar voltage at the output will depend on the bipolar current to ground.

It's actually a rather versatile module.

• What is the op amp supposed to do? – Daniel Oct 2 '17 at 20:10
• Is it supposed to turn off the opposite polarity stage with the power rails?? – Daniel Oct 2 '17 at 20:11
• @Daniel The opamp either sinks or sources current into the load attached to the output. In doing so, it must either source or sink current from the supply rails. My answer here shows another such "crazy" application of the idea: electronics.stackexchange.com/questions/256955/… – jonk Oct 2 '17 at 20:21
• @Daniel If it's still not clear, just take note that the opamp either differentially pulls down on the $Q_1+Q_3$ base node, or else differentially pulls up on the $Q_2+Q_4$ base node, by sinking or sourcing current through $R_7$. By pulling the top node down, or pulling the bottom node up, current generated by $R_8$ is removed from the inverting node and current is supplied to the load. The resistors allow me to tweak details. $Q_5$ through $Q_8$ are essential in supplying rail currents to the opamp. – jonk Oct 3 '17 at 4:32
• cool... you're mirroring the current on the input side, and the opamp is adjusting that by pulling current out of the intermediate rail on either the topside or bottomside as needed... the output transistors (as well as the ones on the input side) are functioning like high value resistors ... 800V / 500uA =~ 1.6M ohm. I don't have the right background for this, but that would strike me as one element that becomes (a tiny bit) extreme. If your load is 1.5M then i guess you're ok? the high impedance transistors turn stray currents, if any were pulled, into pretty big voltages? does that matter? – user Dec 18 '17 at 23:07

Since there's no inrush of answers:

How sensitive is your application to ripple (~ amplitude, you already mentioned bandwidth)?

I progressively get the feeling you should maybe just have a PWM-controlled switching transistor from high side to another PWM-controlled switching transistor to low side, add an current sense resistor in the 3kΩ range at the node between these two, followed by a low-pass filter, and drive your DUT from that. simulate this circuit – Schematic created using CircuitLab

Now, you'd control these switches based on the pulse position of when the current across Rmeas crosses the full 1mA (as observed by D2). Calibration might (ok, will) be necessary, but assuming that at a switching rate of maybe 50 kHz is totally sufficient for this application (and that already isn't all that easy, considering you need to drive the gates or bases of the high- and low-side switch at that rate), modern MCUs will be up to the task. I'm sure you'd be able come up with an analog design that might be cleverer than my proposed software one (albeit doing it in software, despite having quantization problems, will definitely make it easy to incorporate calibration data).

I gave the Rectifier* an asterisk because it's not really like I really recommend you'd use a PN diode bridge rectifier here – that won't work, since the diode currents will likely be larger than the measurement currents. An opamp-based precision rectifier on a floating supply might be the solution here (and could be built, cost-efficiently, at the expense of beautiful design, with a battery...). In any case, the whole rectifier – optocoupler – Zener circuit is really just a 1 bit sign-ignoring voltage ADC; a window comparator, or even a proper amperemeter IC with e.g. a digital optical link to the controlling MCU would probably do better.

Obviously, the single-stage RC (1.6kΩ ł 100nF) LPF is just a quick'n'dirty approach here; however, it does exhibit -36dB magnitude attenuation at my 50 kHz switching frequency (and my guess was that this is enough for you) whilst relying on a capacitor value that is still available as a film capacitor for >1kV with a 5% tolerance.

My motivation for this is that it's probably easier to address switching transistors in a finely enough timed manner than to control transistors in a linear enough fashion at the voltages at hand.

• This is behavioral. My circuit is actual. Turning your circuit from a concept into reality... is a different thing. Not to mention that I use my circuit for linear sweeps and this concept would instead have me slewing PWM, instead. With the ability to slew 1600 V in one millisecond I can only imagine the required frequency as "high" in order to get what I want. I'd like to know what you imagine as those switches... if mosfets, I see huge gate voltage swings through large capacitances at high speed and that scares the blank out of me. – jonk Oct 7 '17 at 20:14
• And consider loads may be any bizarre device I want to sweep. That means big capacitors (fixed currents, or variable, while monitoring voltage) or inductors (starting at zero and ramping at a specific rate, while monitoring voltage.) Also, I can use my circuit oppositely, shorting R8 as mentioned and using that node as a ground point to sink current, with the output responding accordingly with a load I place there. It's a surprisingly versatile circuit. What you suggest seems far more limited and less versatile. Assuming I could work out the details of actually doing it. – jonk Oct 7 '17 at 20:17
• Two things: 1. Yes, this is very abstract. If there was ever a rational bit of self-assessment in me, it tells me I should not be the one proposing actual analog circuitry to you of all people - there's an easy 40 dBexperience that you have over me. Then: 2. That switching frequency and the current slope is limited. That is actually where I have a bit of confidence in what I know - if the output signal is band-limited, the rate at which we need to generate current samples is limited to. Nyquist is your friend! The question of how much dynamic range you need then sets a lower bound for ... – Marcus Müller Oct 7 '17 at 23:03
• ... how finely you need to divide the sample period into pwm "slots". And that in term is just the frequency at which a pwm unit would need to run and a transistor would need to switch in the extreme case. Now, I agree, a couple MHz switching speed for a MOSFET at these drain-source voltages won't work out. However, the upper kHz range with CMOS does sound feasible – Marcus Müller Oct 7 '17 at 23:31
• I have a bird in the hand, so to speak. I am pretty sure that the minor cascode modification will work for my needs -- but of course I'm worried I may have missed some important detail. It works as a current sink at the input, yielding a voltage at the output; or as a voltage at the input controlling a current at the output. Or any combo. I can add a known resistor at the input, or not. I can add a known resistor at the output, or not. So I -> I, I -> V, V -> I, or V -> V. I use it as a pin driver circuit that I can also combine to make for a serious pin driver. – jonk Oct 8 '17 at 0:42

Your circuit looks fine .HV pnp BJTs will be hard to find .I use 600V types for other jobs ,they are cheap and easy to find and reliable .You could series connect them .I have connected up to 4 of these in series without any problems .Otherwise you could go to an all NPN design like something based on a SRPP .I have used cheap 800 V N channel mosfets 2 series per bridge leg to make up to +/- 500 VDC at 1 Ma.