I need to control several (5 to 10) analog RGB strips which have a separate power supply at 12V or 24V. Just like this one for example. I need to control the intensity of each colour channel for each strip. The producer says to use any NPN or N-channel MOSFET; I think that a PWM signal per each color per each strip will be necessary to drive the mosfets.
I have tried to find a system that will allow me the least load on the raspberrypi processor (so it can process inputs with no delay) and an easy implementation, and found that I could:
- Build my own extension board using
PWM
output with mosfets, and using a software library (pi-blaster) to generate extraPWM
; apparently too heavy on the processor and not enoughGPIO
pins; - Use the leading standard DMX (expensive parts and unnecessary complication?)
- Use an
I2C
i/o expander (MCP23017 ?);
The latter seems most appealing, which solution would be best and easiest? I welcome pre-soldered kits / external controllers but I just want to know which way to go, I just want to dive into the software part of this project .... but I want to start with the right technology.
I'm a noob in electronics, if some of this doesn't make sense please comment to help me get the question straight.
Update
Here is the hardware I ended up choosing, for reference.
- @Gerben's suggested shield [Raspberry Pi - I2C 32 Channel PWM / Servo Board] based on PCA96852
- Transistor MOSFET STP16NF06 (1 per pin i.e. 3 per strip)
- 5m 12VDC 5050 SMD RGB 300-LED Strip Waterproof IP65
- a breadboard, wires, 12V - 5A power supply
- a box of Lego bricks to build a case for the prototype
TLC5940
would do the trick, or read the related questions on the right. I was recommended to use shift registers but they don't do the PWM for you.PCA9685
is an I2C equivalent of theTLC5940
. At first glance it seems theTLC5940
needs an external signal as a clock. So the Pi would still need to do something, even if the values don't change. But I could be wrong here.