I'm trying to build an OpAmp based high constant current source/sink based on the analog devices application note 968.

LTSpice Schematic

In the first step I designed it for maximum of 1A, but later up to 10A is planed. The load with 1mOhm is just an example for very high load that should be restricted by this circuit.

Everything works as expected as long as the load voltage isn't pulsed (or even turned on once) in some way. In my example I added a load voltage source VL with 50Hz pulsed 20V to demonstrate this. To be precise: In case of a constant current source VL is the voltage source the circuit will provide to the load. In case of a current sink, VL is the voltage source the user will provide to sink into this circuit.

What happens is, that there is a large unrestricted peak current flowing through RL for about 20µs. After another 20µs the current stabilizes to the expected set current.

High peak current

I tried to change C1 in various ways. Choosing too small values causes the OpAmp to swing like in following example. The lower C1 the larger are the swing peaks.


I played with various OpAmps and mosfets types but there were no real change. Is there a way to prevent this high peak current in some way? What could I change? Is this peak current really a problem since it's time is really small?

  • \$\begingroup\$ Explain precisely what you did here and with reference to your circuit: "I added a load voltage source with 50Hz pulsed 20V to demonstrate this". Lowering C1 beyond a certain limit will cause u3 to oscillatoe because of the small positive feedback on that device coming from R2. \$\endgroup\$
    – Andy aka
    Jan 24 '17 at 11:05
  • 1
    \$\begingroup\$ Any circuit will have a finite response speed, thus needs some time. When the voltage rises faster than that response speed, there is no way any circuit can stop more current from flowing. That response time is part of the specification. Specify it, and build accordingly, if you reached it, then your design is done. If someone applies voltage faster, its their fault. \$\endgroup\$
    – PlasmaHH
    Jan 24 '17 at 11:09

The output capacitance of the IRFH6200 is 2.89 nF with 10 volts from drain to source. With zero volts from drain to source this capacitance will be in the realm of 10 nF so, when you apply the pulse to VL, irrespective of how long or short it takes for the control system to recover, you are (in effect) applying that same pulse directly to RL via a capacitor that starts at about 10 nF and diminishes to maybe 2 nF when the peak of the pulse is reached.

What happens is, that there is a large unrestricted peak current flowing through RL for about 20µs

That initial current flow is due to the capacitor and the fact that the MOSFET, prior to the injection of the voltage pulse is hard-on due to the op-amps. How long it takes for the control loop to stabilize is down to choosing a faster op-amps (in part) but also it's down to being able to remove charge from the MOSFET gate (power drivers are usually rated in amps to accomplish this).

The gate source capacitance is about 10 nF and a measly 20 mA from an op-amp is going to reduce the gate voltage at a rate of 20 mA/10 nF = 2 volts per microsecond - it might take 5 to 8 us just to turn the MOSFET off.


A few things hurt you:

  1. Slow opamp. But running a faster one also increases thee risk of oscillation.
  2. C1: it causes delays and phase shift.
  3. The mosfet: large gate capacitance.

What happens is that the whole thing isn't fast enough to track the input signal, because of the reasons listed above.

The solution?

  1. Have a real espectation of how good your CCS should perform.
  2. Cure the ills: faster opamp with higher output current, lower c1 as much as you can. Use BJT instead, lower the gate stopper as much as you can, .... All of them run the risk of pushing your Vccs into violent osciillation.
  3. Do an AC analysis on your amp. Make sure it doesn't oscillate and fine tune the parameters to see where the envelope is.

Using an opamp can be hard.

  • \$\begingroup\$ Thanks for your Feedeback. Indeed using a BJT helped a lot, however then you are very restricted concerning maximum power. I saw many cheap (eBay) current source that uses only OpAmps and mosfets, so may be they just ignore that peaks? \$\endgroup\$
    – bkausbk
    Jan 25 '17 at 8:07

Think about what happens:

The problem is that when VL is zero, the current cannot flow. The opamps and the feedback loop try to make that current flow so opamp U3 will output the highest output voltage it can (close to +15V) and feed that to the gate of M1. So M1 is fully turned on.

Then you do apply VL, M1 is fully on so a very large current can flow, limited only by the Rdson of M1, RL and Rs. The loop needs some time to lower the gate voltage of M1 so much that it will limit the current.

I think the high peak current can and will be a problem if not everything is designed for it. You could add a resistor in series with the drain of M1, make it the highest value which will still allow your desired current to flow and allows for some voltage drop across M1.

  • \$\begingroup\$ That was exactly my assumption that the problem is the initially fully turned on mosfet. Is there a good way to create the opposite feedback loop so that the mosfet is initially off and will be turned on continuously? Or is this kind of feedback loop not the best design to use? What additionally happens is that current seems to flow out of the gate. Is this because of the gate charge? \$\endgroup\$
    – bkausbk
    Jan 24 '17 at 12:08
  • \$\begingroup\$ "Opposite feedback" does not exist unless you mean positive feedback which would be utterly useless for this circuit. the mosfet is initially off and will be turned on continuously? You mean turned on gradually. But your problem is, turning M1 off when VL is not there. That would require extra circuitry. current seems to flow out of the gate Yes that is the gate (behaves as a large capacitor) discharging. \$\endgroup\$ Jan 24 '17 at 12:42
  • \$\begingroup\$ You really need a lot more design experience before you can adapt this circuit to implement all this. You're not the first wanting to "design" something non-standard with too little experience. Before you can design anything yourself you must understand all basic circuit designs and principles. Yes, that takes a couple of years to master. \$\endgroup\$ Jan 24 '17 at 12:43
  • \$\begingroup\$ yes I'm still learning, before I build something physically I want to understand the principles and I'll play with circuit simulators first. But what you say make sense to me. \$\endgroup\$
    – bkausbk
    Jan 24 '17 at 13:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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