I have the following goal, which I presented in a previous question:

I'm trying to generate a current source which is extremely low drift but can maintain high current (3A into a few ohms), that should be similar to this expensive high-precision current source.

However, the low-drift power supply I have (a (Yokogawa GS200) can only provide 0.2A. I happen to have laying around a much less cheaper, less precise, power supply, (a Texio PW8-3AQP), which can manage 3A, but has worse drift.

To save myself from buying the expensive new power supply rated for 3A, a suggestion by a coworker was that maybe I could use the "bad" power supply to provide the bulk of the current, and the good-but-low-current one in parallel to source or sink current to get a stable overall output current. ... Also, for context, I've included a brief discription of the context for why I need this precise current source:

I am working to try to build a system that needs a very precise magnetic field. The aim is to get something around 0.30000T ± 5 µT, which requires an electromagnet with around 3.00000 A ± 50 µA current.

A collaborator's lab has achieved a good-enough solution with a commercial electromagnet (similar to this model) and a high-precision current source.

In perfect world, I would simply replicate that setup with the high-precision current source, but it's 10-15k$ usd, which I don't have the budget for.

But I have a good low-noise current source (Yokogawa GS200, which costs like 2-3k usd), but it can only drive a puny 0.2A with it. Additionally, I have an ordinary power supply (Texio PW8-3AQP) that can supply 3A of power, which I have assumed to have less precision and more drift.

I had an idea of plugging some electronics in parallel, which was made clear from the answers to the question that this previous design did not work. But I am working with a coworker who has some experience as an electrical engineer, and has come up with an idea to do this:

The idea is to present a low-drift, constant current sink at 3A, using the electronics at the lower left hand side of the image. It's inspired by Figure 5 here (https://www.ti.com/lit/an/snoaa46/snoaa46.pdf):

enter image description here

which uses a precision voltage reference to make a regulated current. In his design, he replaces the BJT with a MOSFET for better power handling, and change the feedback path so that we sense the current with the 50mOhm resistor then use a zero-drift current sense amplifier to get the feedback signal. Then the Yokogawa device in parallel can source or sink up to 200mA, to give us some tunability.

Here is a design of the circuit that can achieve this:

enter image description here

My thought is that it seems as though the actual value of the current is determined by the value of a single resistor, which can drift in temperature. But not taking that into account it seems as though this gives 1-part-per-million stability for the current. Perhaps by putting the whole thing in an oven to heat it up, it could compensate for these changes?

Thoughts on this design would be appreciated.

  • \$\begingroup\$ How low drift are we talking about? An oven is a nice brute-force way indeed, but if you have realistic requirements, it should be doable without it. \$\endgroup\$
    – winny
    Commented Jul 11 at 9:26
  • \$\begingroup\$ @winny, the requirements are fairly strict, so I'm not confident that this will work. \$\endgroup\$ Commented Jul 11 at 14:09
  • \$\begingroup\$ So what's your numerical value of max allowed drift? \$\endgroup\$
    – winny
    Commented Jul 11 at 14:10
  • \$\begingroup\$ I need: 3.00000 A ± 50 µA \$\endgroup\$ Commented Jul 11 at 14:12
  • \$\begingroup\$ 48 dB if I count correctly. I would start with the best components available to you, temperature sensor and a look-up-table for temperature compensation in software. What speed are we talking about? \$\endgroup\$
    – winny
    Commented Jul 11 at 14:19

1 Answer 1


No need for high-side sense, in fact it's better low-side. Other changes are suggested as well:

marked up schematic

Note the Yokogawa isn't doing much here, and can be discarded. U3 is setting reference. If you need the extra capacity, you're better off buying a bigger "TEXIO", and M1(s) as needed.

U1 needs to be a microvolt precision type, with enough drive voltage for M1. ADA4528 is fine, but the voltage is questionable. You'll need to choose from logic-level drive MOSFETs.

Fortunately, logic-level MOSFETs are abundant among low Vds types, so that shouldn't be an issue. You will need enough heatsinking, which makes the choice of a DFN5x6 SMT a dubious one: you can dissipate some watts from these, maybe 10W even with some effort, but matching anywhere near the package rating takes well more effort than is worth. A good old TO-220, or several in parallel, will do just fine. Nothing fancy is required; even ye olde IRL540 will suffice here.


Preferably, it should be dimensioned to constrain worst-case current flow through M1 (i.e., even if U1 is saturated). It can drop a couple volts at nominal operating current, limiting peak current to, not much more than nominal, and thus also give a generous sense signal -- likely U2 isn't required at all (given suitable choice of U3).

The common-ground connection also means a simple noninverting amplifier can be used, no differential or current-sense amp required. (Note that U2 (if applicable) and U3 can be star-grounded to R_sense kelvin terminal, avoiding errors due to layout.)

The limiting function is a compromise against precision: more power dissipation means more thermal offset and drift in R_sense, even with high-quality parts. Probably you want a precision metal foil type, kelvin terminals, and dissipating somewhere under a watt say.

It doesn't need to be one or the other; you'd get the best of both worlds by using a non-precision resistor on top of a precision sense resistor.

Or maybe the limiting behavior isn't interesting or worthwhile for such modest power levels (10s of W isn't a whole lot in the grand scheme of things), or maybe you don't even care if the thing blows up and has to be repaired if it gets abused...

