I represent a simple current limiter using a JFET and a tiny shunt resistance Rs.

Per Siliconix App Note AN103 (1997-03-10), the value of Rs to limit current to Imax is approximately -VTO/Imax*(1-sqrt(Imax/Idss)). Idss is I(Vgs=0), which is 2-4 times BETA when there is any significant current limiting happening. "For best regulation, [Imax] must be considerably less than Idss."

So, if Idss=2*Imax and BETA=Idss/2, set BETA=Imax. But I set it a bit higher than that, 2*Imax.

I introduce the following alterable values into the circuit in which I am included:

  • slope: A channel-length modulation parameter for the JFET that reduces how drastic the current limiting eventually gets. Basically, a slope limiter for the voltage vs. current curve after limiting starts.
  • shunt: The shunt resistance.
Instance Variable Imax Maximum current, the point where I really start dissipating power to limit amperage.
Method setup Conventional current flow is from my pos (more positive) terminal into me and then out my neg (more negative) terminal.

Inherited from NodeStuff (via Include):

Instance Variable shunts A dict of current sensing V elements with the pairs of nodes they connect.
Class Variable debug A Bag that gets set True for all instances to log info about each setup call.
Class Method autoName Undocumented
Method setupResults Undocumented
Method fill Undocumented
Method nodeCheck Call with the circuit building tool f and a sequence of nodes provided to this Include or Subcircuit.
Method rawNetlist Get lines of a raw netlist from a search hierarchy of possible sources.
Method shunt Call to insert a current-measuring shunt and add an entry to my Elements baton's dict of shunts.
Method raw See Elements.raw.
Method iNode See Elements.iNode.
Method ground See Elements.ground.
Method sca See Elements.sca.
Method sca6 See Elements.sca6.
Class Method _libDir Undocumented
Method _strippedLines Undocumented
Method _call_setup Calls my setup method (almost always your override of that method, actually) and processes any return value.

Inherited from NodeStuff (via Include):

Instance Variable shunts A dict of current sensing V elements with the pairs of nodes they connect.
Class Variable debug A Bag that gets set True for all instances to log info about each setup call.
Class Method autoName Undocumented
Method setupResults Undocumented
Method fill Undocumented
Method nodeCheck Call with the circuit building tool f and a sequence of nodes provided to this Include or Subcircuit.
Method rawNetlist Get lines of a raw netlist from a search hierarchy of possible sources.
Method shunt Call to insert a current-measuring shunt and add an entry to my Elements baton's dict of shunts.
Method raw See Elements.raw.
Method iNode See Elements.iNode.
Method ground See Elements.ground.
Method sca See Elements.sca.
Method sca6 See Elements.sca6.
Class Method _libDir Undocumented
Method _strippedLines Undocumented
Method _call_setup Calls my setup method (almost always your override of that method, actually) and processes any return value.
Imax =
Maximum current, the point where I really start dissipating power to limit amperage.
def setup(self, f, pos, neg):

Conventional current flow is from my pos (more positive) terminal into me and then out my neg (more negative) terminal.

API Documentation for pingspice, generated by pydoctor at 2021-09-18 08:41:11.