So many possibilities to troubleshoot... Where do I begin?

Those are not seperate leds, that is a led strip.
So you don't need the shift registers, and you don't need the ULN2004 drivers, you need to control a led strip.
Or do you want to control 8 led strips ?

Simple led strips can be controlled by a 12V pwm signal (or 3 for RGB color), some have a control chip.
I think you have a simple one.

The best way is to use 3 mosfets for a 12V pwm signal.
On this page:
http://www.pighixxx.com/abc-arduino-basic-connections/
Click on "Set 2 (Card 4,5,6)", look at card 5 how to control a led strip.
The orange label "OUT" is an arduino pin. So you need 3 pwm arduino pins, and that is all (for just one led strip that is).

Here is my idea. I'm building a hexacopter. I'd like my LED controller to take telemetry data from the flight controller and change the colors based on information from the flight controller.

Caltoa:
Or do you want to control 8 led strips ?

Actually 7 (one strip per leg. to help me see the orientation easier and a "heartbeat" LED) All of them RGB

For my application size and weight will matter a little. I'll look around a bit to see if I can get a mosfet small enough to fit on my 55mm square board.

Also based on the attached drawing (that I revised) did I take care of Crossroads suggestions?

I can't thank you all enough for the tremendous help!

Loren

I haven't read everything in the post, but did you mean to leave QA unconnected?

LarryD:
I haven't read everything in the post, but did you mean to leave QA unconnected?

Yes, to make the layout work a little easier.

Keep in mind in the future projects, a ULN2803 or 2804 has 8 divers rather that the 2004 with 7.
When you add the decoupling capacitors install them as close as you can to VCC and GND on the I.C.s

LarryD:
Keep in mind in the future projects, a ULN2803 or 2804 has 8 divers rather that the 2004 with 7.

Got it.

LarryD:
When you add the decoupling capacitors install them as close as you can to VCC and GND on the I.C.s

should there be one per IC? I'm assuming .1uf?

I would use 1 per.
If you use a surface mount ceramic these are easy to solder under the I.C.

imagesCAW7AIBS.jpg

Would placing them like this be good?

Great.
You could thicken the longer trace.

So I've made several more adjustments to this project. Attached is the latest schematic.

Caltoa:
Check the wiring of the shift registers. Either the schematic is wrong, or you have connected them wrong.
This is explanation and shows cascading for 2 shift registers:
http://bildr.org/2011/02/74hc595/
You have enough pins, so you don't need cascading.

Could I address each shift register individually? If I can address each register individually are there any downsides to doing so other than using extra pins?

Loren:
I'm going to be using LED strips. I thought I saw current limiting resistors on the strip. If they have them on the strip would it be necessary to include them on this board?

I did see that there are resisters on the LED strips. Does anyone have a recomendation as to whether or not I should include current limiting resistors as part of this schematic?

Again many thanks everyone!

Loren

Shift registers:
Shift registers can be used in many ways, but is it useful ?
Pushing 24 bits into the shift registers is very fast. I think there is no need to change it.
But you could connect the latch to individual Arduino pins, and if you don't chain them, you can use one at a time. That would result in 5 pins on the Arduino, not a problem.
Updating all of them will not be faster. You can seperate the serial data, and use 7 pins on the Arduino. But the extra code in the sketch will still not make it faster.

Led strip resistors:
The led strip is for 12V. Often 3 leds in series are used, with a resistor, to make it work for 12V. With a led strip, you don't need extra resistors.

fade
To get all the RGB colors, a PWM signal is used for every 'R', 'G' and 'B'.
Since you use the shift registers, using PWM is a lot harder and not so smooth anymore. Did you know that ?

maximum current
I see you have the 12V at the led connector, and the ULN as driver.
The ULN chips have a maximum current per output and a total maximum current.
Can you check that ? The current depends on the length of the led strip.