Also, you probably want a divider on V_sense (as shown, maybe a resistor shunting from U1-(-) to GND, thus dividing with Rs) so that exact setpoint can be trimmed. Even a very pricey R_sense will be "only" 0.01% or whatever. You cannot get the requested precision through design alone; calibration is required. A simple 10-turn trimpot, spanning a very meager say 1% (or even 0.1%) range, is sufficient to account for this, plus availability of exact values, etc. Or you might want coarse and fine adjustments, to allow more choice among commercial values.


The source resistor helps with this, as it limits M1's transconductance (as seen from U1), keeping loop gain more consistent.

M1 has considerable input (gate) capacitance and will cause U1 to oscillate if connected directly. Rg is required to address this.

An Rs is also required, so that C1 can do its job compensating U1 for its slow load (otherwise it's a large capacitor between two op-amp outputs and you'd have them fighting each other on top of the above..!). An Rz can also be added, to optimize the step response of U1 -- maybe not important here, but good practice in general.

Starting values of Rs = 1k, C1 = 10n, Rz = 10k, Rg = 1k are probably fine. Exact values are subject to transient testing: I would suggest adding a jumper between U3 and U1 so that a function generator can be inserted, and transient step testing performed on a resistor load. This only needs to be done once as a design calibration, and should be repeated if U1, M1 or U2 are substituted in the future.


An inductive load is easy enough to start up, but keep in mind U1 and M1 will be saturated for the duration, until current approaches nominal. So the saturation mechanism will be triggered in normal operation. Inductor current will probably rise slowly, so that recovery from saturation doesn't cause much overshoot, but again as a best-practices principle, and for readers looking to do something similar but potentially for faster loads, I would be remiss not to highlight this behavior.

Shut-down is the hard part. As soon as V3 disappears, M1 turns off and Vds shoots up. Some combination of clamping diode (D) or TVS is recommended. If using D, Cbyp should also be installed: for these ratings, probably 1000μF or more, and with M1, D and Cbyp located close together to minimize stray inductance between them.

Current sources tend to behave poorly with inductive loads. The inductance, resonating against M1's capacitance, plus some phase shift through the feedback loop, can turn a decaying ringing waveform into a growing one -- oscillation. Rsn + Csn are recommended to address this. Typically Csn > 3Coss (say, some 10s nF), and R of a few ohms -- exact values again are subject to compensation, and exact load characteristics.

Other thoughts:

Note that the coil dimensions themselves need to be constrained, or not allowed to heat up and expand, as that too will affect the magnetic field strength. Resistance rises with temperature, so you need some minimum supply voltage to deliver that worst-case, plus whatever drop the regulator here has (which, under the above recommendations, can be up to several volts, but again, that's a design consideration, not a hard requirement, and reducing dropout would be another such point to consider). Even though the power dissipation isn't huge, water cooling might be a consideration. Using an iron core also helps reduce the effect of coil expansion -- which, for such flux density at this power level, I'm guessing you have, so that should be a good start.

Keep in mind, fancy techniques aren't required -- the original NMR papers by Bloch, Purcell, Pound, etc. just used a stonking great lead-acid battery and iron-pole electromagnet. Once things come to thermal and chemical equilibrium, it's actually a rather low-noise source. Supposedly, assistants would fine-tune it by opening or closing windows in the lab. (Of course, reducing that control time constant -- and automating it -- would be valuable improvements, and so here we are!)

Datasheets referenced:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.