Best led driver for ~64 LEDs at 20mA

It's nearing halloween again and it's time to design the costume once again.

This year I'm going to be threading .25mm fiberoptic wire all over the front of a rigid front costume. I would like to use around 64 LEDs, though I'd happily make a change down if the driving turns into a problem.

Design challenges:

  • I'd like it to fit in as small a package as possible. I'll be using a qfn 328, and all arduino support components will be in the 0603 range. Communication will be done with 2mm SMD headers to ftdi.
  • I will be gluing the fiber optics to the LEDs, which will themselves be side-emitting 0603 LEDs offset so as to allow the fiber to be glued down between the row ahead of it for additional stability.
  • I would like to use as few drivers as possible
  • A starry field effect will be desired, so PWM control will be pretty darn important
  • I plan on powering this through a 4.7v lipo pack for the led power and with stacked cr3032s to power the micro. Estimated time needed to run is 1 hour.

Options:
Tlc5947 - 24 channels. The only issue is that I'm going to have my hands full designing the board to start with and getting it sent off for manufacture in time. I'm not aware of a truly solid tlc5947 lib for the arduino and while I can code it up to run without a lib, it's just an added bit of stress to worry about.
Shiftpwm - I can get quite small shift registers and use the shiftpwm lib I've seen a few times around here, but haven't investigated the ease of coding for it.

What else might anyone suggest? These are white LEDs that are quite bright enough at 20mA. I might be able to drop lower if a great option presents itself, though with losses in the fiber, I wouldnt want to drop too much.

Thanks!

Have you considered running more than one fibre optic cable from each LED (hence fewer LEDs), or using the same PWM control for a small number of LEDs (hence fewer drivers)? Of course, the corresponding lights on the costume will fade in sync, but this may not be too noticeable if they are far apart.

What about the PCA9685, that will control 16 LEDs at up to 25mA directly, with 12 bits of PWM. It is an I2C addressable device and has broadcast modes to change all LEDs with one command. The LED on times can be staggered to prevent current surges and it is quite easy to drive without a library. Finally it comes in a TSSOP28 plastic thin shrink small outline package.
I have used them and they are great.

dc42, I'm really looking for discrete control over the lights and would prefer to sacrifice number rather than discrete control

Mike, I've never used that driver before, though it looks solid for the purpose. My only concern is, without sample code out there, I worry I'll waste time when coding. The TLC5940 gives me the same inputs and also comes in HTSSOP28, but has the advantage of being the devil I know, if you get my meaning. If I'm not going to get additional outputs, I figure it might be best to chain up four 5940's. Heck, if I went QFN, the supporting components would take up more space than the devices themselves. (I can hear you shouting DECOUPLING!) in my ear.

Not sure why you're worried about a "solid" library for the TCL5947. It is the simplest to control chip of any of the options you mentioned. To the Arduino, it is literally a 288 bit shift register, nothing more. It has built in PWM oscillator etc, it does all the refreshing automatically.

Well if you want some example code for the PCA9685 I can post some for you. Do the decoupling with surface mount capacitors.

Garrett,
I know it's more straightforward to interface directly with than the 5940, my issue is that I have libraries created for easily managing frames with the 5940 using the base library.If I go with the 59547 and code it up straight, it won't be as easy to do the pattern designs.

Mike,
Once I get a couple non-arduino questions answered, if I decide to go with your suggestion, I'll get in touch via IM.

Thanks!