I am trying to design a programmable current source that can go up to 5 A. I have a few designs in mind but none of them really seem to be best solution. I would appreciate if any one has any good opinion of a new design or an improvement.

The first design:

For the first design I simply use power amplifier from Burr-Brown - OPA549 [datasheet]. I know the load resistance (R_L), so I simply change the Voltage output of the voltage follower, and since the power amp can handle the current (up to 8A continuous) . The circuit is pretty straight forward.

Current Source with OPA549

The problem with this circuit is the power dissipated (wasted) as heat. From the OPA549 datasheet : enter image description here

It has horrible output voltage swing to supply voltage characteristics. My R_L is about 1 Ohm. So to drive 5 A, I have to produce a 5V output through the voltage follower. Which means, I have to use at least 8V supply ( to compensate for horrible output voltage swing). 8V is not a standard supply, so I use a 9V supply. And the power dissipated becomes: PD = IL (Vs-Vo) = 5 (9-5) = 20 Watts [Page 11 of the datasheet]. I have tried to find other power amplifiers to replace it. But could not find others that could go up to 5A. I have found rail to rail 2A power amplifiers, but I cannot use that.

The second method

Use a BJT with a microcontroller :

I basically control the current through the load (iC) by controlling the base current (iB) of the BJT. enter image description here

The problem with this approach is the unreliable beta value in the npn transistors. And I don't know how noisy the signal will be.

The third method I can use a opamp and a BJT like so:

enter image description here

But it too is highly dependent on that Beta value.

The fourth choice

This is probably the best solution, but I am not very sure and need some opinions. It uses a Opamp and mosfet like so:

enter image description here

The full discussion of this circuit can be found here.It seems to only depend on the resistor R3 (R_L in my case), which I know the value of precisely.

Which method should I use? the current through the Load must be as precise as possible, since I am controlling the current with a PID control. I would appreciate any and all suggestions.

  • 3
    \$\begingroup\$ Your third method is NOT highly dependent on the Beta value. The negative feedback of voltage accross R_E makes Io proportional to Vi (it is still very little dependent of beta because base current also flows through R_E; but this problably can be negelected; using a Darlington transistor would reduce this little effect further). \$\endgroup\$
    – Curd
    Feb 1, 2013 at 10:30
  • \$\begingroup\$ Using Darlington is a good idea, because power transistors don't have good Beta values. But is 5A not too much for Darlingtons? How much power will it dissipate? \$\endgroup\$ Feb 1, 2013 at 10:45
  • \$\begingroup\$ I did some digging around - I take it back, I found Darlington transistors that can handle up to 12 A \$\endgroup\$ Feb 1, 2013 at 10:54
  • \$\begingroup\$ e.g. BDX68: beta > 1000, I_C_max = 25 A, P_diss_max = 200W. "How much power will it dissipate?" only depends on your supply voltage, your load, your R_E and of course I_C. \$\endgroup\$
    – Curd
    Feb 1, 2013 at 11:13
  • 1
    \$\begingroup\$ In your first solution you say, "The problem with this circuit is the power dissipated (wasted) as heat." This is true of all your solutions. What exactly are you trying to accomplish? What exactly are your requirements? It's not clear from your question at all: it sounds more like you have described the advantages and disadvantages of several linear current source implementations without actually saying what you want. \$\endgroup\$
    – Phil Frost
    Feb 1, 2013 at 11:54

2 Answers 2


All of these solutions will waste exactly the same amount of electrical energy, and generate the same amount of heat. Each of your circuits just changes which component gets hot.

These are all what's called a linear current source. A linear current source works (by definition) by converting excess voltage to heat. If your load requires 2V to reach the desired current of 5A, and the supply is 5V, the heat (power) \$P\$ will be the excess voltage \$E\$ times the current \$I\$:

\$ P = IE = 5A(5V-2V) = 5A\cdot 3V = 15 W\$

No way around that with any linear current source. You can spread it out or move it around different components, but you will never reduce it. Blame physics. The energy has to go somewhere.

If you want to reduce the wasted energy, you probably want a switched mode power supply (SMPS). The design of such is worthy of an entire book, but if you want a quick introduction, I suggest you read How can I efficiently drive an LED? Although you aren't driving an LED, the problem is essentially the same, since LEDs are ideally also driven with a current source.

However, since it sounds like your load is a fixed \$1 \Omega\$ resistor, you don't really need a current source. A voltage source would do just as fine, since a resistor is a current - voltage converter, by Ohm's law:

\$ E = IR \$

If it's allowable in your application, a simpler solution than an SMPS is to just switch the full battery voltage over your load on and off rapidly. If your supply is 5V then this will deliver 5A to your load. You can deliver 5A or 0A with low losses, and if you need something between those, then you switch it on and off rapidly, so the average current is your desired value. For many applications, this is good enough. If not, a SMPS is basically that, with an inductor added to smooth the current out to the average value across switching cycles.

  • \$\begingroup\$ Thanks! That is helpful, I did not know the difference between switched mode power supply and the linear current source. But the real issue with OPA549 is this - My load is 1 Ohm. And it needs 4V to reach 4A. But to get 4V output out of the opamp, I need at least a 6- 7 V source (which is hard to get, so I have to use a 9V). so, P = IE = 4A(9V- 4V) = 20 W. Now, if the OPA549 were rail to rail, I could have used a 5V source and gotten the 4V output easily . so, P = IE = 5A (5V - 4V) = 5 Watts. \$\endgroup\$ Feb 1, 2013 at 13:31
  • \$\begingroup\$ Btw, in case you are wondering what load is only 1 Ohm - I am trying to heat up a tungsten filament so that it can thermionically emit electrons. I am trying to control the current through these filaments that have resistance 1-2 Ohms. It has nothing to do with the question, but since you guys helped a lot, I just wanted to share the application. \$\endgroup\$ Feb 1, 2013 at 13:34
  • \$\begingroup\$ @EnderWiggins that would have been good information to provide in the question, because then we could have told you immediately that the best solution is probably to switch the full supply voltage on and off rapidly, as I explain in my last paragraph. The thermal mass of the filament will mean the rapid changes in current have very little effect on the temperature. \$\endgroup\$
    – Phil Frost
    Feb 1, 2013 at 13:36
  • \$\begingroup\$ Yeah that is a nother possibility. but from the literature I have reviewed so far - like this one -(scribd.com/doc/123333014/…) claims that even if the control signal is PWM , it induces noise. So switching the power supply on and off rapidly will induce some noise in the emission. Intuitively, my thoughts are the same as you - that it should not affect it that much. I have to test it out myself. But thanks, You have already helped me enough! \$\endgroup\$ Feb 1, 2013 at 13:52
  • \$\begingroup\$ By the way, why are you using the letter E for voltage instead of the more commen letter U in the formulas? \$\endgroup\$
    – Daniel K.
    Apr 30 at 10:47

In the second solution I'm somewhat missing the emitter resistor for the current feedback. I would try something like the second solution, but with the required emitter resistor. Look here: https://en.wikipedia.org/wiki/File:Const_cur_src_111.svg You can adjust the current with the emitter resistor and the base voltage. The discussion of the equation is here https://en.wikipedia.org/wiki/Current_source However, using a a Darlington or arranging two regular transistors to a Darlington is certainly a good idea. And I would start by adjusting the base voltage with a potentiometer.

Nevertheless, there will be a lot of heat in any case, unless you use a PWM approach.

Ah, and this Voltage controlled current source might also be interesting for you, since what - from my understanding - you need is a voltage controlled current source, because what you get from the DAC is a voltage.


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.