Adjusting injected voltage bias for current feedback with Picaxe.

Shafto

Senior Member
Planning to control the brightness of a 1A LED from Off-1000mA using a hall effect sensor detecting the proximity of a magnet, running off a single 2.8-4.2v Li-Ion cell.

Originally I planned to use the LTC3454 driver, for which I could easily use a DAC controlled by the picaxe to manipulate the output.

Datasheet:
http://cds.linear.com/docs/Datasheet/3454fa.pdf



I then came across the TPS63000 by TI, while the LTC3454 can only manage 85% efficiency, or maybe 87% with 2 added diodes, where size is a concern, I decided I would try to use the TI product which can achieve well over 90% efficiency and uses a smaller inductor. Unlike the LTC3454 which is an LED specific constant current driver, the TPS63000, is a DC/DC voltage regulator which would need modification to work in a constant current mode.

TPS63000 Datasheet:
http://focus.ti.com/lit/ds/symlink/tps63000.pdf



I found some other TI literature on using a voltage bias technique to raise voltage on the feedback pin to lower power consumption across the current sensing resistor needed to run the TPS in a constant current mode.

http://focus.ti.com/lit/ug/slva268/slva268.pdf

Using a 2.5V voltage reference with a voltage divider to inject voltage into the FB pin allows the use of a smaller current sensing resistor.

I found more TI literature about the voltage bias technique that has a formula for calculating these values.

http://focus.ti.com/lit/an/slva211/slva211.pdf

R8 = R6 [(Vf / Vref – Vcs) -1]

R8 = 248199

Vf = 3.5V
Vref = 0.5V
Vcs = 0.239V (value from the graph, using the 0.23 given value doesn’t equate)
R6 = 20K

Where Vref is the feedback reference voltage on the chip, and Vcs is the desired voltage across the current sense resistor.

Schematic for my Setup:



Using this formula, which is just a voltage divider formula, I get:

Vf = 1.95V - 2.5V
Vref = 0.5V
Vcs = 0V - 0.104V
“R6” = 232K

So,

“R8” = 910K

When The DAC is adjusted I get from 1.95V - 2.5V going into the second voltage divider, which then lowers this to a 0.396V - 0.508V signal for the biasing of the FB pin which gives from off, to just over 1000mA output using a 0.1Rsns current sense resistor.

Ideally I would have 0.4V - 0.5V going to the FB pin, but I’m giving myself some leeway on either side to take tolerances into account. The output minimum and maximum can then be set by the DAC.

The 680K pot is to adjust for the 20% tolerance in the 100K DAC.

For 1.95V - 2.5V output when DAC is adjusted,

If DAC = 100K then Pot = 345345R
If DAC = 120K then Pot = 425454R
If DAC = 80K then Pot = 283636R

The reason I’m doing it this way, is so I can use the 1.95V - 2.5V signal to feed the biasing voltage divider of multiple LED drivers to control their brightness.

I’m using 0.1% 910K and 232K resistors to try and keep the output of each driver as close as possible to each other, there is also the variance in the FB pin voltage of 0.495V - 0.505V, which can be accounted for then I set the high and low points of the DAC in the code to achieve (hopefully as low as) 20mA – 1000mA. I’m hoping the chips coming from the same batch will have a similar FB voltage to each other, so the output is well matched among drivers and I can lower the output to around 20mA without noticeable brightness difference between them. If it’s not possible, then maybe I will try to use current dimming down to 200mA or so and then PWM from there to lower output further.



There are some other documents from TI with other formulas using voltage biasing and voltage injection dimming here:

http://focus.ti.com/lit/an/slea004/slea004.pdf

http://focus.ti.com/lit/ug/slvu068/slvu068.pdf

Math isn’t my strongest point, and I couldn’t get the formulas in either document to equate with the given values, I suppose I’m doing something wrong with my rusty algebra. The values in these documents don’t work though, with the other method I used for determining the resistor values for the voltage divider, even though slea004 states that the injected voltage and the voltage across the current sensing resistor must add up to the FB pin voltage, which is what I’ve done in my case, so I’m not really too sure what’s going on with these docs, haven’t quite figured that out yet, I’m just hoping it’s going to work the way I have it planned.

It seems if I do figure out these docs, rather than having a voltage divider requiring a pot to tune for the tolerance of the DAC to inject 1.95V - 2.5V, I could just inject 0V - 2.5V through a resistor using the DAC alone as a voltage divider, and do away with the pot.

Just thought I would put this all into words as it helps me organize my thoughts, and if anyone sees any big mistake I’m about to make, please me let me know, I’ll be ordering the parts soon.
 

BeanieBots