Maybe late to the game, but I would just use qty 3 TPIC6B595, in place of the HC595 and ULN2803. 150mA current sink per output, rated to 50V. 3 LEDs/strip are generally 20mA, so 21 LED strips would be supported.
There are other versions of TPIC6x595 that can sink more.
I have boards on hand already that have arduino functionality and 3 TPIC6B595s already made if you want to buy a bare board, or an assembled one. Will post a pic when I get home. All thru hole, easy to assemble.

Thanks to both of you for all of your input!

Caltoa:
Shift registers:
Shift registers can be used in many ways, but is it useful ?
Pushing 24 bits into the shift registers is very fast. I think there is no need to change it.

I'll leave it as is then. I think that I have a board with 4 shift registers that I can play with until I actually get this one made.

Caltoa:
Led strip resistors:
The led strip is for 12V. Often 3 leds in series are used, with a resistor, to make it work for 12V. With a led strip, you don't need extra resistors.

This is also good news.

Caltoa:
fade
To get all the RGB colors, a PWM signal is used for every 'R', 'G' and 'B'.
Since you use the shift registers, using PWM is a lot harder and not so smooth anymore. Did you know that ?

I had seen it eluded to but not specificly talked about. I think for my application I might not need the fade part, but I'll do some testing and find out.

Caltoa:
maximum current
I see you have the 12V at the led connector, and the ULN as driver.
The ULN chips have a maximum current per output and a total maximum current.
Can you check that ? The current depends on the length of the led strip.

The datasheet for the texas instruments chip located here: http://www.ti.com/lit/ds/symlink/uln2803a.pdf
mentions 500mA peak collector current. Does that mean for the entire chip or per IO?

CrossRoads:
Maybe late to the game, but I would just use qty 3 TPIC6B595, in place of the HC595 and ULN2803. 150mA current sink per output, rated to 50V. 3 LEDs/strip are generally 20mA, so 21 LED strips would be supported.
There are other versions of TPIC6x595 that can sink more.
I have boards on hand already that have arduino functionality and 3 TPIC6B595s already made if you want to buy a bare board, or an assembled one. Will post a pic when I get home. All thru hole, easy to assemble.

Nope not too late. I'll do some looking and try a layout to see what I can come up with.

I can't find the maximum current of the ground pin of the ULN2803. It is perhaps not in every datasheet.

If you can use the CrossRoads board with TPIC6B595, that is a very good option. Reducing the number of chips is always a big plus.

By the way, I did make a led pwm dimmer once with the leds behind a shift register. Since the shift register and the Arduino are both fast, it was possible. I think I used direct register writing and a timer and a software interrupt.

I think that I have found a surface mount version that would work. Check out the attached schematic for more details and let me know what you think.

As far as the pwm I was going to try something like this: http://www.elcojacobs.com/shiftpwm/

Let me know what you guys think.

Loren

Pin 7s are floating, tie to +5 if not used.
Are you sure you don't want to use Q7 of I.C. 2? Edit maybe you want "see image"

2-8-2014 9-48-38 PM.jpg

Ok, so for the next version.

LarryD:
Pin 7s are floating, tie to +5 if not used.
Are you sure you don't want to use Q7 of I.C. 2? Edit maybe you want "see image"

Thanks for the tips.

Should I connect the pin 7s to digital pins for versatility or is it worth it to use the pins. Right now I just have pulled them high with the VCC out of the pro mini.

Thanks again!

Loren

If you have an free pin on the controller, route it to the outside of a three pin male header.
The other outside pin could be connected to +5V.
The middle pin of the header connects to pins #7.
Place a header jumper on the +5V or controller side as needed.
In the controller position, you can send a clear.

I'll bet you are getting comfortable with your schematic drawing program, that's the way you learn.

image.jpg

You guys are brilliant!

LarryD:
If you have an free pin on the controller, route it to the outside of a three pin male header.
The other outside pin could be connected to +5V.
The middle pin of the header connects to pins #7.
Place a header jumper on the +5V or controller side as needed.
In the controller position, you can send a clear.

I'll bet you are getting comfortable with your schematic drawing program, that's the way you learn.

I'll incorporate that.