Got no feedback, wondering if I posted too much info; I wrote a short version in the second comment.
I just got a couple of TLC5940s for a project I'm working on, consisting of thirty nine LEDs, and each of the three ICs have thirteen LEDs. I additionally have a knob hooked up to my Arduino that dictates how many LEDs are turned on (at 0%: no LEDs on, 100%: all LEDs on). My project also has the option for variable brightness, because after prototyping this out I'm looking to hook up thirteen RGB LEDs, with each of the three colors going to its own IC - I'm just simulating this with thirty nine LEDs instead.
My issue is that I'm experiencing a dimming across all LEDs once the knob starts reaching the 50% mark, and everything gets increasingly dimmer the closer the knob gets to 100%. This happened whether I had the TLC grayscale brightness at 100% or 10%. At first I had everything being powered from the Arduino's 5V pin, which I know isn't proper at 20mA per LED, and then moved to a separate power supply which just about removed the problem - so the problem was in fact too much current consumption.
Now the reason I'm writing is because of something I read on another post. Obviously you can change the brightness for each channel to be anywhere from 0-4095 within the IC, but a person had posted saying that if you're at 25%, there will only be 25% current consumption. So each LED would go from 20mA consumption to 5mA, and I accepted that because I'm not as savvy with rising-time within circuits, and didn't know if the constant pulsing of the LEDs was happening quicker than the current rising-time (if thats even a thing) and that the current in practice was in fact being "averaged" between 0 and 20mA.
Needless to say, this doesn't seem to be the case, though, because my problem had severely improved when I replaced the IREF resistor with one that only allowed 7mA per channel. So even with the old resistor and my brightness per channel being at 25%, the system was still peaking at 20mA per channel, even though the average over time was 5mA.
Anyways, I was just wondering if this is correct and if anyone knew of a work around to get a smaller peak current (possibly in code). For example, as my circuit/code is now, 39 LEDs at 5mA per channel ( the lowest amount of current the TLC recommends) turning on and off at the same times will pull a peak of ~200mA, no matter if my code has the brightness at 100% or lower. Now, if I had each of the three ICs running anywhere up to 33% brightness, and offset each "ON" period by a third of the normal period, then all ICs will be pulling current at different times, essentially meaning a max of 13 LEDs will be on at one time at 5mA per LED = 65mA max peak current, as long as the periods don't overlap. 33% max brightness is perfect for what I need.
I'd love to think this is possible from code, but from what I can tell, the TLC requests only a 12 bit number for brightness, and does the rest, meaning I can't tell it exactly when to turn on each channel. So each channel turns on at the beginning of every blank cycle, and turns off for the rest of it, at least from what I can see... bummer. My next code approach is to see if I can have three BLANK pins running from the same timer on the arduino, and just have three blank signals sent at different times to each of the TLCs, as described above.
Is there a potential hardware solution? Could capacitors charge and hold that kind of energy? Not really my forte, looking for any help on this though! Thanks in advance,