Decoupling PWM LED Driver Module

I'm trying to control multiple rows of LEDs with an Nano, via a TLC5947 24-Channel PWM LED Driver Module.

Everything works as expected as long as I supply power to the Nano and the TLC module independent from the LED load (ie. using one power supply for the led loads and another for the Nano and the TLC module)

A shared power supply (see attached simplified schematic), however, totally messes up the LED control signal output, resulting in flickers, flashes, incorrect on/off times, etc.

I'm wondering if there was a relatively easy way to decouple the control (Nano + TLC) from the LED load side of the circuit, so the noise wouldn't affect the signals.

Your suggestions would be highly appreciated! Thanks.

TLC5947.JPG

TLC5947.JPG

What I have done in a similar situation (flashing navigation leds on an RC airplane) is add a small R/C filter via a 20 Ohm resistor in series in the VIN line (so the green line going upwards from "PSI 12V" to "VIN" in your schematic), and then a 1000 UF capacitor between "VIN" and "GND" of the NANO. That way I had no more brown-outs of the microprocessor.

Another "trick" is to put a diode in series with the microcontroller and a capacitor between Vin and Ground (again 1000uF is probably good). Current flows through the diode to power the microcontroller and charge the capacitor but the capacitor can't discharge back through the diode.

Positive noise spikes can get through but they are filtered by the voltage regulator. Negative spikes can't get through and the capacitor temporarily holds-up the voltage.

Is your power supply strong enough? That is, is it able to give enough current and keep voltage unchanged. A large capacitor directly between the outputs of your power supply could help too. How thick are your power wires. Thin wires may cause problems.

For you info, I have currently a Arduino Duemilanove giving PWM to three RGB power leds on my balcony and there are no problems. The power supply is indoors. (Duemilanove because that was my only free board.)
Current varies from 0.1-0.3A at 15V depending on what the sketch is doing. Wires to the balcony are about 0.75mm thick or so. I use Meanwell led driver.

Is your power supply fit for Arduino. Some "wall warts" give uneven voltage which may work for leds but not with Arduino. Try Arduino alone with your power supply, if it doesn't work, the tricks with capacitors suggested earlier may help.

Thanks for all of your inputs. :slight_smile:
This is how I was able to make it work with your help.
In the meantime I also found this very interesting blog entry addressing major issues with connecting TLC594x drivers to an Arduino. Point 0. is particularly important!
Primarily I was experimenting with hmeijdam's suggestion and found one configuration that worked. (See below)
How the GND terminals of the Nano and the TLC modules were connected to the negative side of the circuit was critical. As weird as it looks in the schematics, this was the only way it worked. If I connected the TLC module's GND pin to anywhere else than the negative rail of the LED loop, the LED control got messed up.
The optional capacitor also had to be added to the TLC module without which the setup didn't work.

Good to hear it works. The Ground and power connections look normal, so I think it is not too surprising it works. But I think there is an error on the transistor part of the schema. The base resistor of your transistor is drawn as connected to positive 12V. It wouldn't work that way, so it is an error of your diagram.

Regards
LM

Thanks to LM for pointing to an error in the circuit.
The TLC5947 outputs are open drain, so the transistors' job is to invert the signal.
I corrected the corresponding part of the schema, so it wouldn't confuse other readers.
This is how it works in practice:

correction.JPG

correction.JPG