Electronic – Small, cheap, and simple driver for 16 RGB LEDs

designintegrated-circuitledpwmrgb

I am working on a board design that will put 16 RGB LEDs in a circle around a rotary encoder. I want this setup to be simple so that I can run it from any micro with limited software (ie. built in PWM control, no tedious management necessary on the micro). I also want it to be relatively compact so that this board will not take up much space. I would also like it to be as cheap as possible in medium quantities. These 3 criteria are likely in competition, but I would like to know what others would suggest.

I have considered shift registers. These might be cheap and somewhat compact, but they would require the attached micro to spend a lot of time managing the LEDs to do any sort of colour blending.

I have also looked at some PWM LED drivers. The best one I have found so far is a 16 channel chip, so I would need three to drive all my LEDs. It would be simple to use, but the space and cost would not be great.

Another option might be to use some sort of FPGA or dedicated micro with lots of IO to control the LEDs. I'm not sure if the power needed by the LEDs would be too much, though.

Is there some option I am missing that would fit this target usage? I am open to a solution with slightly more or less LEDs, but I would not want any less than 12.

Edit: For reference, I am basically trying to replicate this board or this + this but with RGB capability, including colour blending. If the ring has to be a bit larger, that is ok to some extent. I would still like to be able to put a couple boards next to each other in a single project without too much spacing.

Best Answer

You could go with RGB leds with integrated controllers. The Ws2801 and Ws2811 rgb leds are all the rage now a days, and you only need to update the Addressable leds when you want to change colors, they handle the pwm.

There are other versions as well, some are i2c or spi, the Ws2811 is a 1-wire like protocol (timing critical). But that's a space saving option.