Transistor as a current limiter

On 13 Jul 2013 23:29:37 GMT, Jasen Betts <jasen@xnet.co.nz>
wrote:

On 2013-07-13, Jon Kirwan <jonk@infinitefactors.org> wrote:
how much of the messages you ignore (or killfile) get downloaded
depends to a large part on the capabilities of your reader and
the server.

I only download headers via NNTP and then, selectively,
download bodies when I care to read them.

yeah, but does your software use XHDR or HEAD? The former pulls a single
header from several messages whereas the latter pulls all headers from
a single message.
Interesting. So I went to this site:

http://www.forteinc.com/agent/faq.php#D8212751186A878A852571C800049E02

where it discusses my reader (Agent.) Apparently, by default,
it does not use XHDR... but it can.

If your killfiles only use four headers, 4 XHDR requests will be more
much more efficient than 100 HEAD requests,
I'm still learning about this. And thanks for making me more
aware.

Also headers are often larger than message bodies.
I can easily believe that. Lots of message bodies are very
short.

sci.electronics.design is about 200 megbytes per year of message
content (including headers) (I have local retention back to January so
I doubled it) 40000 messages each year and perhaps 200 bytes of NNTP
overhead on each, for another 8 megabytes, and on top of that TCP
overhead, so maybe 220 megabytes per year for S.E.D

Probably lots less than that, then, since most of what I get
from SED remains headers-only.

Hmm... I can count that.

jasen@gonzo:/var/spool/news/sci/electronics/design$ find -type f -ctime -183 -exec 'sed' '/^$/,$ d' {} ';' | wc
457382 1757014 29908634

Hbout 30 megabytes of headers in the last 183 days.
Okay. Believable, too. I only examine 3 newsgroups on a daily
basis. sci.electronics.basics, sci.electronics.design, and
comp.arch.embedded. That's it.

total message size:
find -type f -ctime -183 -exec cat {} ';' | wc
1567860 8477618 70408901

Hmm, 70 megs, looks like I over-estimated total volume

So 40 megs message body, So the header:body ratio is
approximately 3:4

How much is quoted content?

find -type f -ctime -183 -exec cat {} ';' | sed '/^ *>/ p;d' | wc
643846 4338102 24717942

