Re: Multiplexing LEDs - calculating resistor value




Jonathan Kirwan wrote:

On 27 Jun 2006 01:42:32 -0700, "roxlu" <diederickh@xxxxxxxxx> wrote:


nospam wrote:
"roxlu" <diederickh@xxxxxxxxx> wrote:
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.

--

Hi nospam and John

Thanx a lot for all your comments and suggestions.

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.

Just to make clear what you mean here...... I'm driving the matrix like
this: At start I make the first column (vertical) high. Than I set
which of the eight LEDs (the "row") must be turned on. This is how I'm
driving the matrix now.

Which is as I thought, and bad news if you want a consistent
intensity.

Do you mean that I need to drive it like this:
Make the first column high, than lets say that LED 2 and 4 must be
turned on, I first shift this into the shift register: 0000 0010 (LED
2), than I put LED 2 off: 0000 0000 And than I put LED 4 on: 0000 1000.
Is this correct? If so, I think this will take a lot of processing
power from my uC.

Yes, it would but that's also not usually how it would be done. As
that wouldn't be so good as other options.

I'll assume that your schematic should be expanded so that it is
looked at this way:

row 1: 000000000000000000000000000000000000000000000000
row 2: 000000000000000000000000000000000000000000000000
row 3: 000000000000000000000000000000000000000000000000
row 4: 000000000000000000000000000000000000000000000000
row 5: 000000000000000000000000000000000000000000000000
row 6: 000000000000000000000000000000000000000000000000
row 7: 000000000000000000000000000000000000000000000000
row 8: 000000000000000000000000000000000000000000000000

col: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv

And that in this case what you use to drive each column is as you
showed, similarly for each row. In other words, staying with your own
definition of 'row' and 'column' and no one else's.

Since you are only permitted to drive zero or one LED per column at a
time, the idea would be to enable just row 1 after latching in each of
the column enables depending on your data for that row. Then disable
row 1, latch row 2's column data into the columns, enable row 2. Then
disable row 2, latch row 3's column data into the column enables, then
enable row 3. Etc. This provides a 1:8 multiplexing and that will
suggest that you will need to significantly over-drive each LED enough
so that they will appear sufficiently bright for your needs. That
affects the resistor size you were talking about before.

So let's say the image was this:

row 1: * * ***** * * *** * * * ***
row 2: * * * * * * * * * * *
row 3: * * * * * * * * * * *
row 4: ***** *** * * * * * ***** *
row 5: * * * * * * * * * * *
row 6: * * * * * * * * * * *
row 7: * * ***** ***** ***** *** * * * ***
row 8:

col: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv

You'd make sure all row drivers were off, to start. Then load in
"100010111110100000100000011100000010100010011100" into your column
shift register. Then enable row 1. Wait, as appropriate. Disable
row 1. Load "100010100000100000100000100010000100100010001000" into
your column shift register. Then enable row 2. Wait, ... Etc.

Does that make sense?

Jon

Hi John and Jonathan,

Really thanks a lot!! Now I get what you mean...I'm not a
electronics-man and still learning. When I'm using a current limiting
resitor of 100R, could I let my circuit as it is now? And what about
the speed? As suggested I need to shift in 48 bits for each row instead
of 8 (for all the rows). I can imagine this will take a lot more
processing power which will cause flickering.

Thanks,
Greetings

.



Relevant Pages

  • Re: Explanation of the whole 300 mA thing
    ... If you use a single '164 shift register to drive bipolar transistor ... It is a push pull circuit, ... But you can multiplex the switches with the same circuit as the LEDs. ...
    (comp.arch.embedded)
  • Re: Multiplexing LEDs - calculating resistor value
    ... the LEDs are becomming less bright ... 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 ... row 1, latch row 2's column data into the columns, enable row 2. ...
    (sci.electronics.design)
  • Programmable IR LED Flasher Circuit -- How to Build?
    ... You attach it to the battery then program the flash sequence by ... Once you first short the terminals, ... I had originally thought 555 timer and shift register. ... keep cycling through the shift register and illuminate the LEDs. ...
    (sci.electronics.design)
  • Re: FPGA quiz3, or where Antti did give up and does not know answer or acceptable workaround
    ... LEDS <= do64s(63 downto 60); ... FPGA is really full. ... problem has nothing to do with the the shift register code. ...
    (comp.arch.fpga)
  • Re: Multiplexing - how to speed up
    ... I'm working on a project where I need to multiplex a matrix of 512 LEDs ... Currently I'm testing with 5 cascaded shift registers (serial in, ... After adding the 5th shift register the image started flickering. ... void shift_column_bit ...
    (sci.electronics.design)