Maker Pro
Maker Pro

Multiplexing LEDs - calculating resistor value

R

roxlu

Hi all,

My previous post about speeding up multiplexing resulted in a display
with
8x48 LEDs. As I suggested and read, the LEDs are becomming less bright
when more than 2 LEDs are on in a matrx of 8x48 >=.

Can anyone help me to calculate the resistor value I need to get bright
LEDs.
Or, how can I caclulate this? Now I'm using a 100R per column which is
probably
to much.

Here is a small part of the circuit to show the current limiting
resistor of 100R.
http://imagebin.org/5461

Thanks
Greetings
 
R

roxlu

Spehro said:
Arrange it so that 48 LEDs are on at once (48 columns and 8 rows). You
want the resistor to pass about 8 times the average current you would
like for the LEDs. eg. if they are reasonably bright at 3mA, you want
about 24mA through the resistor. Just use G.S. Ohm's law, from the 5V
supply minus the LED forward drop (at 24mA, not 3mA) minus two
Vce(sat) drops.



Best regards,
Spehro Pefhany

Hi Spehro,

Thanks for your reply, but thats what I did, and its not giving me good
results. I calculated the value like this: 5v - 1.7v (led) - 1.2 (2x0.6
or the transistors) = 2.1 v
Now I'm using a 100R, so thats around 2.1 / 100 = 21mA. Though they are
still not bright, which is probably due to the 'refresh rate'.

Greetings
 
J

Jonathan Kirwan

Hi all,

My previous post about speeding up multiplexing resulted in a display
with
8x48 LEDs. As I suggested and read, the LEDs are becomming less bright
when more than 2 LEDs are on in a matrx of 8x48 >=.

Can anyone help me to calculate the resistor value I need to get bright
LEDs.
Or, how can I caclulate this? Now I'm using a 100R per column which is
probably
to much.

Here is a small part of the circuit to show the current limiting
resistor of 100R.
http://imagebin.org/5461

One thing that comes to mind is that you should be able to drive any
number of 'columns' at once, but only one 'row.' If you are enabling
two or more rows at once for a given column, then there is a problem.
There are other things I might arrange differently, but it sounds as
though this may be an issue for now.

Jon
 
S

Spehro Pefhany

Hi all,

My previous post about speeding up multiplexing resulted in a display
with
8x48 LEDs. As I suggested and read, the LEDs are becomming less bright
when more than 2 LEDs are on in a matrx of 8x48 >=.

Can anyone help me to calculate the resistor value I need to get bright
LEDs.
Or, how can I caclulate this? Now I'm using a 100R per column which is
probably
to much.

Here is a small part of the circuit to show the current limiting
resistor of 100R.
http://imagebin.org/5461

Thanks
Greetings

Arrange it so that 48 LEDs are on at once (48 columns and 8 rows). You
want the resistor to pass about 8 times the average current you would
like for the LEDs. eg. if they are reasonably bright at 3mA, you want
about 24mA through the resistor. Just use G.S. Ohm's law, from the 5V
supply minus the LED forward drop (at 24mA, not 3mA) minus two
Vce(sat) drops.



Best regards,
Spehro Pefhany
 
S

Spehro Pefhany

Arrange it so that 48 LEDs are on at once (48 columns and 8 rows). You
want the resistor to pass about 8 times the average current you would
like for the LEDs. eg. if they are reasonably bright at 3mA, you want
about 24mA through the resistor. Just use G.S. Ohm's law, from the 5V
supply minus the LED forward drop (at 24mA, not 3mA) minus two
Vce(sat) drops.

P.S. Each of you row drivers is going to have to handle 48 * 24mA =
1.2A in the example I gave above (at 1/8 duty cycle). That will also
be the total maximum current draw of the array. Your PNP BJTs will
probably not be saturated at that current without a lot more base
current than ~4mA. Or just use 8 P-channel MOSFETs for the source
drivers.



Best regards,
Spehro Pefhany
 
J

Jonathan Kirwan