Moderator
An interesting little ramble but I fear you may have got a little lost.
It's not absolutely clear why you have taken the path you have gone down. I get the impression it is related to efficiency. If that is the case, then you may have fooled yourself into making things more complex than they need to be.

The higher efficiency voltage converter is only higher efficiency because it does not have an inline current sense. By putting one in to make it a current driver you are already back to the lower inefficiency not to mention all the extra quiescent power used by your DAC, 2.5v reference et al.

You could simply feed PWM into an RC which then feeds via a resistor into a modified feedback.
Personally, I prefer to use an op-amp to sum into the feedback but there's a 100 ways to skin this cat.

As for your algebra. I've not done any sums on your networks values but it shouldn't be too tricky. Basic Kirchoff stuff but make sure your references really are what you think they are (under ALL loading conditions).
Also, you should be able to eliminate a few of those resistors and simplify the maths.

Good luck.
 

Shafto

Senior Member
Well, the whole point of the voltage injection to the feedback pin is so you can use a much smaller current sensing resistor to regain that efficiency that is normally lost.

By injecting 0.4V into a 0.5Vfb you essentially get a 0.1Vfb, cutting your resistor loss by a factor of 5.

The on resistance of the internal switches on the TI chip are much lower than the linear chip. I looked into other ways to do this, but the preferred method from TI seems to be biasing up the FB pin with voltage injection as per slva268.pdf

I guess I'll just give it a try!
 

boriz

Senior Member
In theory...

Best efficiency = No ballast resistor. Use a constant voltage supply instead. It needs to be very stable and accurate to within a few millivolts, and it needs to be tuned for your particular LEDs Vf, which will probably vary slightly from unit to unit. Only problem then should be variations in Vf due to temperature. If it becomes a problem, then feedback could be achieved using an LDR to stabilise the voltage for a particular LED brightness.

Test’s need to be carried out before hand to establish the LEDs brightness at nominal current using the appropriate series resistor, and to measure the Vf at that current.

Gotta be worth a try. Just don’t blame me if you get it slightly wrong and the LED goes pop.
 

fernando_g

Senior Member
Shafto;
I do follow you, because I've also experimented with lowering the sense resistor's voltage drop, to minimize its power loss.

Let me tell you the problem I see with your circuit topology...the TI's literature assumes that the pre-biasing voltage is fed from a constant impedance source... in other words, you may vary the voltage, but its rsistance should not change.
However, with your circuit as shown, you will vary both the voltage and impedance...and since the ADC and pot impedances are in the same order of magnitude as your injection resistor, the results will be unpredictable.

I would advise that either:
1) Change your variable resistors to be 2 orders of magnitude lower than your injection resistor. The resultant values may be too low to be practical, or consume way too much quiescent current.

