I’m currently trying to create a programmable current sink. And I’m still trying to build up my circuit and searching for new parts. As I was searching for a OPA, I encountered much information about stability. enter image description here

I was searching for a while and coulnd´t find anything about calculating the size of Riso, Cf, and Rfb. Is there a way of saying what size these should have in my application or is it just like trying and figuring out? In other similar circuits from TI I just found cuircits where they use Riso = 100 ohm, Cf=100 pF, and Rfb around 1k.

  • \$\begingroup\$ A wise approach would be an AC simulation. \$\endgroup\$ Commented Mar 21, 2019 at 15:45
  • \$\begingroup\$ This also controls the BW by rise/fall time as well such that BW= 0.35/Tr = 0.35/(100*100p)= 3,50 MHz while Riso*Ciss is another time constant which rises as RdsOn spec reduces. The net phase margin is reduced by the phase shift from both effects so the BW limit must be beyond the GBW of the OPA for stability. So choose an OPA with GBW ~ <=1MHz. If you need more BW then reduce RC accordingly. \$\endgroup\$ Commented Mar 21, 2019 at 15:53
  • \$\begingroup\$ Start by understanding why CF and RFB need to be fitted in this type of application. When you realize "why" then you can begin to think about calculating their values. The values depend on the specific op-amp and the specific MOSFET and quite subtle (to some) performance details in their data sheets. There is no one size fits all unless you are prepared to have sub-standard performance in your target design. \$\endgroup\$
    – Andy aka
    Commented Mar 21, 2019 at 15:55

1 Answer 1


Using the proposed component values for Cf, Rfb and Riso will very likely result in a stable system and "just work".

The values of Cf, Rfb and Riso influence the dynamic behavior of the loop. Only if you have certain requirements on that dynamic behavior should you consider deviating from the proposed values.

Another reason to deviate from the proposed values is when the dynamic behavior turns out to be bad, for example the circuit shows ringing or oscillates (I think that is unlikely but it could happen).

The dynamic behavior is the way the circuit responds to changes at the input and output. When the voltage coming out of the ADC changes, it will take some time for the current source circuit to adjust.

We could design the current source circuit to be extremely fast responding. That usually results in ringing, overshooting and risk of instability (oscillations).

We could design the current source circuit to be extremely slow responding. That will generally results in a "well behaved" (no ringing, no overshooting and no oscillations) circuit but it will be slow. How slow depends on the component values.

The proposed component values to me look like a decent compromise between those two situations. The response time of this circuit will about Cf * Rfb = 100 ns which is fast enough for many purposes.

If you do build the circuit and measure instabilities, I would suggest to increase the values of Cf and Rfb. You need to take siginificant steps in that case so for Cf don't increase from 100 pF to 120 pF but more than double it to 220 pF, 470 pF, 1nF etc.

To properly calculate the values of Cf, Rfb and Riso you'd have to do a proper stability analysis, you would also need to know more about the MOSFET and possibly the opamp. If you are unfamiliar with stability analysis then it will take some time to learn that, it isn't something that can be explained in some words here but you could start by reading this article from TI.


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.