Archive for the ‘Projects’ Category


I got yer blinky LED’s RIGHT HERE…

November 11, 2012

From time to time, a project idea is born fully formed. This was one of those. As happens from time to time, I blame this whole project on Adafruit.

Maybe I’d better start at the beginning. One of the organs I maintain is at Appalachian State University, in Boone NC.

The Casavant organ at ASU

The Casavant organ at ASU

She’s a rather stately animal, is she not? (Since you asked, no, not all organs are female, but this one is. That said, you should never anthropomorphize instruments; they hate that.) The fellow who runs the organ studio at ASU is a most excellent co-conspirator for projects which involve Good Fun. For example, the school hosts a Halloween Monster Concert every year with audience sing-alongs, costume contests, spooky decorations and the whole bit. It’s become a school institution, and they pack the house every year.

Spooky Rehearsal

Spooky Rehearsal

Now there is a small stream of interesting parts for which I have no immediate application which nevertheless flow across my lab bench to be tested because you never know what you may need at some point, and I’m an irrepressible tinker. One of these was the Adafruit breakout board for the PCA9685 which is an IC by NXP which generates PWM signals for driving servos and fading LEDs. Their description page for the product had something which stuck in my brain…

“You can even chain up 62 breakouts to control up to 992 PWM outputs (which we would really like to see since it would be glorious)”

So there was a little gremlin in my brain saying “We need to do a gigantic LED project!” and then all at once, it came to me. The organ needs theatrical lighting effects for Halloween. The problem is, the organ is nearly three stories tall, lighting it up would require a lot of LEDs.

A lot of LEDs.

A lot of LEDs.

Enter : A lot of LEDs. Sixteen full 5 meter reels of 5050 package RGB LEDs. So we have 1152 watts of LED strip here, how are we going to break it up? Let’s make it simple : One controllable output zone (which is to say, three PWM outputs, Red-Green-Blue) per reel.

So that makes three PCA9685 breakouts, 48 output transistors, a mess of wiring; in short this is not going on a breadboard, or even perfboard. We needed a purpose made board, and because this is Halloween, it should be spooky.


I was originally going to call it the “Boogie Board”… Get it? aww, never mind.

At this point, a schematic would be pretty much redundant. At center you’ve got an Atmega644P, then three PCA9685, a little power supply, and a boatload of STP16NF06 power MOSFETs on the output side. Spooky squiggly traces optional.

All Built Up

Humming tunes from “Nightmare Before Christmas” makes all the soldering go faster.

Now there is one more issue to consider: current. 1152 watts is a lot, and it’s more than is any fun to deal with on a PCB. That much current switching at these frequencies also starts to resemble a lousy radio transmitter for noise, so I don’t deal with much of the current on the board. You might assume that because an LED strip has four pins (Anode, R, G, B) that these four pin wiring connectors attach to them directly, but that’s actually not so. The source pins of each group of three output transistors are tied together with a big fat trace and brought out on one of those pins to a wire, and it joins the common anode wire from the LED strip and they go down to the power supply as discrete wires. Like so…

In the end, we are all connected…

This keeps the big currents almost entirely off the board, which is a Good Thing.

The strips themselves have their own attendant problems. We decided to stick them, doubled up, onto 4′ long sticks of flat moulding we got for cheap at the home improvement store.


A new Halloween Tradition, the “OH GOD, MY EYES!”-O-LANTERN.

There is, actually, NO time efficient way to tie the strips together, you just have to solder wires. Bummer, Drag. It took forever.

PROTIP : if you’re doing a project like this, you should only get the waterproof strip if you need it to be waterproof. cleaning the silicone gook off the pads of the waterproof stuff is no fun, also it STINKS when they warm up.

Next question : Where do you get 1152 watts of decent 12VDC? Well you can get it out of PC Power Supplies, but you need to be Very Choosy. Good modern PC power supplies above 600 Watts frequently drive one massive 12V rail from which the other voltages in a PC are all derived, this is the kind you want. you DON’T want the kind which is all regulated off the 5V rail. We used a pair of Corsair TX750 V2 – they stayed within 3% of the stated voltage regardless of load. Highly recommended!

Testing, Testing, AGH! I’M BLIND!

PROTIP : Four conductor thermostat wire is great for wiring up LED strips. Four conductors at sufficient gauge to support a whole 5M reel on each one. Much cheaper than the stuff sold specifically for the job, and shielded!

During testing, we were afraid we wouldn’t have enough light output. It’s difficult to gauge such things in very different rooms.

Testing in the room

Yeah. Light output didn’t turn out to be a problem.


The software was pretty straight forward, the system is controlled over serial link, a command is the destination value for each channel followed by the number of frames it should take to fade to that color. The Atmega proccesses frames at a pre-determined rate by polling the clock. The arduino Map function saved me a ton of coding time working out the intermediate values in the fades.

Stuff that Broke :

The original plan had been to run the serial through an Xbee radio to control it from out in the auditorium someplace, or in the booth. As it turns out, the switching noise from all that PWM completely swamped the radio, reducing its effective range to about 9 inches. In a pinch for time, I hardwired the serial line with an FTDI Buddy, left the Macbook in the organ, and remote controlled it with the iPad over an ad-hoc wireless network. Apparently those radios are a lot more robust than XBees. Good to know.

