[sdiy] LED matrix
The Old Crow
oldcrow at oldcrows.net
Wed May 28 21:40:35 CEST 2003
Well, the issue is, you need a minimum "on" time for each LED that is a
percentage of the total number of rows, or the LEDs will be hard to see
under average lighting conditions. I'll try to give a couple useful
examples:
1) Say you have ten 7-segment LED displays, each with a decimal point.
In LED terms, you have 10 sets of 8 LEDs (80 LEDs total). It makes sense
to select all the LEDs of a given dsplay digit at the same time,
especially since displays typically have eight anode pins and a 'common'
cathode pin (or 8 Ks and 1 common A). Thus you have an 8-bit
microcontroller port (or otherwise an addressable latch) on which digit
character data is placed. Then 1 of the 10 displays is selected to light
up with the character. This is done for each digit until all ten displays
have been updated.
Now, since each digit is enabled for only one-tenth of the total time it
takes to refresh all displays, the LEDs of a given display have to be
driven at a higher current that is typical for a steady LED. LED
dataheets will list the maximum current for both steady and multiplex
operation. These are usually something like 30mA (steady) and 120mA
(pulsed/multiplexed). In practice, these maximums aren't actually used;
most designs use half these values for both reliability and power-saving
reasons. So, you have a 15mA continuous and 60mA pulsed drive current.
For ten displays, a 1ms or 2ms period for each digit seems to work well
for reasonable brightness and minimal strobing (flicker). So, it takes
10ms or 20ms to completely refresh all ten digits, each getting 10% of the
total time. Any less than this percentage and brightness beings to be
adversely affected. A time period longer than 2ms per display also begins
to affect readability due to strobing effects.
2) For 32x32 LEDs, if each LED was individually addressed, then each LED
would only get 1/(32x32) = 1/1024 = about 0.1% of the total time. This is
far too little to even be visible. (well, maybe very faintly in a pitch
dark room). Addressing 8 LEDs at a time would get you 1/(4x32) = 1/128
or about 0.8% per eight-LED group. Better, but still not in the range I
would consider workable. The minimum useful percentage is around 6%~7%.
so parallel-driving of the LED groups becomes necessary. For 32x32, I
would break it up into 8 groups of 8x16; that is 8 ports to supply LED
data, and a 1-of-16 decoder to drive a bank of current sink arrays to
enable the eight LED groups in turn. This would bring the per-group
percentage up to around 6.5%, which would work.
Simply put, it is going to take appreciable driver hardware to operate
this many LEDs in a raster fashion. I still think using one PIC or atmel
part per 8x8 or 8x16 group and having them slaved to a master MCU is the
way to go these days...
Crow
/**/
On Wed, 28 May 2003, Bert Schiettecatte wrote:
> Hi Crow,
>
> I don't see why I would need so many amps to drive the matrix. I'm just
> going to turn on each led a very short time and cycle through all of them.
> I was hoping to use an Atmel microcontroller for that. Thanks for the
> suggestions on the UDNxxxx... I'll check those out!
More information about the Synth-diy
mailing list