Non-array RGB LEDs and PWM help

Hey guys I'm in the planing stage for a device that will have 6 analog sensors built inside 6 acrylic tubes. & inside each of these tubes I wish to put four 5mm High Flux Piranha RGB LEDs (see the diagram below if it attatches properly... fingers crossed) SO that the LEDs will shoot out random RGB light when the sensors make a detection:

Now, I need some advice as to what will be the best way to multiplex or otherwise control and power the 18 channels of PWM that I require to drive each of the groups of LEDs.

I have had a look throughout many of the forum posts on here and elsewhere, but I think that the way that I'm trying to implement this different to the typical LED array approach, as these 6 cylinders are modular and separate from each other. - am I correct with this statement? or do we approach them the same as an array type of situation???

The relevant specs on the RGB LEDs are as follows:

Piranha RGB LED - 5mm - 8Kmcd
DC Forward current max. (mA) 50 30 30
Pulse forward current max. (mA) 100 50 50
Forward voltage max. (V) 2.4 3.6 3.6
Power dissipation max. (mW) 150

Those figures are for common cathode RGB Leds, but I also have a source for common anode versions, they have:
Forward Current 20mA, a 'Peak forward' of 100ma. 2volts forward (2.4 max) (I assume by 'Peak' they mean like the 'pulse forward' in relation to duty cycles etc(I could be wrong though lol))

I understand that common cathode/anode can be determinative when choosing chips to handle the PWM

But what methods would you guys recommend to do what I'm planning?

1 - Should I be trying to a use main Chip at the base unit and then sending the PWM out to the six modules (like something like 2xTLC5940, or 1 TLC5947 - b/c the latter gives 24 PWM channels(but they are crazy small though right?) - But I would need to use transistors etc to get my power up if I used these yeah?

2 - Or should I instead be looking at using several constant current LED drivers that also dable in PWM handling, like some that Allegro make - eg the A6280 which is a 3-Channel 10 Bit Constant-Current LED Driver with Programmable PWM and up to 150mA per channel. 5-17 V operation.
Should I maybe try using something like that - perhaps 6 of them, one in each cylinder, using the i2c format - similar to what is in the Shiftbrites etc?

3 - How exactly do you apply the Voltage and Current calculations to RGB Leds - specifically the 4 pin versions - since they end up sharing one element - be it cathode or anode. I.e, can you really put them in series - like you would when using the calculators.
e.g how can you really put the Red channel in series with the red channel of the next RGB Led - b/c say in a common cathode LED the anode would also be carrying the anode currents of the other two colours. (It must be obvious that I do not study or really know much about electronics - but when trying to apply the current & voltage tests in the Led Array calculators on the net are RGB different - or do you just treat them in the same way as regular LEDs)

4 - the main goal of this is to get full flood like colour out of the LEDs reasonably instantaneous to the signal detections by the analogue sensors in the cylinders. Not to display images etc, just short psychedelic bursts of RGB wash.

The real questions I'm asking are:
what would be the usual and most normal approach to this amongst arduino users - in terms of lighting like this.

I am aware of things like BlinkM - but they seem a little dear for the volume that I'm looking at, I had planned to go down that route with less LEDs - but I'm hoping to get more light out of these cylinders. Plus in Australia I can get 50 of the LEDs that they use (from ebay of course) for only a touch more than the price of one. And I would really like to learn how to do my own stuff like this with the Arduino.

I bet that alot of you guys & gals can get annoyed with all these 'please help/advise' type of posts but if anybody has the time and knowledge to help me out here that'd be tops, so I can start building this thing

Do you really need a lot of PWM bit depth for this application? Seems like you could get away with using three 74HC595 shift registers. For such a small number of shift registers, you could easily shift out new data fast enough to get several levels of PWM for each channel. Pseudo-random multicolored bursts may not even need much PWM. You'll only need to spend a couple dollars at most, in addition to your LEDs.

If you really need smooth PWM, the 5940 is a possibility...the TLC5947 would be ideal, but the chip really is tiny. I've only made the OctoBrite with it, but I'm supposed to finish up a design that is just a breakout board to use your own LEDs.

ShiftBrites would also work, as you mentioned, but it sounds like you could only fit one of them in each tube. That might be disappointing compared to your plan with several RGB LEDs which sound like the same ones I'm using in the ShiftBrite. The MegaBrite is about 5 times brighter but might still be too big.

Another possibility is the ShiftBar, which should handle several of your RGB LEDs in parallel. If you split the channels into individual red, green, and blue LEDs, you could put them in series and use a higher power supply voltage. That way you could power a couple watts of LEDs if needed.

You might also be interested in another Arduino user's project, the RGB Shield: HTINK RGB Shield



Yeah cheers for that Macegr, I didn't know that 74HC595 shift registers did PWM as well (it does make sense to me now though of course)

& yeah the LEDs look like they are the exact same as the ones you guys use. Size isn't an issue actually (I can't get any other the photo hosting sites to upload the little diagram I made) - I know I said 'acrylic tube' but they are actually moded and cut Tupperware style containers (8 inches in diameter & about 5 inches high) & then I'm frosting them so that the LEDs will illuminated the translucent surface better. So I could actually fit quite a few in there, its not like a thin hose or anything, more like the size of a cake tin.

Essentially they will be Midi triggers - that give a light up response to the performer when they send a bang to Max/Msp. & the random lights aspect is purely show for an audience. The good PWM is more that I was hoping to be able to use them as music following lighting effects while they are not being used.

Since the LEDs will be behind a layer of plastic, a layer of Perspex and a layer of translucent silicone I guess any specific definition of colour will be lost, in fact that is probably the point, hopefully there will be enough refraction to cause a 'tie-die' kind of effect coming through. So do u think 74HC595 is the way to go?

Now I'll just have to work out a way to power them to the max, ill have to investigate your shiftbars

In terms of current and voltage for Series vs Parallel - do you still just calculate them like single colour LEDs?

I suppose by using three 74HC595s I could have one for each colour? or would that complicate things rather than simplify them?

Depending on vendor source availability, and your willingness to code, for a close price to discreet IC's, purchase 6 ATMEGA168/328 chips and one Arduino.

Make a small carrier for each ATMEGA chip that will give it VCC, Ground and I2C.

Upload a sketch into each that addresses them individually. You just want them to wait for a 3 byte code, then execute. Your 3 bytes would be RedPWM, GreenPWM, BluePWM. Once received, it executes that sequence.

Your Arduino is then the master device and tells a specific chip to output whatever you want it to whenever you sense it's time to.

You can even get simpler and wire the six Chips into 6 IOs of the Arduino and when one of the chips is pulsed on this wire it outputs a random color pattern until that wire goes low again.

Shift Registers don't do PWM but for your application it would be easy enough to do it in software and use the shift registers as drivers.