Arrange it so that 48 LEDs are on at once (48 columns and 8 rows). You
want the resistor to pass about 8 times the average current you would
like for the LEDs. eg. if they are reasonably bright at 3mA, you want
about 24mA through the resistor. Just use G.S. Ohm's law, from the 5V
supply minus the LED forward drop (at 24mA, not 3mA) minus two
Vce(sat) drops.

Yes, but didn't he also say "becoming less bright?" Sizing that 100
ohm resistor in the collector leg assuming 8 LED rows being on will
brighten the case where only one LED row is used, yes?

Jon
 
S

Spehro Pefhany

Hi Spehro,

Thanks for your reply, but thats what I did, and its not giving me good
results. I calculated the value like this: 5v - 1.7v (led) - 1.2 (2x0.6
or the transistors) = 2.1 v
Now I'm using a 100R, so thats around 2.1 / 100 = 21mA. Though they are
still not bright, which is probably due to the 'refresh rate'.

Greetings

Above the (visual) fusion frequency, brightness is mostly a function
of average current. See my PS. BTW, 1.7V sounds a bit low for the LED,
even for red, but 0.6V is high for Vce(sat) if the transistor is
actually saturated.



Best regards,
Spehro Pefhany
 
R

roxlu

Spehro said:
Above the (visual) fusion frequency, brightness is mostly a function
of average current. See my PS. BTW, 1.7V sounds a bit low for the LED,
even for red, but 0.6V is high for Vce(sat) if the transistor is
actually saturated.



Best regards,
Spehro Pefhany

Oke thanx, I measured the 1.7, and the 0.6 is told to me. Someone told
me that when a column is on 1/48 of the time, the current which is
pushed through the LED must be 48 times the normal value.. well.. this
can't be used in this case.. But what if I push 50mA trhough the LEDs
will that be oke?

Greetings
 
S

Spehro Pefhany

Oke thanx, I measured the 1.7, and the 0.6 is told to me. Someone told
me that when a column is on 1/48 of the time, the current which is
pushed through the LED must be 48 times the normal value..

Greetings

I suggest 1/8 duty cycle not 1/48.
well.. this
can't be used in this case.. But what if I push 50mA trhough the LEDs
will that be oke?

Maybe. Check the specs. Provided the mux doesn't stop for too long.
Also, each LED will only have an average of < 1mA current, so it may
not be bright enough.


Best regards,
Spehro Pefhany
 
J

John Fields

Oke thanx, I measured the 1.7, and the 0.6 is told to me. Someone told
me that when a column is on 1/48 of the time, the current which is
pushed through the LED must be 48 times the normal value.. well.. this
can't be used in this case.. But what if I push 50mA trhough the LEDs
will that be oke?

---
It depends on the LEDs.

There should be some sort of pulse rating given on the data sheet,
and you'll need a separate resistor for each LED if you intend for
them not to interact with each other.

Also, you'd be able to get full apparent brightness out of the LEDs
if you interchanged rows and columns. That is, if you strobed the
rows instead of the columns. That way you'd only have to increase
the current to the LEDs 8 times since you'd be multiplexing them 8:1

The down side is that if you're using 20mA LEDs which can take 160mA
for 1/8 of the time, your row drivers would have to be able to
switch 160mA * 48 lamps ~ 8 amperes. That's not bad at all and if
you use N channel MOSFETs as the row witches and get some devices
with lowish Rds(on) 100mV, say, then they'll only be dissipating


P = EIT = 0.1V * 7.68A * 0.125 = 0.096 watts,

so they won't even get warm.

If you kept your PNP's for column drivers they'd only have to pass
160mA, so with a saturation voltage somewhere around 0.3V they'd
dissipate 48 milliwatts while they were on, but they'd only be on
1/48th of the time, so they'd really only be dissipating a
milliwatt!

If you're using a 5V supply, calculate the LED resistors like this:


Vsupply - Vce(sat) - (Rds(on)* Iled) - Vled
R = ---------------------------------------------
Iled



