The most robust linear semiconductor circuit for a constant current sink under 2A uses an operational amplifier driving a Bipolar Junction Transistor (BJT) in a negative feedback loop. While hobbyists often default to N-channel MOSFETs for switching, using a MOSFET in its linear (active) region invites thermal runaway due to the Spirito effect. A BJT avoids this failure mode entirely, making it the superior choice for linear current regulation on the workbench.

The Core Topology: Op-Amp Driven BJT Current Sink

This topology relies on an op-amp to continuously adjust the base current of a pass transistor, maintaining a precise voltage drop across a sense resistor. Here is the node map for the circuit:

  • VCC: Main power supply rail (e.g., 12V) feeding the load and the op-amp V+ pin.
  • V_REF: Reference voltage fed into the op-amp's non-inverting input (+). This dictates the target current.
  • V_FB: Feedback voltage from the sense resistor, fed into the op-amp's inverting input (-).
  • BASE: Op-amp output, routed through a current-limiting base resistor to the BJT base.
  • COLLECTOR: The BJT collector, which connects to the negative terminal of your load.
  • EMITTER: The BJT emitter, connected to the top of the sense resistor.
  • V_SENSE: The junction between the emitter and the sense resistor.
  • GND: The bottom of the sense resistor, tied to the system ground and op-amp V- pin.
Callout: Why a BJT and not a MOSFET?
When a MOSFET operates in the linear region (high V_DS, high I_D), localized heating on the silicon die causes the threshold voltage to drop, which draws more current to that specific hotspot. This positive feedback loop is called the Spirito effect, and it will destroy a standard switching MOSFET in seconds. BJTs exhibit a negative temperature coefficient for current gain at high currents, naturally balancing the thermal load. For linear semiconductor circuit design, always choose a BJT or a MOSFET explicitly rated for linear operation (like the IXYS IXTK660N04T4).

Behavior Matrix: Parameter Shifts and Circuit Response

Understanding how the feedback loop reacts to component drift or intentional adjustments is critical for troubleshooting. The op-amp will always drive the BJT base to force V_FB = V_REF.

Element Changed Direction Circuit Response Result on Load Current
V_REF (Reference Voltage) Increases Op-amp output rises, injecting more base current into BJT. Increases proportionally (I = V_REF / R_SENSE)
R_SENSE (Sense Resistor) Increases (or heats up) V_FB rises faster; op-amp reduces base drive to compensate. Decreases slightly (maintains V_FB = V_REF)
VCC (Supply Voltage) Increases V_CE across BJT increases; op-amp reduces base drive to keep I constant. No change (Current remains constant; BJT dissipates more heat)
Load Resistance Decreases Voltage drop across load falls; V_CE across BJT increases to compensate. No change (until VCE_sat is reached)

Design Walkthrough: Sizing for a 1A, 12V LED String

Let's build a semiconductor circuit to drive a 3-LED series string (forward voltage ~9V total) at exactly 1.0A from a 12V supply. We will use the Texas Instruments LM358 dual op-amp and the ON Semi TIP31C NPN BJT.

1. Sizing the Sense Resistor (R_SENSE)
We need 1A of current. To keep power dissipation manageable while providing a readable voltage, we'll target a 0.5V drop across the sense resistor.
R = V / I = 0.5V / 1.0A = 0.5Ω
Power = I² × R = 1² × 0.5 = 0.5W
Pick: A 0.5Ω, 2W or 3W ceramic power resistor. Never use a standard 1/4W carbon film resistor here; it will burn open.

2. Setting the Reference Voltage (V_REF)
We need exactly 0.5V at the non-inverting input. Using a simple voltage divider from the 12V VCC rail:
Use a 10kΩ trimpot (potentiometer) connected between VCC and GND, with the wiper feeding V_REF. This allows fine-tuning on the bench. Add a 100nF bypass capacitor from the wiper to GND to filter noise.

