Log in

No account? Create an account
brad's life [entries|archive|friends|userinfo]
Brad Fitzpatrick

[ website | bradfitz.com ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

More xmas light thoughts [Nov. 26th, 2003|12:34 pm]
Brad Fitzpatrick
Yeah, using a parallel port to drive the xmas light grid would be much easier. Thanks for all the recommendations. And the parapin library makes it easy.

So, I can get a 74LS74 TTL component which has two D-flip-flops for like $0.60.... need then like 45 of those. That doesn't cost much. Will also need a transistor for each flip-flop too... ideally I could find a TTL component with both a flip-flop and transitor in it.

Guess I need to run constant power down both the bottom and right sides to power the flip-flops, and then a separate power down the bottom which I turn on and off for the single pixel that's lit at a time. I wish I had a good tool to draw a schematic with.

Haven't thought about packaging at all.... it's all going to get wet. If I have ~25 of these TTL components every 6 inches down the side, maybe I can drown them in epoxy blobs? I'd prefer to do that than run a ton of wires from the base. This all needs to take apart well and connect in pieces.

My calculations about bandwidth before were totally wrong. I'm basically scanning a single dot over the 54*40 grid and conditionally lighting it at every location.... so that's 54*40 = 2160 locations... each location will take a write from the parallel port to setup the signal (with clock low), then another to bring clock high, then another two to optionally light/unlight the pixel.... so that's, what? 8640 signal changes per screen? And the parallel port can do like 11 Mbps (more than USB 1.0, I recall?) with 12 in/out pins? So 1 Mbps for a single pin? Um, should be plenty fast.

Man, I've been re-reading my college electronics book. Things are slowly coming back, but I really don't know what I'm doing. I suppose I should go pick up some parts and start tinkering with a small-scale version.

[User Picture]From: jaybonci
2003-11-26 12:43 pm (UTC)

All we need now...

... is a phone-post of you electrocuting yourself. =P

I'm terrible with circuits and soldiering and such. I totally stayed away from that in college. You need to post a video of it when you're done.

(Reply) (Thread)
From: evan
2003-11-26 12:52 pm (UTC)
Which book? (Which class?)
(Reply) (Thread)
From: billemon
2003-11-26 01:36 pm (UTC)
If you're thinking of only flicking the lamps on at each scan, I don't think you'll get enough power in to light them up properly. Unless I'm misunderstanding something, you need to latch each pixel ... you might get away with only lighting say each row for the time you scan it, though. I would definitely do a small scale test if you can though.
(Reply) (Thread)
[User Picture]From: brad
2003-11-26 02:35 pm (UTC)

Maybe load a whole row, light for a while, light off, clear, shift up, load the next row...

I'm going to start trying to build something now.
(Reply) (Parent) (Thread)
[User Picture]From: edm
2003-11-27 02:47 am (UTC)
You sound to me like you're a man in need of a latch (or several dozen).

Lighting the lights 1/40th of the time will flicker heaps. Latching in a set of light states (on or off) every 40th of a second (for example), and letting them do their thing in between those times will be far better (steady on/off for those 40ths of a second).

There are 8-bit TTL latches available for next to nothing. And interfacing them up shouldn't be that hard.

You'll also need a bunch of address decoding (40*56/8 = 280 = 9 bits of address decoding), but that's pretty easy to do with 3 to 8 address decoders (ie, 3 bits in, 8 line-active lines out; you'll need three layers of them for 9 bits). (Although at 3 layers you might be better off with a field programmable logic array, or even the old fashioned trick of programming some eproms to Do The Right Thing (tm).)

(Reply) (Parent) (Thread)
[User Picture]From: brad
2003-11-27 10:11 am (UTC)
One of the key requirements of this project is price.

"next to nothing" is like a quarter in 100+ quantity, and I'd need 2048... I'm not paying $512.

actually, I can send bytes out the parallel port at 65k/s... I have lights turning on and off at 16 khz right now... looks totally even, just dim. Increase the voltage and it looks even and brighter.

So a light lit 1/40 of the time with 40x the voltage should work. It certainly does with 1/2 the time and 2x voltage and 1/4 the time and 4x the voltage.

I'll post updates, but so far this is looking promising.
(Reply) (Parent) (Thread)
[User Picture]From: edm
2003-11-27 10:59 am (UTC)
I'm not sure how you get to needing 2048 8-bit latches. IIRC you were doing something like a 40 * 56 light grid. Using 8-bit latches (which should be something like a quarter each in quantity) it seems to me that you'd need 40*56/8 = 280 latches. 280 * 0.25 = $70. Okay, it's not zero, but $70 doesn't seem _that_ high to me for a good result, especially since it'd allow the rest of your scan rate to be slower (eg, updates only on change) hence simplifying a bunch of other things.

But hey, it's your light grid and your house. If you want to refresh it every 40th of a second with 40 times the voltage and rely on it "averaging out the same" that'll probably be okay too. You'll definitely need long persistence lights though; anything that switches off quickly will tend to flicker. And if you have long persistence lights, you'll probably find that you can't do any rapid movements without "smudging" -- slideshow style changes would probably work best in that context, rather than animation. The latches and short persistence lights approach should let you do reasonable animation, and with a relatively low data rate providing the program driving it does frame to frame update optimisations.

(Reply) (Parent) (Thread)
[User Picture]From: brad
2003-11-27 01:57 pm (UTC)
We investigated using 8 bit and 16 bit shift registers (with serial shift in/out and parallel out) but the wiring would've been hell to do by hand. We even found components that could drive 8-16 20mA lamps, without extra line drivers/transitors, but that's a shitload of soldering and wire runs, not to mention somehow encasing all those components throughout the grid. With the wire grid approach we only have to wire 2048 * 2 connections, then some work on two sides.

I don't think flickering will be a problem. In fact, it's looking like grayscale will even be possible, since it'll be refreshing so often. But we'll see I guess.
(Reply) (Parent) (Thread)
[User Picture]From: scsi
2003-11-26 02:18 pm (UTC)
Post pics on your soldering job.. :)
(Reply) (Thread)
From: thp
2003-11-26 02:28 pm (UTC)
You can get more than two Ds on a chip, too. Poking around Digikey a bit turns up several brands of 74HCT273, which has 8 D-flipflops with common clock/clear. Pricing seems comparable or better than the dual-flipflop. Depends, I guess, on the circuit you end up going with.
(Reply) (Thread)
[User Picture]From: whitaker
2003-11-26 03:14 pm (UTC)
Heh, 74LS74 represent!

Brings back memories of Digital Systems Lab last year. You should make sound effects too.
(Reply) (Thread)
[User Picture]From: ch
2003-11-26 04:46 pm (UTC)
Use a counter on one axis. Drive the other off the parallel port. Use a shift register(s) to "extend" the parallel port.

You can use logic-level FET's to switch the power.

I think you'll find the lights have plenty of hysteresis so your scan rate won't need to be fast.

(Reply) (Thread)
[User Picture]From: brad
2003-11-29 02:16 am (UTC)
I think you'll find the lights have plenty of hysteresis so your scan rate won't need to be fast.

Yeah, that's what it's looking like.

I'll look into FETs, since I have no clue what they are.
(Reply) (Parent) (Thread)
[User Picture]From: ch
2003-11-29 12:15 pm (UTC)
fet's are used to switch dc.

to switch ac you'll need to use an scr (half-wave) or a triac (full-wave aka bilateral).

there are logic-level triac drivers available that make triggering triacs from logic trival.

there are even some really nice opto-isolated parts, e.g.:


isolation is a good idea to keep from toasting your computer if something bad happens.

p.s. if you're mail ordering parts, digikey is one of the best.

(Reply) (Parent) (Thread)