5V - 0.3V - 0.016V - 1.2V
= ------------------------------ = 21.7 ohms
0.16A

The closest standard 5% value is 22 ohms, so that's what I'd use.

The resistor would have to dissipate:


P = I²RT = 0.16A² * 22R * 0.125 = 0.07 watts,


so a 1/2 watt resistor would be fine.
 
roxlu said:
My previous post about speeding up multiplexing resulted in a display with
8x48 LEDs. As I suggested and read, the LEDs are becomming less bright
when more than 2 LEDs are on in a matrx of 8x48 >=.
Can anyone help me to calculate the resistor value I need to get bright LEDs.
Or, how can I caclulate this? Now I'm using a 100R per column which is
probably to much.

I have found many multiplexed led displays in public have a way too low
update frequency. Which cause headache all sorts of annoyances..
 
J

John Fields

---
It depends on the LEDs.

There should be some sort of pulse rating given on the data sheet,
and you'll need a separate resistor for each LED if you intend for
them not to interact with each other.

---
Oops...

If you do 8:1 multiplexing (see below) you'll only need one resistor
per column since there'll never be more than one LED on, per column,
at any given time, and its power dissipation (since it could be on
100% of the time) will be:


P = I²R = 0.16A² * 22R = 0.56 watts,

so a 22 ohm 1 watt resistor would be a good choice
---
 
N

nospam

roxlu said:
My previous post about speeding up multiplexing resulted in a display
with
8x48 LEDs. As I suggested and read, the LEDs are becomming less bright
when more than 2 LEDs are on in a matrx of 8x48 >=.
Here is a small part of the circuit to show the current limiting
resistor of 100R.
http://imagebin.org/5461

It sounds like you are still driving the matrix wrong. With the circuit you
linked only one bit in the row shift register should be on so only one LED
connected to that 100R resistor will be on at a time and that LED gets the
whole 21 mA.

When you start driving the matrix the right way remember all 48 LEDs could
be on and the row drivers will have to source just over 1 Amp which the
transistors you chose may not be capable of.

--
 
J

John Fields

The down side is that if you're using 20mA LEDs which can take 160mA
for 1/8 of the time, your row drivers would have to be able to
switch 160mA * 48 lamps ~ 8 amperes. That's not bad at all and if
you use N channel MOSFETs as the row witches and get some devices
with lowish Rds(on) 100mV, say, then they'll only be dissipating


P = EIT = 0.1V * 7.68A * 0.125 = 0.096 watts,

so they won't even get warm.


---
Aarrgghhhhh!!!

Lowish Rds(on) 100 milli _ohms_,


P = I²RT = 7.68A² * 0.1R * 0.125 = 0.737 watts,

so it'll get warm enough to need a heat sink.
 
R

roxlu

John said:
---
It depends on the LEDs.

There should be some sort of pulse rating given on the data sheet,
and you'll need a separate resistor for each LED if you intend for
them not to interact with each other.

Also, you'd be able to get full apparent brightness out of the LEDs
if you interchanged rows and columns. That is, if you strobed the
rows instead of the columns. That way you'd only have to increase
the current to the LEDs 8 times since you'd be multiplexing them 8:1

The down side is that if you're using 20mA LEDs which can take 160mA
for 1/8 of the time, your row drivers would have to be able to
switch 160mA * 48 lamps ~ 8 amperes. That's not bad at all and if
you use N channel MOSFETs as the row witches and get some devices
with lowish Rds(on) 100mV, say, then they'll only be dissipating


P = EIT = 0.1V * 7.68A * 0.125 = 0.096 watts,

so they won't even get warm.

If you kept your PNP's for column drivers they'd only have to pass
160mA, so with a saturation voltage somewhere around 0.3V they'd
dissipate 48 milliwatts while they were on, but they'd only be on
1/48th of the time, so they'd really only be dissipating a
milliwatt!

If you're using a 5V supply, calculate the LED resistors like this:


