Powering 3 RGB Led Strips Using 3 DC Power Sources

Hi,

I'm trying to control 3x 5m RGB LED strips using an Arduino Mega's PWM pins. Building off ladyada's tutorial: RGB LED strip tutorial. I created a 3x3 bank of N-channel mosfets, each being supplied by a seperate 12V, 5a power supply. As a diagram if each P is its own 12V DC power supply (P1 powering led strip 1, etc.) , and M is a mosfet:

R G B

P1 - M -M -M (per mosfet: left leg pwm, middle leg to led rgb power strip, right leg ground)
P2 -M -M -M
P3 -M -M -M

To test, I powered P1 with DC power and had the arduino plugged into USB. The colors remained fixed blue and barely cycled as per the code (see tutorial). However when I powered the same row through the Vin and ground through the arduino, everything worked fine. In trying to figure what went wrong, I came across a few problems.

When the DC power was supplied to P1, and then I plugged the USB cord into the arduino, the colors all shifted. I got worried that there was back supply, and placed diodes coming out of the PWM controls, but this disabled the color rotation. I kept the diodes and reverted back to connecting power through the Vin which worked before, but now the cycling of colors was very jerky and not as brilliant.

P1, P2, P3 all work fine when run through Vin of the arduino, but obviously I can't do this with 12V 15A, or at least I think it's too much amperage. Is there anyway to make it work using the Mosfet bank I created? Is there a better approach when one needs a large amount of current? And are there diodes that won't affect the PWM in such a strange way?

Any help would be greatly appreciated.

Thank you,

Michael

Schematic: Sorry for the cryptic email. Here are two schematics. The first doesn't allow for any pwm control. The second only seems to control the RGB Strip connected to the Arduinos Vin. Any suggestions?

http://www.flickr.com/photos/80053489@N06/7165313015/

http://www.flickr.com/photos/80053489@N06/7165312673/

You need to connect the ground on all the external supplies to the ground of the arduino.