A vaguely useful circuit

Oct 19, 2025 Last reply: 9 months ago 4 Replies

You can sink a current to ground, and split it in two, one copy sinking from loads above ground and one copy sourcing to loads below ground. The ratio of R3 to R2 controls the split fraction. Or tie the top of R3 to ground to make them equal.



I think trying to do something similar with multiple complimentary mirrors outside of an IC is inaccurate and kinda ugly..



Version 4 SHEET 1 880 680 WIRE -784 -608 -784 -720 WIRE -784 -384 -784 -528 WIRE -256 -384 -784 -384 WIRE -96 -384 -256 -384 WIRE 144 -384 -16 -384 WIRE 416 -384 144 -384 WIRE -256 -336 -256 -384 WIRE -1232 -224 -1232 -240 WIRE -1088 -224 -1088 -240 WIRE -784 -224 -784 -384 WIRE -256 -208 -256 -256 WIRE -256 -208 -640 -208 WIRE -1232 -128 -1232 -144 WIRE -1088 -128 -1088 -144 WIRE -48 -128 -48 -224 WIRE -256 -80 -256 -208 WIRE -480 -64 -480 -80 WIRE -640 -48 -640 -208 WIRE -512 -48 -640 -48 WIRE -320 -32 -448 -32 WIRE 144 -32 144 -384 WIRE -784 -16 -784 -144 WIRE -640 -16 -784 -16 WIRE -512 -16 -640 -16 WIRE -480 32 -480 0 WIRE -784 64 -784 -16 WIRE -48 64 -48 -48 WIRE -640 112 -640 -16 WIRE -640 112 -720 112 WIRE -112 112 -640 112 WIRE -784 224 -784 160 WIRE -256 224 -256 16 WIRE -48 224 -48 160 WIRE 320 304 320 288 WIRE 416 320 416 -384 WIRE 416 320 352 320 WIRE -784 336 -784 304 WIRE -48 336 -48 304 WIRE -48 336 -784 336 WIRE 144 336 144 32 WIRE 144 336 -48 336 WIRE 288 336 144 336 WIRE 400 352 352 352 WIRE 320 384 320 368 WIRE -256 448 -256 304 FLAG 400 352 0 FLAG 320 288 Vcc FLAG 320 384 Vee FLAG -480 -80 Vcc FLAG -480 32 Vee FLAG -256 448 Vee FLAG -1232 -128 0 FLAG -1088 -128 0 FLAG -1232 -240 Vcc FLAG -1088 -240 Vee FLAG -784 -720 Vcc FLAG -48 -224 Vcc SYMBOL cap 128 -32 R0 SYMATTR InstName C1 SYMATTR Value 100n SYMBOL res 0 -400 R90 WINDOW 0 -12 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R1 SYMATTR Value 10k SYMBOL OpAmps\\LT1014 320 272 M0 SYMATTR InstName U1 SYMBOL res -800 -240 R0 SYMATTR InstName R2 SYMATTR Value 1k SYMBOL pnp -320 16 M180 SYMATTR InstName Q1 SYMATTR Value 2N3906 SYMBOL OpAmps\\LT1014 -480 -96 R0 SYMATTR InstName U2 SYMBOL res -272 -352 R0 SYMATTR InstName R3 SYMATTR Value 1k SYMBOL npn -720 64 M0 SYMATTR InstName Q2 SYMATTR Value 2N3904 SYMBOL npn -112 64 R0 SYMATTR InstName Q3 SYMATTR Value 2N3904 SYMBOL res -64 208 R0 SYMATTR InstName R4 SYMATTR Value 470 SYMBOL res -800 208 R0 SYMATTR InstName R5 SYMATTR Value 470 SYMBOL current -784 -608 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName I_in SYMATTR Value 1m SYMBOL voltage -1232 -240 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V1 SYMATTR Value 12 SYMBOL voltage -1088 -240 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V2 SYMATTR Value -12 SYMBOL res -272 208 R0 SYMATTR InstName RLOAD1 SYMATTR Value 1k SYMBOL res -64 -144 R0 SYMATTR InstName RLOAD2 SYMATTR Value 1k TEXT -1216 -64 Left 2 !.tran 0.1


It's not especially accurate. Given a perfect current source to start, why not connect the load resistors directly to it?

John Larkin Highland Tech Glen Canyon Design Center Lunatic Fringe Electronics

