[dorkbotpdx-blabber] another LED array question
Greg Grunest
greg at grunest.com
Mon Dec 15 15:24:26 EST 2008
Paul,
That's an awesome chip! I'd ask you where you found such a great IC but you
might not want to divulge too many of your sources. :)
I was looking at using a LS 674 or 675 for a similar purpose because it
comes in a 24 pin dip package and is a 16-bit shift register instead of
8-bit but it will only source 20ma. Have you seen a similar part to the one
you mentioned but in a 16-bit register?
Also, many years ago I worked on a project in which we built a serial
loadable shift register with ram. Its purpose was to load up approximately
8k x 40bits of SRAM with code to be injected onto a processor bus. The SRAM
was loaded serially, and then dumped onto the 40-bit-wide processor-data-bus
in parallel. It worked like a stack in a processor where every time the
"chip" was clocked (an equivalent POP instruction), it would pump out onto
the data bus the next 40-bit word in the sram. It was kind of cool because
when you exceeded the memory of the sram it would cycle around starting at
the beginning again. It was really just 5 8-bit serial loadable sram chips
on a single module but the problem is I can't remember what the heck type of
chips they were or who made them.
I was thinking that 15 of those connected in serial to an AVR chip could be
loaded with the "PWM"-type pattern you described below via serial and then
just "clocked" to drive the LEDs, thus freeing up the processor until a
pattern change needed to occur. I just can't remember what the heck the
chips were. ARGH!
- Greg
-----Original Message-----
From: dorkbotpdx-blabber-bounces at dorkbot.org
[mailto:dorkbotpdx-blabber-bounces at dorkbot.org] On Behalf Of Paul Stoffregen
Sent: Monday, December 15, 2008 10:20 AM
To: A discussion list for dorkbot-pdx (portland, or)
Subject: Re: [dorkbotpdx-blabber] another LED array question
I would try a big 120 bit shift register, probably built out of 15
TPIC6C596N chips, which costs about $16.
The AVR can shift out 8 bits in 17 cycles, so running at 16 MHz in
theory the whole shift register could be updated 62754 times per second,
if you didn't have to do anything else. In practice, I'd imagine
getting between 1/4 to 1/3 of that if you're writing in C. If you're
willing to do a bit of assembly (or copy mine from the recent LCD
project) you can write to the SPI data register exactly every 17
cycles. Just copy the code 15 times.
I'd probably go for 32 levels of light (not necessarily linearly
distributed). If you're reading bit patterns from a table and putting
them out to the shift register, you can do a lot better than PWM. For
example, if you want 50% brightness, shift out 1,0,1,0,1... if you want
40%, shift out 1,0,1,1,0. The patterns could go in a lookup table
(which can be any distribution of intensities that "look" even to the
human eye even if they're not linear) that you index by the desired
brightness, so each time you build another 15 bytes to shift out, you do
120 lookups and shifts and probably some other simple stuff. Even if
you only manage to get all 15 bytes computed and shifted out 1000 times
per second (only 1/60th of the theoretical max) if you scatter the bits
like that there shouldn't be any visible flicker, except maybe at very
low brightness where it's only 1 or 2 on and many off in the pattern.
The other (much harder) idea that comes to mind is actually building 120
PWM timers inside a FPGA!
-Paul
>
> i'm sizing up a project for LIGHTBAR that involves an array
> of 40 RGB LEDs, each of which i want to control in complete
> gradations of brightness, and i want them to be arrayed
> on an 8x5 matrix inscribed on a sphere, approximately.
> so that's 120 variable-brightness or PWM pins i need to
> be able to control.
>
> i'm considering using blinkMs, since the wiring and programming
> would both be significantly simpler. but the cost goes through
> the roof if i do that. (i'm asking thingM to give me the blinkMs
> for free, but that trick almost never works. =)
>
> is there something like an analog shift register that i can
> interface to a dorkboard, that will let me set these 120 different
> pin voltages individually, rapidly, easily? is there some
> clever textbook solution to such a problem that i should know about?
>
> and will i ever figure out anything myself, or will i just keep
> bothering all of you busy people?
>
> seasons blinkings,
> -m-
> ---
> HELP! A Bear is Eating Me!
> http://helpabeariseatingme.com
>
> _______________________________________________
> dorkbotpdx-blabber mailing list
> dorkbotpdx-blabber at dorkbot.org
> http://music.columbia.edu/mailman/listinfo/dorkbotpdx-blabber
>
>
_______________________________________________
dorkbotpdx-blabber mailing list
dorkbotpdx-blabber at dorkbot.org
http://music.columbia.edu/mailman/listinfo/dorkbotpdx-blabber
More information about the dorkbotpdx-blabber
mailing list