I have a small project I am trying to get working properly.
The project consists of controlling 12.8 Amps worth of LED strips which I can wire either common anode or common cathode and each strip has built in resistors for each led. At full brightness this setup will draw 12.8A @ 12V. (will eventually scale up to a total current of 21A@12Vdc)
I have many NPN transistors, 2803 darlington pairs, & 5 extra 5940nt on hand as well as every friggin' resistor I would need . Also have more than adequate power supply.
The way I have it setup now is common anode and can easily run all LEDs off 1 TLC5940 using just three pins from the TLC.
The TLC barely gets warm but I know this is not the best way to do this and I am only getting partial brightness. My question is what would be the best way with the components mentioned above to get full brightness, with dimming ability (heart beat pulse) while also having great reliability?
I was thinking of using some npn3904 transistors or 2n2222's with the 5940 but am unsure how to hook it up using common anode setup. I would really like to use the darlingtons if possible cause it seems that would make the circuit easier to assemble as well as be more compact.
Obviously I have no idea which way to go with this, hence the questions.
I can also pick up some mosfets if those would serve better but would at least like to get a mock up going with the components on hand so I better understand the circuitry. And I have been searching for hours to find a good solution but it seems to be hiding from me.
Thanks in advance to all the great minds I'm sure will chime in.
There are 4 groups of 4 strips on this setup in the picture, I just want to be able to have full PWM capability and control with the arduino. I'm not exactly sure how to run such a high amp load with pwm from the arduino. What I have worked out so far is having the 5940 outputs run into a uln2803a darlington input with a 10k pullup going to +5v between the two then running the ULN output to the strips. I can get FULL brightness on the strips but I do not have an PWM capability with the strips going through the ULN.
The ULN2803 is an NPN array; you need a PNP array because the TLC5940 sinks current.
Other than that it looks like you're on the right path. Note that the ULN2803 has a 2.7K resistor on each input so you need to duplicate that with whatever PNP solution you use.
I understand it sinks current but why would the NPN transistors used separately (2n2222) work with pwm but not the NPN darlington? Suppose I will look for a good PNP darlington setup. Thanks
An NPN 2n2222 would not work with the TLC5940 either for what you're trying to do. If you saw it in use with the 5940 then it must have been used for some other purpose than sinking more current.
How many separate blocks of LEDs do you want to control independently for brightness, and what will be the total current consumption of each block? (1 block = 1 string or several strings in parallel, as appropriate for what you are trying to do.)
Each set of LEDs I would like to control independently pulls 800mA. For the LEDs in the picture there are 4 sets of 4 strips. Each set pulling 800mA with the total pulling 3.2A
I would like to fade them all from full on to almost off at the same time. I know I can go to something like a MOSFET which I will be doing for the final product but I would really like to get this working correctly (full brightness) with the components I have listed in the first post just to give me a better understanding of circuits.
The TLC5940 sinks current, therefore you need P-channel mosfets or PNP transistors to buffer it to drive a larger current. However, as you have only 4 sets of LEDs that you want to drive independently, you could do away with the TLC5940 and dedicate 4 Arduino outputs with PWM capability to the task instead. Each pin could drive an NPN darlington to provide the 800mA current capability that you need.
Unfortunately, the ULN2803 is only rated at 500mA per pin. However, you could split each set of LEDs into 2 x 400mA sets, each driven by one ULN2803 pin, and then drive 2 ULN2803 inputs from each Arduino pin.
Back to reply #3: Try using lower value pullups. The TLC5940 datasheet says it needs to sink 5mA minimum - with your 10K, you're only getting 0.5mA.
Change to 1K, 820, something like that.
Also try putting an inverter between the '5940 and the 2803 (say, another 2803!) so that when the 5940 is low the output of the 2nd 2803 is also low.