Well then you'd just have a source and not a source and a sink, it's hard to source current into a load referenced to the positive supply..

I don't know exactly what you want to do, specifically how accurate you want it to be. Q2 and Q3 won't match very well, especially when Q3 warms up.

Quad opamps cost maybe 30 cents, and sot-23 mosfets are a few cents. The cost of accuracy will be resistors.

John Larkin Highland Tech Glen Canyon Design Center Lunatic Fringe Electronics

Yes, a fancy one works too:

Version 4 SHEET 1 880 776 WIRE -864 -608 -864 -720 WIRE -864 -384 -864 -528 WIRE -256 -384 -864 -384 WIRE -96 -384 -256 -384 WIRE 208 -384 -16 -384 WIRE 480 -384 208 -384 WIRE -256 -304 -256 -384 WIRE -864 -224 -864 -384 WIRE -256 -160 -256 -224 WIRE -256 -160 -656 -160 WIRE -496 -32 -496 -48 WIRE 208 -32 208 -384 WIRE -656 -16 -656 -160 WIRE -528 -16 -656 -16 WIRE -256 -16 -256 -160 WIRE -304 0 -464 0 WIRE 0 0 0 -224 WIRE -864 16 -864 -144 WIRE -528 16 -864 16 WIRE -496 64 -496 32 WIRE 0 160 0 80 WIRE -1344 176 -1344 160 WIRE -1200 176 -1200 160 WIRE -864 192 -864 16 WIRE -496 208 -496 176 WIRE -656 224 -656 -16 WIRE -528 224 -656 224 WIRE -48 240 -464 240 WIRE -528 256 -656 256 WIRE -1344 272 -1344 256 WIRE -1200 272 -1200 256 WIRE -496 288 -496 272 WIRE -656 432 -656 256 WIRE 0 432 0 256 WIRE 0 432 -656 432 WIRE -256 464 -256 80 WIRE 0 464 0 432 WIRE 384 544 384 528 WIRE 480 560 480 -384 WIRE 480 560 416 560 WIRE -864 576 -864 272 WIRE 0 576 0 544 WIRE 0 576 -864 576 WIRE 208 576 208 32 WIRE 208 576 0 576 WIRE 352 576 208 576 WIRE 464 592 416 592 WIRE 384 624 384 608 WIRE -256 688 -256 544 FLAG 464 592 0 FLAG 384 528 Vcc FLAG 384 624 Vee FLAG -496 -48 Vcc FLAG -496 64 Vee FLAG -256 688 Vee FLAG -1344 272 0 FLAG -1200 272 0 FLAG -1344 160 Vcc FLAG -1200 160 Vee FLAG -864 -720 Vcc FLAG 0 -224 Vcc FLAG -496 288 Vcc FLAG -496 176 Vee SYMBOL cap 192 -32 R0 SYMATTR InstName C1 SYMATTR Value 1n SYMBOL res 0 -400 R90 WINDOW 0 -12 56 VBottom 2 WINDOW 3 32 56 VTop 2 SYMATTR InstName R1 SYMATTR Value 10k SYMBOL OpAmps\\LT1014 384 512 M0 SYMATTR InstName U1 SYMBOL res -880 -240 R0 SYMATTR InstName R2 SYMATTR Value 1k SYMBOL OpAmps\\LT1014 -496 -64 R0 SYMATTR InstName U2 SYMBOL res -272 -320 R0 SYMATTR InstName R3 SYMATTR Value 1k SYMBOL res -16 448 R0 SYMATTR InstName R4 SYMATTR Value 1k SYMBOL res -880 176 R0 SYMATTR InstName R5 SYMATTR Value 1k SYMBOL current -864 -608 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName I_in SYMATTR Value SINE(0.01 0.01 100) SYMBOL voltage -1344 160 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V1 SYMATTR Value 12 SYMBOL voltage -1200 160 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V2 SYMATTR Value -12 SYMBOL res -272 448 R0 SYMATTR InstName RLOAD1 SYMATTR Value 1k SYMBOL res -16 -16 R0 SYMATTR InstName RLOAD2 SYMATTR Value 1k SYMBOL OpAmps\\LT1014 -496 304 M180 SYMATTR InstName U3 SYMBOL pmos -304 80 M180 SYMATTR InstName M1 SYMATTR Value BSS84 SYMBOL nmos -48 16

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required