LEDs and Multiplexing
Topic: TLC5940 suggestions
(Read 785 times)
Jul 09, 2012, 10:22 pm
I am designing a lighting project that involves 16 segments of RGB LED strips mounted in a helium balloon, 50m in the air.
The setup I have is a 48V PSU at the ground, this goes into a 12V (9.5A max) DC-DC converter at the balloon end for the power. The LED strips are controlled wirelessly by an arduino mega, receiving data via an XBee from an arduino on the ground. The LED strips draw 6.5A per segment. Because of limitations of weight and cost of DC-DC converters, this is about the limit for the 12V load, so I'm driving the LEDs by multiplexing the 16 segments from the arduino. There is one 4051 per 8 channels, so 6 in total for 16 RGB channels
I have a working prototype that works by the following flow:
set 3 multiplexer outputs to select one of the 16 channels
turn on analogwrite red, green and blue values
delay 1 millisecond
turn off analogwrite values
While this seems to work OK, I know It's spending a fair amount of time between turning the lights off, changing the multiplexer channel and turning them back on with no LEDs lit, which is dimming the already dim LEDs further. Also the arduino is driving all the multiplexing, analogwrite values and the serial comms. This seems a little fragile and might limit my ability to expand the functionality of the system in the future due to timing constraints.
One alternative I have been considering is to use 3 TLC5940s to control the PWM values. The problem with doing this straight up would be that if all the LED strips are on at once, the load would blow the power supply. I was thinking either I could divide any PWM value by 16 in software on the arduino controlling the 5940s or I could multiplex 16 transistors with a 595 shift register or even some logic counters to take the current limiting function away from the arduino. I think I'd prefer to base things in hardware as much as possible.
Anyway, has anyone got any suggestions for possibly multiplexing through the outputs of a 5940 to limit the overal load?