The adhesive on the backs of the LED strips is kinda crap. If the cable pulls on them, at all, they’ll peel right up. This was the cause of much heartbreak.

Don’t cheap out on connectors. Just…Really, Don’t.

So, on the Big day, things wen’t pretty well.


Show time!

The first cue is with the house lights up, and even against that competition, the system looks pretty damn cool. But when the house lights went down, that’s when things got Properly Sexy.

Now we’re talking…

About six cues into the concert, after the picture you see here was when the system became totally unresponsive. The remote control link was working fine, but the PCB was no longer responding to serial commands.


It pays to be able to keep calm and analytical during these moments and quietly troubleshoot while people wonder why the lights have stopped changing. So here’s the other Thing That Broke.

The serial protocol is totally fragile. This is pure sloppiness on my part, I was in a hurry. It waits for 49 bytes, reads them all, parses them into a command and then goes on with business. This, as you’ve probably already guessed, is prone to going out of sync if, say, noise causes an extra byte to go down the wire. Suddenly it gets stuck part-way into a frame waiting for the rest.

I strongly suspected this is what had gone wrong. I didn’t have a remote reset, so what to do? Well I closed the serial port on my control application and fired up a straight serial terminal and typed the same letter repeatedly every quarter second or so and watched the lights. Once the out-of-sync command buffer filled up to 49 bytes of my typed-in letters, the lights changed (mostly to gray, since I’d been repeating the same character) and I could restart the control app and take control of the system back. This was a clever bit of problem solving, but it should never have been necessary. If you’re going to make something controlled over serial, you should implement a proper protocol with a checksum and the capacity to bail out of a packet which is obviously malformed and start over again. Lesson learned.

Still looks awesome

It still looks awesome.

So what about next year?

Well this design worked pretty well, but it has serious weak spots. I think, all things being equal, I’d want a more distributed system. In the future I think I’ll make small cards which solder directly onto the strips and decode/pwm/power each strip off a common power and RS485 signal chain. An ATTINY2313 would be more than sufficient for this job. You could feed the board 12V and serial and assign each one a unique number. This would at least keep troubles segregated, which in an application like this is probably for the best. Probably a bit more expensive, probably a lot more reliable. Certainly more straightforward to wire up!

Next year, I think we need twice as many LEDs. Maybe a bit more.


It’s not easy being green. For one thing, auto white balance tends to make you less green! :)


Epilog Laser – Lighted Carriage hack.

February 13, 2012

I love my Epilog laser! but it is not without its quirks.

The first and biggest quirk (are you listening Epilog?) Is the lack of proper Mac support. There is simply no excuse for that kind of nonsense, but I digress…

The second biggest quirk of the Epilog is that it can be very hard to see what’s happening on the bed when cutting and engraving. Often I have found myself shining flashlights or plug-in trouble lights through the viewing port at the top trying to scrutinize the goings-on below.

That never actually works, because the area you most want to illuminate is the area being worked on, and unsurprisingly, that area is right below the moving optics carriage and therefore perpetually in shadow.

Well hell, I bought my engraver used and never enjoyed a warrantee, it’s time to hack that puppy!

If you want to illuminate the space immediately underneath the carriage, the obvious place to put your light source is underneath the carriage. To get away with this without colliding with any moving parts, you need a pretty small light source. Enter my favorite LED strip. I have a 12×16 engraver, and this strip just happens to be precisely the right width to cover the entire rail. Woot! it costs $13 bucks and it runs on a straight 12V with no support circuitry to speak of. Surely there’s 12V inside the Epilog somewhere, right?

Wrong. Observe the Epilog with the side cover removed…

See that multi-tap power supply at the bottom? It supplies 3.3V 5V and 48V, but no 12V. You could get all fancy and add internal regulators or the like, but I wanted to be minimally invasive, so I ran a cable out of the vent openings seen on the bottom and secured it with a cable tie.

The cable seen here is 14 gauge stranded two conductor speaker wire which is gross overkill, but what I had on-hand in stranded (more on that in a minute).

From this point, the routing is more complex, the trick is to route it along the inside of the curve of the air hose up to the carriage, cable tying it to the air hose at intervals. It’s very important to test all your zip tie locations and other fiddly business by moving the carriage along it’s entire travel, as collisions and binds may not be obvious from only one position. Since the power cable gets moved a lot, you’ll want a stranded cable to supply it power. It’ll end up looking something like this.

Now that the part of the cable that moves is over, you can splice in a pair of smaller gauge solid core wires to connect to your LED strip. Soldering wires onto the LED strip seems trickier than it is, here’sthe best way I’ve found so far. Take a small wire (about the gauge of hookup wire) strip a bit off the end and fold it over into a hook like so.

Solder the two sides of the hook together to give yourself a little tab of solder, like this.

The resulting blobby is easy to solder onto the tin tabs of the LED strip. You can use either side, it doesn’t matter.

Peel the adhesive back off your LED strip, slap it on the bottom of the rail, splice and heat shrink your connections, then add a DC power supply and switch to taste.

Tada! If you do any experimental work with your laser, this light makes your life much easier.

Hey Epilog, how about making this standard equipment? And better Mac support while you’re at it!