Accurate Variable Current Sink? Differential Voltage Reference?
Some background:
I have recently aquired a few really nice (and really heavy!!!) LAMBDA power supplies, The largest one supplies 24V, and up to 9A, but has annoying foldback current limiting, which causes the output shut off when even a short period overload (like inrush current) is detected.
What I want:
I would like to modify this power supply to give me (ideally) completly variable 0-15v dual rail voltages & 0-5A adjustable current limit, & I would like this to be controlled with arduino so that I can use a nice LCD display and control the supply remotely with a bluetooth or wifi app, and possibly do some data logging which could come in handy for energy measurements and stuff!
My current PSU design:
The schematic below is what I've currently built in LTspice. Both the voltage & current regulation work. The voltage across the (+) and (-) inputs of the current error amplifier should be the sum of the voltage drop across the shunt resistor and the voltage drop of a voltage reference, so when the voltage on the shunt resistor exceeds the voltage of that reference, the op amp will start to limit current by reducing the bias voltage on the pass transistor.
This V_ref needs to be both variable and accurate, but since this V_ref is a differential voltage between the output of the pass transistor and the input of the error amp, I came up with the clever idea to use a resistor there and a variable constant current sink. That way the constant current through that resistor results in a fixed V_drop across it. With a bit of fudging around with it, I was able to make it work. However, I need to replace that "ideal" current sink with a real one. I tried using the classic NPN-based one, but it wasn't good enough. I then attempted to make the slightly improved version of that current sink with a spare op amp, although this worked, it would stop pulling current once the voltage fell below what was being maintained across the small resistor.
The REAL question:
Would anyone happen to know how to make a really accurate and variable current sink? Maybe if this is not such a great idea, what other methods can I use to generate a fixed differential voltage?
Discussions
5 years ago
Schematic update: I have finally achieved (pretty closely) the capabilities I want, although I might have to lower the maximum voltage requirement to 12V or something along those lines. This is my latest schematic. The bottom half is missing, I know. I will more-or-less mirror the top half to the bottom, I would imagine it should work after rearranging a few things.
Answer 5 years ago
Version
4
SHEET
1 1680 776
WIRE
32 -720 -272 -720
WIRE
528 -720 128 -720
WIRE
624 -720 528 -720
WIRE
800 -720 704 -720
WIRE
976 -720 800 -720
WIRE
1232 -720 976 -720
WIRE
1280 -720 1232 -720
WIRE
-144 -576 -192 -576
WIRE
-16 -576 -144 -576
WIRE
80 -576 80 -656
WIRE
528 -560 528 -720
WIRE
-144 -368 -144 -576
WIRE
-96 -368 -144 -368
WIRE
32 -368 32 -512
WIRE
32 -368 -16 -368
WIRE
176 -368 32 -368
WIRE
384 -352 384 -368
WIRE
528 -336 528 -480
WIRE
528 -336 416 -336
WIRE
352 -320 240 -320
WIRE
800 -304 800 -720
WIRE
800 -304 416 -304
WIRE
384 -272 384 -288
WIRE
1232 -272 1232 -720
WIRE
176 -240 176 -272
WIRE
528 -192 528 -336
WIRE
528 -48 528 -112
WIRE
800 -48 800 -304
WIRE
32 16 32 -368
WIRE
176 16 32 16
WIRE
-272 48 -272 -720
WIRE
-272 48 -416 48
WIRE
800 48 800 32
WIRE
800 48 416 48
WIRE
976 48 976 -720
WIRE
1072 48 976 48
WIRE
352 64 240 64
WIRE
800 64 800 48
WIRE
528 80 416 80
WIRE
-640 128 -640 48
WIRE
-272 128 -272 48
WIRE
-416 144 -416 48
WIRE
176 144 176 112
WIRE
976 144 976 48
WIRE
1072 144 1072 48
WIRE
528 160 528 80
WIRE
-640 256 -640 208
WIRE
-640 256 -672 256
WIRE
-416 256 -416 208
WIRE
-416 256 -640 256
WIRE
-272 256 -272 208
WIRE
-272 256 -416 256
WIRE
384 256 384 96
WIRE
384 256 -272 256
WIRE
528 256 528 240
WIRE
528 256 384 256
WIRE
800 256 800 144
WIRE
800 256 528 256
WIRE
976 256 976 208
WIRE
976 256 800 256
WIRE
1072 256 1072 208
WIRE
1072 256 976 256
WIRE
1232 256 1232 -192
WIRE
1232 256 1072 256
WIRE
-640 288 -640 256
WIRE
-272 288 -272 256
WIRE
-416 304 -416 256
WIRE
-640 448 -640 368
WIRE
-416 448 -416 368
WIRE
-272 448 -272 368
WIRE
-272 448 -416 448
FLAG
-672 256 0
FLAG
-640 48 Vcc
FLAG
1280 -720 Output
FLAG
-640 448 Vss
FLAG
-192 -576 Vcc
FLAG
384 -368 Vcc
FLAG
384 32 Vcc
FLAG
384 -272 0
FLAG
528 -48 0
FLAG
176 -240 0
FLAG
176 144 0
SYMBOL
voltage -272 112 R0
WINDOW
123 0 0 Left 2
WINDOW
39 24 124 Left 2
SYMATTR
InstName V1
SYMATTR
Value 16.2
SYMATTR
SpiceLine Rser=0.02
SYMBOL
voltage -272 272 R0
WINDOW
123 0 0 Left 2
WINDOW
39 24 124 Left 2
SYMATTR
InstName V2
SYMATTR
Value 16.2
SYMATTR
SpiceLine Rser=0.02
SYMBOL
npn3 -16 -512 R270
SYMATTR
InstName Q1
SYMATTR
Value 2N4401
SYMBOL
res 720 -736 R90
WINDOW
0 0 56 VBottom 2
WINDOW
3 32 56 VTop 2
SYMATTR
InstName R1
SYMATTR
Value 0.1
SYMBOL
cap 1056 144 R0
SYMATTR
InstName C1
SYMATTR
Value 470F
SYMATTR
SpiceLine Rser=0.5
SYMBOL
res -112 -352 R270
WINDOW
0 32 56 VTop 2
WINDOW
3 0 56 VBottom 2
SYMATTR
InstName R2
SYMATTR
Value 1k
SYMBOL
voltage 528 144 R0
WINDOW
123 0 0 Left 2
WINDOW
39 0 0 Left 2
SYMATTR
InstName Voltage_set
SYMATTR
Value 3V
SYMBOL
res 1216 -288 R0
SYMATTR
InstName Rload
SYMATTR
Value 1
SYMBOL
cap -432 144 R0
SYMATTR
InstName C2
SYMATTR
Value 10,000u
SYMBOL
cap -432 304 R0
SYMATTR
InstName C3
SYMATTR
Value 10,000u
SYMBOL
cap 960 144 R0
SYMATTR
InstName C4
SYMATTR
Value 1F
SYMBOL
res 784 48 R0
SYMATTR
InstName R3
SYMATTR
Value 1k
SYMBOL
res 784 -64 R0
SYMATTR
InstName R4
SYMATTR
Value 2k
SYMBOL
pnp2 240 -272 R180
SYMATTR
InstName Q4
SYMATTR
Value 2N2907
SYMBOL
voltage -640 112 R0
WINDOW
0 -125 58 Left 2
WINDOW
3 36 45 Left 2
WINDOW
123 0 0 Left 2
WINDOW
39 34 72 Left 2
SYMATTR
InstName Aux_V5
SYMATTR
Value 25
SYMATTR
SpiceLine Rser=1
SYMBOL
voltage -640 272 R0
WINDOW
0 -124 55 Left 2
WINDOW
3 34 37 Left 2
WINDOW
123 0 0 Left 2
WINDOW
39 34 67 Left 2
SYMATTR
InstName Aux_V6
SYMATTR
Value 25
SYMATTR
SpiceLine Rser=1
SYMBOL
npn3 32 -656 R270
SYMATTR
InstName Q3
SYMATTR
Value 2N3055
SYMBOL
pnp2 240 112 R180
SYMATTR
InstName Q2
SYMATTR
Value 2N2907
SYMBOL
res 512 -576 R0
SYMATTR
InstName R5
SYMATTR
Value 100
SYMBOL
current 528 -192 R0
WINDOW
123 0 0 Left 2
WINDOW
39 0 0 Left 2
SYMATTR
InstName Current-Set
SYMATTR
Value 1mA
SYMBOL
Opamps\\LT1014A 384 -384 M0
SYMATTR
InstName U1
SYMBOL
Opamps\\LT1014A 384 0 M0
SYMATTR
InstName U2
TEXT
12 374 Left 2 !.tran 1 startup uic
TEXT
560 -152 Left 2 ;1000:1 current ratio
TEXT
568 200 Left 2 ;3:1 voltage ratio
Answer 5 years ago
Above is the entire data file for my simulation. Copy that into notepad, and save it as .asc to make it openable by LTspice. Or (if the download works) simpely download the file posted in this comment.
5 years ago
note: You might need to click the schematic twice to open it in another window to view it in "original" quality to see the values on the parts.