3. Sizing the Base Resistor (R_BASE)
The TIP31C has a minimum DC current gain (hFE) of roughly 25 at 1A. To get 1A of collector current, we need at least 40mA of base current (1A / 25).
The LM358 output can swing to about VCC - 1.5V, so roughly 10.5V. The BJT base-emitter drop (V_BE) is ~0.7V.
R_BASE = (V_OUT - V_BE) / I_BASE = (10.5V - 0.7V) / 0.04A = 245Ω
Pick: A standard 220Ω, 1/2W resistor. This guarantees sufficient base drive without overloading the LM358's output stage (max sink/source is ~40mA).

Extreme Failure Modes: Open and Short Scenarios

Every semiconductor circuit must be evaluated for catastrophic failure. Here is what breaks at the extremes:

  • R_SENSE Opens (Fails High): The V_FB node drops to 0V. The op-amp sees V_REF (0.5V) > V_FB (0V) and saturates its output high. The BJT turns on fully (saturates), dumping maximum available current through the load. Result: Load burns out. Fix: Use a wirewound sense resistor with a fusing link, or add a fast-acting 1.5A fuse in series with the load.
  • BJT Collector-Emitter Shorts: The load is now connected directly to GND through a 0.5Ω resistor. Result: Load receives full VCC current and burns out. Fix: Add a crowbar circuit or a fast-blow fuse on the VCC rail.
  • Op-Amp Loses Power (VCC to Op-Amp drops): The op-amp output floats low or goes to 0V. The BJT turns off completely. Result: Load turns off safely. This is a fail-safe condition.

Breadboard Verification Protocol

Do not connect your expensive LED array until you have verified the semiconductor circuit with a dummy load. Follow these numbered steps:

  1. Wire the Op-Amp: Connect LM358 Pin 8 to 12V VCC, Pin 4 to GND. Leave the BJT disconnected for now.
  2. Set V_REF: Power the board. Use a multimeter to measure the voltage at Pin 3 (V_REF). Adjust the 10kΩ trimpot until you read exactly 0.500V.
  3. Verify Op-Amp Output: Measure Pin 1 (Output). Because Pin 2 (V_FB) is currently 0V (floating/grounded), Pin 1 should read high (approx 10.5V). Briefly short Pin 2 to V_REF; Pin 1 should drop to ~0.5V. The feedback logic is working.
  4. Connect the Pass Element: Power down. Wire the 220Ω base resistor from Pin 1 to the TIP31C Base. Wire the 0.5Ω sense resistor from the Emitter to GND. Connect the Collector to your dummy load (e.g., a 10Ω, 10W power resistor).
  5. Apply Power and Measure: Power up the 12V rail. Measure the voltage across the 0.5Ω sense resistor. It should read exactly 0.5V, indicating 1.0A of current. If it reads lower, check your BJT hFE and lower the base resistor value.

Topology Decision Tree: Which Current Sink Wins?

Choosing the right semiconductor circuit topology depends on your current requirements, voltage headroom, and thermal constraints. Use this decision matrix to lock in your design.

Condition / Requirement Recommended Topology Why It Wins
I < 50mA, low precision JFET Constant Current Diode (e.g., J511) Zero external components, inherently self-biasing.
50mA < I < 2A, Vin - Vout < 4V Op-Amp + BJT Linear Sink (This Article) High precision, avoids MOSFET Spirito effect, cheap.
I > 2A OR Vin - Vout > 5V Switching Buck LED Driver (e.g., Diodes Inc AL8860) Linear circuits will overheat; switching topologies maintain >85% efficiency.
Requires PWM Dimming > 1kHz Dedicated IC with DIM pin (e.g., AL8860 or PT4115) Linear op-amp loops suffer from phase lag and ringing at high PWM frequencies.
The Default Pick:
If you are building a bench power supply, an electronic load, or driving a short string of high-power LEDs where efficiency is secondary to absolute current precision and low EMI, build the Op-Amp + TIP31C linear sink. It is the most forgiving semiconductor circuit to debug, requires no inductor selection, and provides rock-solid DC stability up to 2A.