2) Keep the values as-they-are, Use an unity-gain buffer between the variable resistors and the injection resistor. The buffer may be as simple as an emitter or gate follower (you'll need to compensate the adjustment voltage for Vbe or Vth drop respectively) or an opamp.

Either way, your math algebra will be a lot simpler.
 

Shafto

Senior Member
Yes, that would be nice, but I think there are too many variables. The drop in output as temperature goes up, light output differences across bins and such, it would be harder to set up with and LDR as the feedback, but that would be pretty neat.

Using a 0.1R for current sense, and injecting 0.4V to the 0.5V FB, at 1A I'm consuming 0.1W across the resistor, losing probably about 3% more from the claimed 96%. I'd like to halve that by injecting 0.45V, but the problem I get is then only get 0.05V to adjust the output from 1A with 0.45V to off with 0.5V. Even with the 0.1% 2.5V reference I was planning to use, and the 0.1% resistors for the voltage divider, it becomes a bit of a problem to keep all 5 drivers I want to control at once, within acceptable outputs of each other.

I'm thinking that if I could inject the dimming voltage separately from the 2.5V reference through a DAC used as a voltage divider (so the 20% tolerance doesn't matter and I don't need another pot to tune for that) as per slvu068.pdf and slea004.pdf rather than varying the output from the 2.5V reference from 1.95V to 2.5V and feeding that into the voltage divider of each device, which then lowers it to 0.396V - 0.508V, then I could probably gain back some precision for the dimming and maybe get away with injecting more voltage and using a 0.05R for 1A. and getting back a bit more efficiency.




Edit:

Fernando, thanks for the reply, you must have posted while I was posting. I've never experimented with a unity gain buffer before. Would using the technique in slvu068 and slea004 solve the varying impedance problem? I don't know what was wrong with me before, too many different documents and not enough sleep I guess! but I think I've got the equations figured out from slea004.pdf.






For me:

Vcs = 0.1
Iout_max = 1
Rbias = 100K
Vadj_min = 0
Vadj_max = 2.5
Vfb = 0.5
Vb = 2.5

Which means,

R2 = 525K
R3 = 21K

Or, if I want to go down to a 0.05R current sense,

Rbias = 100K
R2 = 1150K
R3 = 23K

Then I can just use a DAC as a voltage divider injecting the 2.5V through the 1150K. I'll have to do check out how much everything moves around with tolerances, but I think that should work?
 
Last edited:

fernando_g

Senior Member
That would work better.
Your DAC's equivalent resistance would vary from close to 0 at the endpoints to ~50k at midpoint. In series with 1150k that would cause (at worst case) aprox a 5% error. I think you can live with that.

BUT...if you are going to feed several LED drivers from the same DAC, then you definitively WILL REQUIRE a buffer. Use at the very least a NPN emitter follower. You'll need to compensate for the 0.6 to 0.7 Vbe drop.
 

Shafto

Senior Member
Thanks again Fernando, for more of your help.

I will need the buffer because the FB pin in the chip will expect to see a lower impedance than what I will have through the voltage divider? Which would be able to supply the FB of 1 chip, but not 5?

How exactly does the varying impedance cause an error in the output? I've looked into simple buffers, and they don't seem too difficult, but I'd like to understand why exactly I need one in this case.




Checking for error in the output with my first scheme I mentioned was pretty easy, using different values for the possible tolerance in resistors and voltage references. It becomes more time consuming with larger equations like the one I posted, what do most people do when designing circuits? I'm thinking maybe I should figure out how to put it into excel so that I can just enter different values for the variables and see the change?
 

fernando_g

Senior Member
Checking for error in the output with my first scheme I mentioned was pretty easy, using different values for the possible tolerance in resistors and voltage references. It becomes more time consuming with larger equations like the one I posted, what do most people do when designing circuits? I'm thinking maybe I should figure out how to put it into excel so that I can just enter different values for the variables and see the change?
This is what circuit simulators are for. If you are into PICAXEs, I'll suggest VSM. Otherwise, there are some freebies, the best being Linear Technologie's SwitcherCAD.

When you feed 5 circuits instead of one, your load impedance becomes 1/5 of the original... sudenly, you have the control resistance, varying from 0 to 50k feeding a load 1150/5 = 230k.

50k is ~20% of 230k, and thus it will have that much error from the real adjustment.
Whether that is acceptable or not, it is up to you, but the cost of a small signal NPN transistor is almost negligible, thus I would include it regardless.
 

Shafto

Senior Member
How is this error created? the voltage remains the same, and the input to the FB pin is high impedance, there is enough current available to supply it, so why does the change in source impedance matter? Sorry to question you to death, just trying to understand.

And what if I just use a 10K DAC for the voltage input?

Not trying to get around using the buffer necessarily, just trying grasp it all so I can re-aply this technique in the future.
 

Goeytex

Senior Member
Is there really a legitimate quibble over the loss of efficiency in an SPMS with
a .03 ohm current sense ?

Yep that big guy is using every bit of about 30 mw. So if the LED consumes
3 watts, that's a whopping 1 percent loss of efficiency.

The .1 ohm resistor represents a more significant loss of about 3 percent
but even that is not the major loss factor in an SPMS. Wish it were that
simple. I'll take 90- 95 percent efficiency any day in a Buck/Boost LED driver
that must run from a relatively low voltage battery.

Good heatsinking of the 3 watt LED will be more important to overall
efficiency (Lumens per watt) than the current sense.

BTW the circuits in the App notes model up nicely in SPICE.
 

Goeytex

Senior Member
Shafto,

Check out the ZLD1322 From Diodes Inc. Current is limited to 700 ma but
that is more efficient than driving a 1 amp LED at full power. Alternatively
you could drive 2 Luxeon Rebels or 2 Cree XPG's in series at 350 - 500 ma
and have more light output than a single LED at 1 amp. (Depending upon the
LED)

The ZLD1322 should do exactly what you want and should eliminate almost all
of design headaches you are dealing with. Efficiency is not great but should
be well over 80 percent which is not bad for a buck/boost running off of a
single LiIon Battery.

Now, if you had 2 batteries you could simply use a 1 Amp BuckPuck from
LED Dynamics and the problem is solved. I test one of these last year and
saw an efficiency of about 96 percent when driving a string of 7 Cree XR-Es
at 700 ma.

The downside is that the Buck Puck takes up quite a bit of real estate. So
if your device needs to be teeny tiny it may not be an option.

Goey
 
Last edited:
Top