Vsupply - Vce(sat) - (Rds(on)* Iled) - Vled
R = ---------------------------------------------
Iled



5V - 0.3V - 0.016V - 1.2V
= ------------------------------ = 21.7 ohms
0.16A

The closest standard 5% value is 22 ohms, so that's what I'd use.

The resistor would have to dissipate:


P = I²RT = 0.16A² * 22R * 0.125 = 0.07 watts,


so a 1/2 watt resistor would be fine.

So, I should go fo rthe 22ohms when using 8x48? And if so, can I use
simple
NPN transistors to sink to GND, like this: http://imagebin.org/5461

Greetings.
 
J

John Fields

So, I should go fo rthe 22ohms when using 8x48?

---
I don't know what you mean when you say "8x48" but no, you can only
use the 22 ohms if you strobe the rows.
---
And if so, can I use
simple
NPN transistors to sink to GND, like this: http://imagebin.org/5461

---
Your schematic makes no sense to me. It seems you're going about the
whole thing backwards.

In my opinion you should send, and latch, 48 bits onto the columns
and then strobe the row you're on to make all the LEDs on that row
light up.

Then, 1/8th of a second later, do the same thing on the next row,
and on and on...

But... 1/8th of a second will cause flicker, so you'll need to
increase the refresh rate of the display to where it looks
continuous. Something faster than 30HZ will work.
 
J

Jonathan Kirwan

Bingo. It seemed wrong at the outset, sounding as though the row
values were latched and the columns were scanned -- 'row' and 'column'
as taking their meaning from the schematic, I mean.
In my opinion you should send, and latch, 48 bits onto the columns
and then strobe the row you're on to make all the LEDs on that row
light up.

Then, 1/8th of a second later, do the same thing on the next row,
and on and on...
Yes.

But... 1/8th of a second will cause flicker, so you'll need to
increase the refresh rate of the display to where it looks
continuous. Something faster than 30HZ will work.

I prefer something faster than 47Hz, as that is the moment it gets
hard for me to notice (without moving my head around.)

Jon
 
S

Spehro Pefhany

I prefer something faster than 47Hz, as that is the moment it gets
hard for me to notice (without moving my head around.)

Jon

If there's motion (including head motion) or vibration, a couple of
hundred Hz would be better. It's still no skin off the bandwidth of
most micros (assuming you're not doing silly stuff like writing ISRs
in inefficient HLLs). Get in there, save context, shove the data out,
clean up and exit, real fast like.


Best regards,
Spehro Pefhany
 
J

Jonathan Kirwan

If there's motion (including head motion) or vibration, a couple of
hundred Hz would be better. It's still no skin off the bandwidth of
most micros (assuming you're not doing silly stuff like writing ISRs
in inefficient HLLs). Get in there, save context, shove the data out,
clean up and exit, real fast like.

Agreed. I played around with these rates (very simple to do) using a
proto board and with my son helping out. We each could increment or
decrement the rate to see what we each thought about the appearances.
My own place of comfort was above 47Hz, his was more like 53Hz I
think. When we moved our heads around, though, it had to be well
above 85Hz (we didn't try and lock down quantities for head motion
with as much accuracy because it was harder for us to judge just how
fast we were moving our heads in those experiments, so we judged an
exact number to not be so useful there unless we could calibrate our
head motion -- thus a rough figure for general quality sufficed.)

Jon
 
N

nospam

Spehro Pefhany said:
If there's motion (including head motion) or vibration, a couple of
hundred Hz would be better. It's still no skin off the bandwidth of
most micros

Having written code to drive arrays of up to 9600 bi-color LEDs a few
hundred Hz would have taken a lot of skin off the processor used. A 62.5Hz
refresh rate which required the generation and clocking of 2 600kb/s data
streams took 90% of the skin it had.

Also many of the display 'effects' particularly the very common sideways
scrolling must be synchronised to the display multiplex so if you multiplex
too fast it scrolls too fast. Scrolling sideways at 62.5 LEDs per second is
already a bit fast for small fonts.

--
 
Top