Almost 25 megs, well over half. (ignoring the quotes by those who use
non-standard quoting styles, mainly Phil A. and one of the political
activists whose handle I don't recall)

so, headers are more almost twice the volume of the new content.
Thanks for the results. It makes it pretty clear that I would
have quite a long ride with 1000 gig of metered newsgroups.
Even if it were a gig a year for the 3 groups, and if I
didn't allow myself to die until it expired, I'd be the new
Methuselah.

Even adding a binary group, if I don't download things I
don't want, should work okay.

Best way to find out is to buy the tiniest package they offer
and see how long it lasts. That will be the benchmark, then.
Assuming I live long enough to see even that expire....

Jon
 
On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
<jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip
Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

I do NOT like the capacitor there. When inactive (OFF), C1
charges up to Vcc across it, if C1 is small enough (if C1 is
big, then it never reaches Vcc across it.) When active (ON),
the common node between C1 and R4 jumps up towards 1.2V below
Vcc and in doing so causes the collector of Q2 to be driven
below ground, Vcc-1.2V-Vc1=-1.2V since Vc1=Vcc. As C1
discharges it actually borrows current from Q3's collector
(rather than from R3) causing a lower current in R3, yielding
a lower voltage potential for Q2's base... leading to
diversion of R2's current towards Q1 and thus MORE drive
current into Q4 through Q7. The upshot is that upon turn-on,
the peak current in the LEDs is actually HIGHER than designed
and it then gently settles down to the desired level as C1
discharges to a new (lower) potential across its leads. This
is spikey behavior instead of a "soft start." Make C1 bigger
and it gets worse, too. The sharp leading edge will reach
even higher initial currents in the LEDs that way.

So it's value should be kept small. I'm not yet convinced
about the danger of oscillations or the source of them in
this circuit. There are very low impedances on every node of
Q2. It just doesn't seem necessary to me. I don't see how the
small Cbc value and the value of Rb' can conspire to make a
problem here, even with the collector making a small jump at
turn on. And it actually seems to have a downside where I'd
rather simply remove it.

I might also invert the whole structure and delete R1 and D1,
if my LED supply was a volt or more above the micro rail
voltage. The pin output won't be loaded much and will
probably be a very close reflection of the micro rail
voltage. Of course, I'd adjust values, accordingly.

For example, if my micro were running on 3.6V and my LED
supply were 6V (hypothetically) and I wanted 100mA and 5
chains of them (not 4), then I might invert the polarities
and use R3=36 ohms, R2=470 ohms, and R4=270 ohms, kill C1,
and just drive the base of Q1 directly.

I'd start the design by estimating the total base currents
required for Q3 through Q7 (600mA/beta=200, or about 3mA.)
Then I'd double that for the diff-amp pair to 6mA. Given 3.6V
drive and an estimated 0.7V drop on Q1, I get 2.9V at Q1's
emitter. So 2.9V/6mA is 483 ohms. 470 is a standard value and
gives a slight increase in estimated current, so I'd use that
value instead. I also want 3.6V across R3 at 100mA, so 36
ohms. Changing that to 33 or 39 ohms would change the LED
currents by 10% or more. Luckily, 5% resistors do come in 36
ohms. So I'd stick with that. Then, since R4 should be
(assuming 3mA in each branch, hopefully) at about one 100mA
sized Vbe (about 110mV added to 700mV as a guess), so R4
should be about 0.81/3mA, or 270 ohms. Nice. Standard value.
So that's where I'd get my values.

I'm still stuck trying to understand C1's benefit.

Jon
 
On 2013-07-14, Jon Kirwan <jonk@infinitefactors.org> wrote:
On 13 Jul 2013 23:29:37 GMT, Jasen Betts <jasen@xnet.co.nz
wrote:

On 2013-07-13, Jon Kirwan <jonk@infinitefactors.org> wrote:
how much of the messages you ignore (or killfile) get downloaded
depends to a large part on the capabilities of your reader and
the server.

I only download headers via NNTP and then, selectively,
download bodies when I care to read them.

yeah, but does your software use XHDR or HEAD? The former pulls a single
header from several messages whereas the latter pulls all headers from
a single message.

Interesting. So I went to this site:

http://www.forteinc.com/agent/faq.php#D8212751186A878A852571C800049E02

where it discusses my reader (Agent.) Apparently, by default,
it does not use XHDR... but it can.

If your killfiles only use four headers, 4 XHDR requests will be more
much more efficient than 100 HEAD requests,

I'm still learning about this. And thanks for making me more
aware.

Also headers are often larger than message bodies.

I can easily believe that. Lots of message bodies are very
short.

sci.electronics.design is about 200 megbytes per year of message
content (including headers) (I have local retention back to January so
I doubled it) 40000 messages each year and perhaps 200 bytes of NNTP
overhead on each, for another 8 megabytes, and on top of that TCP
overhead, so maybe 220 megabytes per year for S.E.D

Probably lots less than that, then, since most of what I get
from SED remains headers-only.

Hmm... I can count that.

jasen@gonzo:/var/spool/news/sci/electronics/design$ find -type f -ctime -183 -exec 'sed' '/^$/,$ d' {} ';' | wc
457382 1757014 29908634

Hbout 30 megabytes of headers in the last 183 days.

Okay. Believable, too. I only examine 3 newsgroups on a daily
basis. sci.electronics.basics, sci.electronics.design, and
comp.arch.embedded. That's it.

total message size:
find -type f -ctime -183 -exec cat {} ';' | wc
1567860 8477618 70408901

Hmm, 70 megs, looks like I over-estimated total volume

So 40 megs message body, So the header:body ratio is
approximately 3:4

How much is quoted content?

find -type f -ctime -183 -exec cat {} ';' | sed '/^ *>/ p;d' | wc
643846 4338102 24717942

Almost 25 megs, well over half. (ignoring the quotes by those who use
non-standard quoting styles, mainly Phil A. and one of the political
activists whose handle I don't recall)

so, headers are more almost twice the volume of the new content.

Thanks for the results. It makes it pretty clear that I would
have quite a long ride with 1000 gig of metered newsgroups.
Even if it were a gig a year for the 3 groups, and if I
didn't allow myself to die until it expired, I'd be the new
Methuselah.

Even adding a binary group, if I don't download things I
don't want, should work okay.
ABSE content in the last 6 months
$ find -type f -ctime -183 -exec cat {} ';' | wc -c
11504635

11.5 megs since 14-January.

Best way to find out is to buy the tiniest package they offer
and see how long it lasts. That will be the benchmark, then.
Assuming I live long enough to see even that expire....
$10 for 25G, probably enough.

--
⚂⚃ 100% natural

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
 
On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.
It wastes 25% of the supply power just to sense the LED current.

And it depends on transistor matching. I don't see how it avoids thermal runaway
by pulsing.

Usual EDN standard of quality. They need filler between the ads.

I do NOT like the capacitor there. When inactive (OFF), C1
charges up to Vcc across it, if C1 is small enough (if C1 is
big, then it never reaches Vcc across it.) When active (ON),
the common node between C1 and R4 jumps up towards 1.2V below
Vcc and in doing so causes the collector of Q2 to be driven
below ground, Vcc-1.2V-Vc1=-1.2V since Vc1=Vcc. As C1
discharges it actually borrows current from Q3's collector
(rather than from R3) causing a lower current in R3, yielding
a lower voltage potential for Q2's base... leading to
diversion of R2's current towards Q1 and thus MORE drive
current into Q4 through Q7. The upshot is that upon turn-on,
the peak current in the LEDs is actually HIGHER than designed
and it then gently settles down to the desired level as C1
discharges to a new (lower) potential across its leads. This
is spikey behavior instead of a "soft start." Make C1 bigger
and it gets worse, too. The sharp leading edge will reach
even higher initial currents in the LEDs that way.

So it's value should be kept small. I'm not yet convinced
about the danger of oscillations or the source of them in
this circuit. There are very low impedances on every node of
Q2. It just doesn't seem necessary to me. I don't see how the
small Cbc value and the value of Rb' can conspire to make a
problem here, even with the collector making a small jump at
turn on. And it actually seems to have a downside where I'd
rather simply remove it.

I might also invert the whole structure and delete R1 and D1,
if my LED supply was a volt or more above the micro rail
voltage. The pin output won't be loaded much and will
probably be a very close reflection of the micro rail
voltage. Of course, I'd adjust values, accordingly.

For example, if my micro were running on 3.6V and my LED
supply were 6V (hypothetically) and I wanted 100mA and 5
chains of them (not 4), then I might invert the polarities
and use R3=36 ohms, R2=470 ohms, and R4=270 ohms, kill C1,
and just drive the base of Q1 directly.

I'd start the design by estimating the total base currents
required for Q3 through Q7 (600mA/beta=200, or about 3mA.)
Then I'd double that for the diff-amp pair to 6mA. Given 3.6V
drive and an estimated 0.7V drop on Q1, I get 2.9V at Q1's
emitter. So 2.9V/6mA is 483 ohms. 470 is a standard value and
gives a slight increase in estimated current, so I'd use that
value instead. I also want 3.6V across R3 at 100mA, so 36
ohms. Changing that to 33 or 39 ohms would change the LED
currents by 10% or more. Luckily, 5% resistors do come in 36
ohms. So I'd stick with that. Then, since R4 should be
(assuming 3mA in each branch, hopefully) at about one 100mA
sized Vbe (about 110mV added to 700mV as a guess), so R4
should be about 0.81/3mA, or 270 ohms. Nice. Standard value.
So that's where I'd get my values.

I'm still stuck trying to understand C1's benefit.
It probably keeps the loop from oscillating.


--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
<jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

And it depends on transistor matching. I don't see how it avoids thermal runaway
by pulsing.
---
Read the article; he states why.
---
..
<snip>
..

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.
---
During turn-on and turn-off.

--
JF
 
On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
<jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.
A current mirror wastes current. That's what they do.

And it depends on transistor matching.
All current mirrors depend on matching Is, less with
degeneration. From my limited experience, this isn't a big
problem for LED driving if using parts from the same reel.
And it's pretty easy to test for, anyway.

I don't see how it avoids thermal runaway
by pulsing.
Yeah. If one of them heats up more than others, it's Vbe
declines by 2.3mV/C or something like that and this pulls the
others down with it, lowering their Ic. And if the feedback
BJT lowers its Ic the feedback circuit supplies more drive
current... and so on. I've epoxied parts together with
modestly okay effect here. But I've also bought arrays on
ICs, too (which at the prices I pay aren't exactly matched
well but again aren't terrible, either.)

Degeneration would seem to be a partial answer here, too.

A point in this circuit is low overhead drivers. What would
you do if designing a discrete, bipolar solution here? I'd
learn something from a good answer.

Usual EDN standard of quality. They need filler between the ads.
:)

I do NOT like the capacitor there. When inactive (OFF), C1
charges up to Vcc across it, if C1 is small enough (if C1 is
big, then it never reaches Vcc across it.) When active (ON),
the common node between C1 and R4 jumps up towards 1.2V below
Vcc and in doing so causes the collector of Q2 to be driven
below ground, Vcc-1.2V-Vc1=-1.2V since Vc1=Vcc. As C1
discharges it actually borrows current from Q3's collector
(rather than from R3) causing a lower current in R3, yielding
a lower voltage potential for Q2's base... leading to
diversion of R2's current towards Q1 and thus MORE drive
current into Q4 through Q7. The upshot is that upon turn-on,
the peak current in the LEDs is actually HIGHER than designed
and it then gently settles down to the desired level as C1
discharges to a new (lower) potential across its leads. This
is spikey behavior instead of a "soft start." Make C1 bigger
and it gets worse, too. The sharp leading edge will reach
even higher initial currents in the LEDs that way.

So it's value should be kept small. I'm not yet convinced
about the danger of oscillations or the source of them in
this circuit. There are very low impedances on every node of
Q2. It just doesn't seem necessary to me. I don't see how the
small Cbc value and the value of Rb' can conspire to make a
problem here, even with the collector making a small jump at
turn on. And it actually seems to have a downside where I'd
rather simply remove it.

I might also invert the whole structure and delete R1 and D1,
if my LED supply was a volt or more above the micro rail
voltage. The pin output won't be loaded much and will
probably be a very close reflection of the micro rail
voltage. Of course, I'd adjust values, accordingly.

For example, if my micro were running on 3.6V and my LED
supply were 6V (hypothetically) and I wanted 100mA and 5
chains of them (not 4), then I might invert the polarities
and use R3=36 ohms, R2=470 ohms, and R4=270 ohms, kill C1,
and just drive the base of Q1 directly.

I'd start the design by estimating the total base currents
required for Q3 through Q7 (600mA/beta=200, or about 3mA.)
Then I'd double that for the diff-amp pair to 6mA. Given 3.6V
drive and an estimated 0.7V drop on Q1, I get 2.9V at Q1's
emitter. So 2.9V/6mA is 483 ohms. 470 is a standard value and
gives a slight increase in estimated current, so I'd use that
value instead. I also want 3.6V across R3 at 100mA, so 36
ohms. Changing that to 33 or 39 ohms would change the LED
currents by 10% or more. Luckily, 5% resistors do come in 36
ohms. So I'd stick with that. Then, since R4 should be
(assuming 3mA in each branch, hopefully) at about one 100mA
sized Vbe (about 110mV added to 700mV as a guess), so R4
should be about 0.81/3mA, or 270 ohms. Nice. Standard value.
So that's where I'd get my values.

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.
That's what they say. But I still don't see it, probably
because I'm blind and not necessarily because it doesn't do
that. It's why I said I can't see it -- hoping someone would
explain it in detail to me. If you can see the exact
mechanism here, I'd like to see a detailed explanation.

Jon
 
On Sun, 14 Jul 2013 13:01:36 -0500, John Fields
<jfields@austininstruments.com> wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

And it depends on transistor matching. I don't see how it avoids thermal runaway
by pulsing.

---
Read the article; he states why.
---
He appears to depend upon a slow enough operation with low
enough duty cycles to allow cooling back towards ambient.
Saying, "The thermal-runaway effect does not have time to
develop."

.
snip
.

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.

---
During turn-on and turn-off.
Yes. As the article states. But as I point out, the effect of
a larger valued C1 is to cause the leading edge of the pulse
to have a noticeable higher current edge that gradually drops
back to the design value. Small values for C1 would have
little impact on it. Ahyway, he doesn't mention that behavior
and instead says it "prevents transient oscillations" but I
don't see how they occur as a result of switching on and off.

Jon
 
On Sun, 14 Jul 2013 11:10:54 -0700, Jon Kirwan
<jonk@infinitefactors.org> wrote:

snip
All current mirrors depend on matching Is, less with
degeneration. From my limited experience, this isn't a big
problem for LED driving if using parts from the same reel.
And it's pretty easy to test for, anyway.
snip
I should explain more about my experiences, I suppose.

I've no doubt at all that if one of the BJTs carries a
different Vce than others in the chain, and if the currents
are enough, thermal runaway just happens. The BJT with the
larger Vce is going to have its Vbe decline steadily with
some bad news.

But LEDs present fairly consistent Vce's to their driving
BJTs. (Usually a very low Vce, in fact, if you are keeping
the margins down to minimize wasted power.) The only
substantially different Vce is the current mirror BJT that
sets the current and is under loop control. It's almost
always the case that the control BJT is the very hottest one,
more so than any of the LED driver BJTs, since it has the
highest Vce.

If the control BJT heats up, then the response by the rest of
the system is to have lower Ic's. And since its dissipation
is fixed by design (its Vce is set and so is its Ic), it
settles at some resulting Vbe and the other BJTs exhibit less
Ic as they have a lower Vbe drive, less Vce, and are cooler.
So no runaway.

Jon
 
On Sun, 14 Jul 2013 13:01:36 -0500, John Fields <jfields@austininstruments.com>
wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

And it depends on transistor matching. I don't see how it avoids thermal runaway
by pulsing.

---
Read the article; he states why.
I read the article. It doesn't make sense.


---
.
snip
.

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.

---
During turn-on and turn-off.
And in-between.



--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
On Sun, 14 Jul 2013 11:16:30 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 13:01:36 -0500, John Fields
jfields@austininstruments.com> wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

And it depends on transistor matching. I don't see how it avoids thermal runaway
by pulsing.

---
Read the article; he states why.
---

He appears to depend upon a slow enough operation with low
enough duty cycles to allow cooling back towards ambient.
Saying, "The thermal-runaway effect does not have time to
develop."
That's not much different from running DC at the same average current.


--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
On Sun, 14 Jul 2013 11:10:54 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

A current mirror wastes current. That's what they do.

And it depends on transistor matching.

All current mirrors depend on matching Is, less with
degeneration. From my limited experience, this isn't a big
problem for LED driving if using parts from the same reel.
And it's pretty easy to test for, anyway.

I don't see how it avoids thermal runaway
by pulsing.

Yeah. If one of them heats up more than others, it's Vbe
declines by 2.3mV/C or something like that and this pulls the
others down with it, lowering their Ic. And if the feedback
BJT lowers its Ic the feedback circuit supplies more drive
current... and so on. I've epoxied parts together with
modestly okay effect here. But I've also bought arrays on
ICs, too (which at the prices I pay aren't exactly matched
well but again aren't terrible, either.)

Degeneration would seem to be a partial answer here, too.

A point in this circuit is low overhead drivers. What would
you do if designing a discrete, bipolar solution here? I'd
learn something from a good answer.

Usual EDN standard of quality. They need filler between the ads.

:)

I do NOT like the capacitor there. When inactive (OFF), C1
charges up to Vcc across it, if C1 is small enough (if C1 is
big, then it never reaches Vcc across it.) When active (ON),
the common node between C1 and R4 jumps up towards 1.2V below
Vcc and in doing so causes the collector of Q2 to be driven
below ground, Vcc-1.2V-Vc1=-1.2V since Vc1=Vcc. As C1
discharges it actually borrows current from Q3's collector
(rather than from R3) causing a lower current in R3, yielding
a lower voltage potential for Q2's base... leading to
diversion of R2's current towards Q1 and thus MORE drive
current into Q4 through Q7. The upshot is that upon turn-on,
the peak current in the LEDs is actually HIGHER than designed
and it then gently settles down to the desired level as C1
discharges to a new (lower) potential across its leads. This
is spikey behavior instead of a "soft start." Make C1 bigger
and it gets worse, too. The sharp leading edge will reach
even higher initial currents in the LEDs that way.

So it's value should be kept small. I'm not yet convinced
about the danger of oscillations or the source of them in
this circuit. There are very low impedances on every node of
Q2. It just doesn't seem necessary to me. I don't see how the
small Cbc value and the value of Rb' can conspire to make a
problem here, even with the collector making a small jump at
turn on. And it actually seems to have a downside where I'd
rather simply remove it.

I might also invert the whole structure and delete R1 and D1,
if my LED supply was a volt or more above the micro rail
voltage. The pin output won't be loaded much and will
probably be a very close reflection of the micro rail
voltage. Of course, I'd adjust values, accordingly.

For example, if my micro were running on 3.6V and my LED
supply were 6V (hypothetically) and I wanted 100mA and 5
chains of them (not 4), then I might invert the polarities
and use R3=36 ohms, R2=470 ohms, and R4=270 ohms, kill C1,
and just drive the base of Q1 directly.

I'd start the design by estimating the total base currents
required for Q3 through Q7 (600mA/beta=200, or about 3mA.)
Then I'd double that for the diff-amp pair to 6mA. Given 3.6V
drive and an estimated 0.7V drop on Q1, I get 2.9V at Q1's
emitter. So 2.9V/6mA is 483 ohms. 470 is a standard value and
gives a slight increase in estimated current, so I'd use that
value instead. I also want 3.6V across R3 at 100mA, so 36
ohms. Changing that to 33 or 39 ohms would change the LED
currents by 10% or more. Luckily, 5% resistors do come in 36
ohms. So I'd stick with that. Then, since R4 should be
(assuming 3mA in each branch, hopefully) at about one 100mA
sized Vbe (about 110mV added to 700mV as a guess), so R4
should be about 0.81/3mA, or 270 ohms. Nice. Standard value.
So that's where I'd get my values.

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.

That's what they say. But I still don't see it, probably
because I'm blind and not necessarily because it doesn't do
that. It's why I said I can't see it -- hoping someone would
explain it in detail to me. If you can see the exact
mechanism here, I'd like to see a detailed explanation.

Jon
https://dl.dropboxusercontent.com/u/53724080/Circuits/Current_Sources/CC_Driver.JPG



--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
On Sun, 14 Jul 2013 11:44:24 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 11:10:54 -0700, Jon Kirwan
jonk@infinitefactors.org> wrote:

snip
All current mirrors depend on matching Is, less with
degeneration. From my limited experience, this isn't a big
problem for LED driving if using parts from the same reel.
And it's pretty easy to test for, anyway.
snip

I should explain more about my experiences, I suppose.

I've no doubt at all that if one of the BJTs carries a
different Vce than others in the chain, and if the currents
are enough, thermal runaway just happens. The BJT with the
larger Vce is going to have its Vbe decline steadily with
some bad news.

But LEDs present fairly consistent Vce's to their driving
BJTs. (Usually a very low Vce, in fact, if you are keeping
the margins down to minimize wasted power.) The only
substantially different Vce is the current mirror BJT that
sets the current and is under loop control. It's almost
always the case that the control BJT is the very hottest one,
more so than any of the LED driver BJTs, since it has the
highest Vce.

If the control BJT heats up, then the response by the rest of
the system is to have lower Ic's. And since its dissipation
is fixed by design (its Vce is set and so is its Ic), it
settles at some resulting Vbe and the other BJTs exhibit less
Ic as they have a lower Vbe drive, less Vce, and are cooler.
So no runaway.

Jon
So as Q3 heats up, all the LEDs get dimmer.

Ic goes 2:1 with 25 mV of Vbe change. Vbe goes 2.5 mV/deg c. So it won't take
many degs of temperature difference to seriously affect LED currents.


--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
On Sun, 14 Jul 2013 12:15:21 -0700, John Larkin
<jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 14 Jul 2013 11:44:24 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 11:10:54 -0700, Jon Kirwan
jonk@infinitefactors.org> wrote:

snip
All current mirrors depend on matching Is, less with
degeneration. From my limited experience, this isn't a big
problem for LED driving if using parts from the same reel.
And it's pretty easy to test for, anyway.
snip

I should explain more about my experiences, I suppose.

I've no doubt at all that if one of the BJTs carries a
different Vce than others in the chain, and if the currents
are enough, thermal runaway just happens. The BJT with the
larger Vce is going to have its Vbe decline steadily with
some bad news.

But LEDs present fairly consistent Vce's to their driving
BJTs. (Usually a very low Vce, in fact, if you are keeping
the margins down to minimize wasted power.) The only
substantially different Vce is the current mirror BJT that
sets the current and is under loop control. It's almost
always the case that the control BJT is the very hottest one,
more so than any of the LED driver BJTs, since it has the
highest Vce.

If the control BJT heats up, then the response by the rest of
the system is to have lower Ic's. And since its dissipation
is fixed by design (its Vce is set and so is its Ic), it
settles at some resulting Vbe and the other BJTs exhibit less
Ic as they have a lower Vbe drive, less Vce, and are cooler.
So no runaway.

Jon

So as Q3 heats up, all the LEDs get dimmer.

Ic goes 2:1 with 25 mV of Vbe change. Vbe goes 2.5 mV/deg c. So it won't take
many degs of temperature difference to seriously affect LED currents.
Yeah. But it's not runaway. And besides, it's fixable with
ease with a slight design change.

Jon
 
On Sun, 14 Jul 2013 12:05:32 -0700, John Larkin
<jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 14 Jul 2013 11:10:54 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

A current mirror wastes current. That's what they do.

And it depends on transistor matching.

All current mirrors depend on matching Is, less with
degeneration. From my limited experience, this isn't a big
problem for LED driving if using parts from the same reel.
And it's pretty easy to test for, anyway.

I don't see how it avoids thermal runaway
by pulsing.

Yeah. If one of them heats up more than others, it's Vbe
declines by 2.3mV/C or something like that and this pulls the
others down with it, lowering their Ic. And if the feedback
BJT lowers its Ic the feedback circuit supplies more drive
current... and so on. I've epoxied parts together with
modestly okay effect here. But I've also bought arrays on
ICs, too (which at the prices I pay aren't exactly matched
well but again aren't terrible, either.)

Degeneration would seem to be a partial answer here, too.

A point in this circuit is low overhead drivers. What would
you do if designing a discrete, bipolar solution here? I'd
learn something from a good answer.

Usual EDN standard of quality. They need filler between the ads.

:)

I do NOT like the capacitor there. When inactive (OFF), C1
charges up to Vcc across it, if C1 is small enough (if C1 is
big, then it never reaches Vcc across it.) When active (ON),
the common node between C1 and R4 jumps up towards 1.2V below
Vcc and in doing so causes the collector of Q2 to be driven
below ground, Vcc-1.2V-Vc1=-1.2V since Vc1=Vcc. As C1
discharges it actually borrows current from Q3's collector
(rather than from R3) causing a lower current in R3, yielding
a lower voltage potential for Q2's base... leading to
diversion of R2's current towards Q1 and thus MORE drive
current into Q4 through Q7. The upshot is that upon turn-on,
the peak current in the LEDs is actually HIGHER than designed
and it then gently settles down to the desired level as C1
discharges to a new (lower) potential across its leads. This
is spikey behavior instead of a "soft start." Make C1 bigger
and it gets worse, too. The sharp leading edge will reach
even higher initial currents in the LEDs that way.

So it's value should be kept small. I'm not yet convinced
about the danger of oscillations or the source of them in
this circuit. There are very low impedances on every node of
Q2. It just doesn't seem necessary to me. I don't see how the
small Cbc value and the value of Rb' can conspire to make a
problem here, even with the collector making a small jump at
turn on. And it actually seems to have a downside where I'd
rather simply remove it.

I might also invert the whole structure and delete R1 and D1,
if my LED supply was a volt or more above the micro rail
voltage. The pin output won't be loaded much and will
probably be a very close reflection of the micro rail
voltage. Of course, I'd adjust values, accordingly.

For example, if my micro were running on 3.6V and my LED
supply were 6V (hypothetically) and I wanted 100mA and 5
chains of them (not 4), then I might invert the polarities
and use R3=36 ohms, R2=470 ohms, and R4=270 ohms, kill C1,
and just drive the base of Q1 directly.

I'd start the design by estimating the total base currents
required for Q3 through Q7 (600mA/beta=200, or about 3mA.)
Then I'd double that for the diff-amp pair to 6mA. Given 3.6V
drive and an estimated 0.7V drop on Q1, I get 2.9V at Q1's
emitter. So 2.9V/6mA is 483 ohms. 470 is a standard value and
gives a slight increase in estimated current, so I'd use that
value instead. I also want 3.6V across R3 at 100mA, so 36
ohms. Changing that to 33 or 39 ohms would change the LED
currents by 10% or more. Luckily, 5% resistors do come in 36
ohms. So I'd stick with that. Then, since R4 should be
(assuming 3mA in each branch, hopefully) at about one 100mA
sized Vbe (about 110mV added to 700mV as a guess), so R4
should be about 0.81/3mA, or 270 ohms. Nice. Standard value.
So that's where I'd get my values.

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.

That's what they say. But I still don't see it, probably
because I'm blind and not necessarily because it doesn't do
that. It's why I said I can't see it -- hoping someone would
explain it in detail to me. If you can see the exact
mechanism here, I'd like to see a detailed explanation.

Jon

https://dl.dropboxusercontent.com/u/53724080/Circuits/Current_Sources/CC_Driver.JPG
Not an explanation of the oscillation issue, which is what I
seek.

Jon
 
On Sun, 14 Jul 2013 11:56:27 -0700, John Larkin
<jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 14 Jul 2013 13:01:36 -0500, John Fields <jfields@austininstruments.com
wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

And it depends on transistor matching. I don't see how it avoids thermal runaway
by pulsing.

---
Read the article; he states why.

I read the article. It doesn't make sense.
To you, perhaps.

He stated - and I paraphrase - that with a low enough duty cycle, the
tempco of the switch(es) wouldn't cause runaway.
---

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.

---
During turn-on and turn-off.

And in-between.
---
So it seems.

Here's a sim which shows what happens at the transitions:

Version 4
SHEET 1 880 692
WIRE -992 -160 -1168 -160
WIRE -832 -160 -992 -160
WIRE -704 -160 -832 -160
WIRE -160 -160 -480 -160
WIRE -128 -160 -160 -160
WIRE -16 -160 -48 -160
WIRE 160 -160 -16 -160
WIRE 288 -160 160 -160
WIRE -1168 -128 -1168 -160
WIRE -992 -128 -992 -160
WIRE -480 -128 -480 -160
WIRE -160 -128 -160 -160
WIRE -832 -80 -832 -160
WIRE -704 -80 -704 -160
WIRE 160 -80 160 -160
WIRE 288 -80 288 -160
WIRE -16 -64 -16 -160
WIRE -704 32 -704 0
WIRE -704 32 -736 32
WIRE 288 32 288 0
WIRE 288 32 256 32
WIRE -832 80 -832 0
WIRE -800 80 -832 80
WIRE -16 80 -16 0
WIRE 160 80 160 0
WIRE 192 80 160 80
WIRE -1168 96 -1168 -64
WIRE -1120 96 -1168 96
WIRE -992 96 -992 -64
WIRE -992 96 -1040 96
WIRE -480 96 -480 -64
WIRE -432 96 -480 96
WIRE -304 96 -352 96
WIRE -160 96 -160 -64
WIRE -160 96 -224 96
WIRE -704 128 -736 128
WIRE 288 128 256 128
WIRE -832 160 -832 80
WIRE -800 160 -832 160
WIRE 160 160 160 80
WIRE 192 160 160 160
WIRE -704 208 -704 128
WIRE -704 208 -736 208
WIRE 288 208 288 128
WIRE 288 208 256 208
WIRE -16 240 -16 144
WIRE -800 256 -832 256
WIRE -704 256 -704 208
WIRE 192 256 160 256
WIRE 288 256 288 208
WIRE -1168 272 -1168 96
WIRE -992 272 -992 96
WIRE -480 272 -480 96
WIRE -160 272 -160 96
WIRE -1168 384 -1168 336
WIRE -992 384 -992 336
WIRE -992 384 -1168 384
WIRE -832 384 -832 256
WIRE -832 384 -992 384
WIRE -704 384 -704 336
WIRE -704 384 -832 384
WIRE -480 384 -480 336
WIRE -480 384 -704 384
WIRE -160 384 -160 336
WIRE -160 384 -480 384
WIRE -16 384 -16 304
WIRE -16 384 -160 384
WIRE 160 384 160 256
WIRE 160 384 -16 384
WIRE 288 384 288 336
WIRE 288 384 160 384
WIRE -1168 448 -1168 384
FLAG -1168 448 0
SYMBOL npn 256 160 M0
SYMATTR InstName Q2
SYMATTR Value 2N3904
SYMBOL res 144 -96 R0
WINDOW 0 -42 40 Left 2
WINDOW 3 -51 69 Left 2
SYMATTR InstName R1
SYMATTR Value 100k
SYMBOL res 272 240 R0
SYMATTR InstName R2
SYMATTR Value 33
SYMBOL res 272 -96 R0
WINDOW 3 36 68 Left 2
SYMATTR Value 7000
SYMATTR InstName R3
SYMBOL diode -464 -64 R180
WINDOW 0 45 31 Left 2
WINDOW 3 27 -3 Left 2
SYMATTR InstName D1
SYMATTR Value MUR460
SYMBOL diode -144 -64 R180
WINDOW 0 48 32 Left 2
WINDOW 3 26 -4 Left 2
SYMATTR InstName D2
SYMATTR Value MUR460
SYMBOL diode -464 336 R180
WINDOW 0 43 32 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D3
SYMATTR Value MUR460
SYMBOL diode -144 336 R180
WINDOW 3 24 0 Left 2
WINDOW 0 45 33 Left 2
SYMATTR Value MUR460
SYMATTR InstName D4
SYMBOL voltage -320 96 R270
WINDOW 3 24 104 Invisible 2
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
WINDOW 0 57 42 VRight 2
SYMATTR Value SINE(0 187 60)
SYMATTR InstName V2
SYMBOL npn -736 160 M0
SYMATTR InstName Q4
SYMATTR Value 2N3904
SYMBOL res -848 -96 R0
WINDOW 0 -42 40 Left 2
WINDOW 3 -51 69 Left 2
SYMATTR InstName R4
SYMATTR Value 100k
SYMBOL res -720 240 R0
SYMATTR InstName R5
SYMATTR Value 33
SYMBOL res -720 -96 R0
SYMATTR InstName R6
SYMATTR Value 7000
SYMBOL diode -1152 -64 R180
WINDOW 0 45 31 Left 2
WINDOW 3 27 -3 Left 2
SYMATTR InstName D5
SYMATTR Value MUR460
SYMBOL diode -976 -64 R180
WINDOW 0 48 32 Left 2
WINDOW 3 26 -4 Left 2
SYMATTR InstName D6
SYMATTR Value MUR460
SYMBOL diode -1152 336 R180
WINDOW 0 43 32 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D7
SYMATTR Value MUR460
SYMBOL diode -976 336 R180
WINDOW 3 24 0 Left 2
WINDOW 0 45 33 Left 2
SYMATTR Value MUR460
SYMATTR InstName D8
SYMBOL voltage -1136 96 R270
WINDOW 3 24 104 Invisible 2
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
WINDOW 0 54 43 VRight 2
SYMATTR Value SINE(0 153 60)
SYMATTR InstName V1
SYMBOL npn -800 32 R0
SYMATTR InstName Q3
SYMATTR Value 2N5550
SYMBOL npn 192 32 R0
SYMATTR InstName Q1
SYMATTR Value 2N5550
SYMBOL res -32 -176 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R7
SYMATTR Value 510
SYMBOL zener 0 144 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D10
SYMATTR Value 1N5373B
SYMATTR Description Diode
SYMATTR Type diode
SYMBOL zener 0 0 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D9
SYMATTR Value 1N5373B
SYMATTR Description Diode
SYMATTR Type diode
SYMBOL zener 0 304 R180
WINDOW 0 24 64 Left 2
WINDOW 3 24 0 Left 2
SYMATTR InstName D11
SYMATTR Value 1N5373B
SYMATTR Description Diode
SYMATTR Type diode
SYMBOL voltage -448 96 R270
WINDOW 3 24 104 Invisible 2
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
WINDOW 0 57 42 VRight 2
SYMATTR Value PULSE(0 1000 .004 1u 1u 100u 0 1)
SYMATTR InstName V3
TEXT -1096 416 Left 2 !.tran .04
TEXT -1120 152 Left 2 ;108RMS
TEXT -432 152 Left 2 ;132RMS

--
JF
 
On Sun, 14 Jul 2013 17:34:14 -0500, John Fields <jfields@austininstruments.com>
wrote:

On Sun, 14 Jul 2013 11:56:27 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 14 Jul 2013 13:01:36 -0500, John Fields <jfields@austininstruments.com
wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

And it depends on transistor matching. I don't see how it avoids thermal runaway
by pulsing.

---
Read the article; he states why.

I read the article. It doesn't make sense.

To you, perhaps.

He stated - and I paraphrase - that with a low enough duty cycle, the
tempco of the switch(es) wouldn't cause runaway.
With a low enough average current, they won't run away. So why pulse?

There's still the beta matching problem, pulsed or not.


--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
On Sun, 14 Jul 2013 15:01:25 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 12:05:32 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 14 Jul 2013 11:10:54 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

A current mirror wastes current. That's what they do.

And it depends on transistor matching.

All current mirrors depend on matching Is, less with
degeneration. From my limited experience, this isn't a big
problem for LED driving if using parts from the same reel.
And it's pretty easy to test for, anyway.

I don't see how it avoids thermal runaway
by pulsing.

Yeah. If one of them heats up more than others, it's Vbe
declines by 2.3mV/C or something like that and this pulls the
others down with it, lowering their Ic. And if the feedback
BJT lowers its Ic the feedback circuit supplies more drive
current... and so on. I've epoxied parts together with
modestly okay effect here. But I've also bought arrays on
ICs, too (which at the prices I pay aren't exactly matched
well but again aren't terrible, either.)

Degeneration would seem to be a partial answer here, too.

A point in this circuit is low overhead drivers. What would
you do if designing a discrete, bipolar solution here? I'd
learn something from a good answer.

Usual EDN standard of quality. They need filler between the ads.

:)

I do NOT like the capacitor there. When inactive (OFF), C1
charges up to Vcc across it, if C1 is small enough (if C1 is
big, then it never reaches Vcc across it.) When active (ON),
the common node between C1 and R4 jumps up towards 1.2V below
Vcc and in doing so causes the collector of Q2 to be driven
below ground, Vcc-1.2V-Vc1=-1.2V since Vc1=Vcc. As C1
discharges it actually borrows current from Q3's collector
(rather than from R3) causing a lower current in R3, yielding
a lower voltage potential for Q2's base... leading to
diversion of R2's current towards Q1 and thus MORE drive
current into Q4 through Q7. The upshot is that upon turn-on,
the peak current in the LEDs is actually HIGHER than designed
and it then gently settles down to the desired level as C1
discharges to a new (lower) potential across its leads. This
is spikey behavior instead of a "soft start." Make C1 bigger
and it gets worse, too. The sharp leading edge will reach
even higher initial currents in the LEDs that way.

So it's value should be kept small. I'm not yet convinced
about the danger of oscillations or the source of them in
this circuit. There are very low impedances on every node of
Q2. It just doesn't seem necessary to me. I don't see how the
small Cbc value and the value of Rb' can conspire to make a
problem here, even with the collector making a small jump at
turn on. And it actually seems to have a downside where I'd
rather simply remove it.

I might also invert the whole structure and delete R1 and D1,
if my LED supply was a volt or more above the micro rail
voltage. The pin output won't be loaded much and will
probably be a very close reflection of the micro rail
voltage. Of course, I'd adjust values, accordingly.

For example, if my micro were running on 3.6V and my LED
supply were 6V (hypothetically) and I wanted 100mA and 5
chains of them (not 4), then I might invert the polarities
and use R3=36 ohms, R2=470 ohms, and R4=270 ohms, kill C1,
and just drive the base of Q1 directly.

I'd start the design by estimating the total base currents
required for Q3 through Q7 (600mA/beta=200, or about 3mA.)
Then I'd double that for the diff-amp pair to 6mA. Given 3.6V
drive and an estimated 0.7V drop on Q1, I get 2.9V at Q1's
emitter. So 2.9V/6mA is 483 ohms. 470 is a standard value and
gives a slight increase in estimated current, so I'd use that
value instead. I also want 3.6V across R3 at 100mA, so 36
ohms. Changing that to 33 or 39 ohms would change the LED
currents by 10% or more. Luckily, 5% resistors do come in 36
ohms. So I'd stick with that. Then, since R4 should be
(assuming 3mA in each branch, hopefully) at about one 100mA
sized Vbe (about 110mV added to 700mV as a guess), so R4
should be about 0.81/3mA, or 270 ohms. Nice. Standard value.
So that's where I'd get my values.

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.

That's what they say. But I still don't see it, probably
because I'm blind and not necessarily because it doesn't do
that. It's why I said I can't see it -- hoping someone would
explain it in detail to me. If you can see the exact
mechanism here, I'd like to see a detailed explanation.

Jon

https://dl.dropboxusercontent.com/u/53724080/Circuits/Current_Sources/CC_Driver.JPG

Not an explanation of the oscillation issue, which is what I
seek.

Jon
It's all about control theory. Some closed loops oscillate, some don't.

A high-gain loop with two active elements, each with similar frequency rolloffs,
is a prime candidate for oscillation. The added cap radically slows down one of
those two elements.




--

John Larkin Highland Technology Inc
www.highlandtechnology.com jlarkin at highlandtechnology dot com

Precision electronic instrumentation
Picosecond-resolution Digital Delay and Pulse generators
Custom timing and laser controllers
Photonics and fiberoptic TTL data links
VME analog, thermocouple, LVDT, synchro, tachometer
Multichannel arbitrary waveform generators
 
On Sun, 14 Jul 2013 15:01:25 -0700, Jon Kirwan
<jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 12:05:32 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

It probably keeps the loop from oscillating.

That's what they say. But I still don't see it, probably
because I'm blind and not necessarily because it doesn't do
that. It's why I said I can't see it -- hoping someone would
explain it in detail to me. If you can see the exact
mechanism here, I'd like to see a detailed explanation.

Jon

https://dl.dropboxusercontent.com/u/53724080/Circuits/Current_Sources/CC_Driver.JPG

Not an explanation of the oscillation issue, which is what I
seek.

Jon
---
The sim I posted earlier was wrong in that it didn't show what
happened during power-up and power down. Sorry 'bout that...

This one does, and there still seems to be no tendency for the thing
to oscillate without the cap.

Version 4
SHEET 1 1256 680
WIRE 0 -80 -112 -80
WIRE 240 -80 0 -80
WIRE 480 -80 240 -80
WIRE 656 -80 480 -80
WIRE 816 -80 656 -80
WIRE 976 -80 816 -80
WIRE 1136 -80 976 -80
WIRE 240 -48 240 -80
WIRE 480 -48 480 -80
WIRE 0 0 0 -80
WIRE 656 0 656 -80
WIRE 816 0 816 -80
WIRE 976 0 976 -80
WIRE 1136 0 1136 -80
WIRE 240 64 240 32
WIRE 240 64 160 64
WIRE 320 64 240 64
WIRE 160 96 160 64
WIRE 320 96 320 64
WIRE 656 96 656 64
WIRE 816 96 816 64
WIRE 976 96 976 64
WIRE 1136 96 1136 64
WIRE 0 144 0 64
WIRE 96 144 0 144
WIRE 480 144 480 32
WIRE 480 144 384 144
WIRE 656 192 656 160
WIRE 816 192 816 160
WIRE 976 192 976 160
WIRE 1136 192 1136 160
WIRE 0 208 0 144
WIRE 320 240 320 192
WIRE 384 240 320 240
WIRE 480 240 480 144
WIRE 480 240 448 240
WIRE 320 272 320 240
WIRE -112 336 -112 -80
WIRE 0 336 0 288
WIRE 480 336 480 240
WIRE 656 336 656 256
WIRE 816 336 816 256
WIRE 976 336 976 256
WIRE 1136 336 1136 256
WIRE 160 384 160 192
WIRE 416 384 160 384
WIRE 592 384 560 384
WIRE 752 384 720 384
WIRE 912 384 880 384
WIRE 1072 384 1040 384
WIRE -112 480 -112 416
WIRE 0 480 0 416
WIRE 0 480 -112 480
WIRE 320 480 320 352
WIRE 320 480 0 480
WIRE 480 480 480 432
WIRE 480 480 320 480
WIRE 656 480 656 432
WIRE 656 480 480 480
WIRE 816 480 816 432
WIRE 816 480 656 480
WIRE 976 480 976 432
WIRE 976 480 816 480
WIRE 1136 480 1136 432
WIRE 1136 480 976 480
WIRE 160 528 160 384
WIRE 560 528 560 384
WIRE 560 528 160 528
WIRE 720 528 720 384
WIRE 720 528 560 528
WIRE 880 528 880 384
WIRE 880 528 720 528
WIRE 1040 528 1040 384
WIRE 1040 528 880 528
WIRE -112 544 -112 480
FLAG -112 544 0
SYMBOL pnp 96 192 M180
WINDOW 0 69 69 Left 2
WINDOW 3 45 38 Left 2
SYMATTR InstName Q1
SYMATTR Value 2N3906
SYMBOL pnp 384 192 R180
WINDOW 0 74 67 Left 2
WINDOW 3 50 40 Left 2
SYMATTR InstName Q2
SYMATTR Value 2N3906
SYMBOL res 464 -64 R0
SYMATTR InstName R1
SYMATTR Value 68
SYMBOL res 224 -64 R0
SYMATTR InstName R2
SYMATTR Value 100
SYMBOL res 304 256 R0
SYMATTR InstName R3
SYMATTR Value 100
SYMBOL res -16 192 R0
SYMATTR InstName R4
SYMATTR Value 1k
SYMBOL voltage 0 320 R0
WINDOW 3 24 96 Invisible 2
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
SYMATTR Value PULSE(0 3. 0 0 0 1ms 2ms)
SYMATTR InstName V1
SYMBOL voltage -112 320 R0
WINDOW 123 0 0 Left 2
WINDOW 39 0 0 Left 2
WINDOW 3 24 96 Invisible 2
SYMATTR Value PULSE(0 3.3 0 10ms 10ms 50ms 100ms)
SYMATTR InstName V2
SYMBOL diode 640 0 R0
SYMATTR InstName D1
SYMATTR Value 1N4148
SYMBOL diode 640 96 R0
SYMATTR InstName D2
SYMATTR Value 1N4148
SYMBOL diode 640 192 R0
SYMATTR InstName D3
SYMATTR Value 1N4148
SYMBOL diode 800 0 R0
SYMATTR InstName D4
SYMATTR Value 1N4148
SYMBOL diode 800 96 R0
SYMATTR InstName D5
SYMATTR Value 1N4148
SYMBOL diode 800 192 R0
SYMATTR InstName D6
SYMATTR Value 1N4148
SYMBOL diode 960 0 R0
SYMATTR InstName D7
SYMATTR Value 1N4148
SYMBOL diode 960 96 R0
SYMATTR InstName D8
SYMATTR Value 1N4148
SYMBOL diode 960 192 R0
SYMATTR InstName D9
SYMATTR Value 1N4148
SYMBOL diode 1120 0 R0
SYMATTR InstName D10
SYMATTR Value 1N4148
SYMBOL diode 1120 96 R0
SYMATTR InstName D11
SYMATTR Value 1N4148
SYMBOL diode 1120 192 R0
SYMATTR InstName D12
SYMATTR Value 1N4148
SYMBOL npn 416 336 R0
WINDOW 0 37 54 Left 2
WINDOW 3 60 24 Left 2
SYMATTR InstName Q3
SYMATTR Value BC817-40
SYMBOL References\\LT1634-1.25 0 32 R0
SYMATTR InstName U1
SYMBOL npn 592 336 R0
WINDOW 0 37 54 Left 2
WINDOW 3 60 24 Left 2
SYMATTR InstName Q4
SYMATTR Value BC817-40
SYMBOL npn 752 336 R0
WINDOW 0 37 54 Left 2
WINDOW 3 60 24 Left 2
SYMATTR InstName Q5
SYMATTR Value BC817-40
SYMBOL npn 912 336 R0
WINDOW 0 37 54 Left 2
WINDOW 3 60 24 Left 2
SYMATTR InstName Q6
SYMATTR Value BC817-40
SYMBOL npn 1072 336 R0
WINDOW 0 37 54 Left 2
WINDOW 3 60 24 Left 2
SYMATTR InstName Q7
SYMATTR Value BC817-40
SYMBOL cap 448 224 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C1
SYMATTR Value 100n
TEXT -96 512 Left 2 !.tran .1

--
JF
 
On Sun, 14 Jul 2013 20:16:42 -0700, John Larkin
<jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 14 Jul 2013 15:01:25 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 12:05:32 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sun, 14 Jul 2013 11:10:54 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sun, 14 Jul 2013 08:56:02 -0700, John Larkin
jjlarkin@highNOTlandTHIStechnologyPART.com> wrote:

On Sat, 13 Jul 2013 23:15:32 -0700, Jon Kirwan <jonk@infinitefactors.org> wrote:

On Sat, 13 Jul 2013 15:11:40 -0500, John Fields
jfields@austininstruments.com> wrote:

snip
http://www.edn.com/design/power-management/4324682/Current-mirror-drives-multiple-LEDs-from-a-low-supply-voltage
snip

Nice link. Using a diff-amp in a controlled feedback loop.
Thanks.

It wastes 25% of the supply power just to sense the LED current.

A current mirror wastes current. That's what they do.

And it depends on transistor matching.

All current mirrors depend on matching Is, less with
degeneration. From my limited experience, this isn't a big
problem for LED driving if using parts from the same reel.
And it's pretty easy to test for, anyway.

I don't see how it avoids thermal runaway
by pulsing.

Yeah. If one of them heats up more than others, it's Vbe
declines by 2.3mV/C or something like that and this pulls the
others down with it, lowering their Ic. And if the feedback
BJT lowers its Ic the feedback circuit supplies more drive
current... and so on. I've epoxied parts together with
modestly okay effect here. But I've also bought arrays on
ICs, too (which at the prices I pay aren't exactly matched
well but again aren't terrible, either.)

Degeneration would seem to be a partial answer here, too.

A point in this circuit is low overhead drivers. What would
you do if designing a discrete, bipolar solution here? I'd
learn something from a good answer.

Usual EDN standard of quality. They need filler between the ads.

:)

I do NOT like the capacitor there. When inactive (OFF), C1
charges up to Vcc across it, if C1 is small enough (if C1 is
big, then it never reaches Vcc across it.) When active (ON),
the common node between C1 and R4 jumps up towards 1.2V below
Vcc and in doing so causes the collector of Q2 to be driven
below ground, Vcc-1.2V-Vc1=-1.2V since Vc1=Vcc. As C1
discharges it actually borrows current from Q3's collector
(rather than from R3) causing a lower current in R3, yielding
a lower voltage potential for Q2's base... leading to
diversion of R2's current towards Q1 and thus MORE drive
current into Q4 through Q7. The upshot is that upon turn-on,
the peak current in the LEDs is actually HIGHER than designed
and it then gently settles down to the desired level as C1
discharges to a new (lower) potential across its leads. This
is spikey behavior instead of a "soft start." Make C1 bigger
and it gets worse, too. The sharp leading edge will reach
even higher initial currents in the LEDs that way.

So it's value should be kept small. I'm not yet convinced
about the danger of oscillations or the source of them in
this circuit. There are very low impedances on every node of
Q2. It just doesn't seem necessary to me. I don't see how the
small Cbc value and the value of Rb' can conspire to make a
problem here, even with the collector making a small jump at
turn on. And it actually seems to have a downside where I'd
rather simply remove it.

I might also invert the whole structure and delete R1 and D1,
if my LED supply was a volt or more above the micro rail
voltage. The pin output won't be loaded much and will
probably be a very close reflection of the micro rail
voltage. Of course, I'd adjust values, accordingly.

For example, if my micro were running on 3.6V and my LED
supply were 6V (hypothetically) and I wanted 100mA and 5
chains of them (not 4), then I might invert the polarities
and use R3=36 ohms, R2=470 ohms, and R4=270 ohms, kill C1,
and just drive the base of Q1 directly.

I'd start the design by estimating the total base currents
required for Q3 through Q7 (600mA/beta=200, or about 3mA.)
Then I'd double that for the diff-amp pair to 6mA. Given 3.6V
drive and an estimated 0.7V drop on Q1, I get 2.9V at Q1's
emitter. So 2.9V/6mA is 483 ohms. 470 is a standard value and
gives a slight increase in estimated current, so I'd use that
value instead. I also want 3.6V across R3 at 100mA, so 36
ohms. Changing that to 33 or 39 ohms would change the LED
currents by 10% or more. Luckily, 5% resistors do come in 36
ohms. So I'd stick with that. Then, since R4 should be
(assuming 3mA in each branch, hopefully) at about one 100mA
sized Vbe (about 110mV added to 700mV as a guess), so R4
should be about 0.81/3mA, or 270 ohms. Nice. Standard value.
So that's where I'd get my values.

I'm still stuck trying to understand C1's benefit.

It probably keeps the loop from oscillating.

That's what they say. But I still don't see it, probably
because I'm blind and not necessarily because it doesn't do
that. It's why I said I can't see it -- hoping someone would
explain it in detail to me. If you can see the exact
mechanism here, I'd like to see a detailed explanation.

Jon

https://dl.dropboxusercontent.com/u/53724080/Circuits/Current_Sources/CC_Driver.JPG

Not an explanation of the oscillation issue, which is what I
seek.

Jon

It's all about control theory. Some closed loops oscillate, some don't.

A high-gain loop with two active elements, each with similar frequency rolloffs,
is a prime candidate for oscillation. The added cap radically slows down one of
those two elements.
I'm looking for the mathematical explanation -- quantitative
-- as well as the theoretical underpinning. Can you elucidate
that?

Jon
 

Welcome to EDABoard.com

Sponsor

Back
Top