Bolstering Signal strength through a series of TLC5940 chips

Thread Starter

adlib33e

Joined Dec 28, 2017
3
Working with shift registers (tlc5940 and Library) on Sparkfun breakout boards driving individual LEDs.

The boards are designed to connect VPRG, GSCLOCK, BLANK, XLATCH, SIN/OUT, SCLK,VCC, GND in serial. Everything works perfectly on Board #1-10. However, I need quite a few more boards/chips (up to 28) and the signals get crazy from Board 11 onwards.

I was hoping to find some (simple) options to increase the signal strengths to and past board #11, all while keeping the timing correct.. Any help with possible solutions/specific schematics is GREATLY appreciated.

The TLC breakout boards are spaced every three inches. LEDs, chips and Arduino all are powered from a 5V regulated, 40amp source (MeanWell). The connections/soldering are solid and not shorting. Each led and board has been tested individually.

I understand that this is a tall order, impedance, connections, conductance, the board, etc are in play here but I very much need to keep the boards in this lengthy configuration (necessary for art installation). Even if this boost doesn’t get all 28 chips working, I’d like to understand more how the various clock, latch, data signals can work through an extended serial bus and what I can do to clean up, bolster and push them further.

Chip Datasheet: https://www.sparkfun.com/datasheets/Components/General/tlc5940.pdf
Spark fun Board: https://www.sparkfun.com/products/10616
 

Attachments

ebeowulf17

Joined Aug 12, 2014
3,307
Working with shift registers (tlc5940 and Library) on Sparkfun breakout boards driving individual LEDs.

The boards are designed to connect VPRG, GSCLOCK, BLANK, XLATCH, SIN/OUT, SCLK,VCC, GND in serial. Everything works perfectly on Board #1-10. However, I need quite a few more boards/chips (up to 28) and the signals get crazy from Board 11 onwards.

I was hoping to find some (simple) options to increase the signal strengths to and past board #11, all while keeping the timing correct.. Any help with possible solutions/specific schematics is GREATLY appreciated.

The TLC breakout boards are spaced every three inches. LEDs, chips and Arduino all are powered from a 5V regulated, 40amp source (MeanWell). The connections/soldering are solid and not shorting. Each led and board has been tested individually.

I understand that this is a tall order, impedance, connections, conductance, the board, etc are in play here but I very much need to keep the boards in this lengthy configuration (necessary for art installation). Even if this boost doesn’t get all 28 chips working, I’d like to understand more how the various clock, latch, data signals can work through an extended serial bus and what I can do to clean up, bolster and push them further.

Chip Datasheet: https://www.sparkfun.com/datasheets/Components/General/tlc5940.pdf
Spark fun Board: https://www.sparkfun.com/products/10616
Off the top of my head, I don't know enough about those shift registers to know what their limits are in terms of daisy chasing signals, wire length etc. I'd have to do some reading to get my head around that.

Having said that, one thing jumps out at me immediately; I don't see any big wires anywhere. If you're trying to run 28 of ANYTHING, I'd expect to see some larger wires serving as power and ground buses. Also, I wouldn't have the power or ground pass through each board to the next - I'd run large wires from the supply throughout the installation, and branch very short runs of smaller wire as close as possible to each breakout board.

Terminal blocks or terminal strips would be one way to achieve this.

Wire nuts would be another.

Selective window stripping of insulation in the large wire, followed by soldering of the smaller branch wire and judicious use of heat shrink would be a third.

What have you done so far to troubleshoot your problems? Have you confirmed power supply voltages at the downstream boards that aren't working? Have you scoped data signals to see if levels are dropping, transitions are getting rounded off, etc?

What is actually happening on boards 11+ anyway? Are things lighting up, but not in the intended patterns? Are they failing to light at all? More details on the exact nature of the problem would help.

In the meantime, writing this response has made me curious about the rest of the setup - I'll try to do a little reading up on those boards now.
 

ebeowulf17

Joined Aug 12, 2014
3,307
Ok, read through the linked datasheets and an app note, but haven't tried reading any of the example code yet.

One thing I noticed in the app note on cascading devices (here) was that there are communication frequency limits which are determined by how many devices you're trying to cascade and the overall update rate of the system. Do you know what update rate you're running at, and what communication data rate you're using? Perhaps slowing down the updates or increasing the data communication rate would allow for more devices?
IMG_4585.PNG
Ok, no more time to dig deeper into this right now. Hopefully this helps. Good luck!
 
Last edited by a moderator:

ebp

Joined Feb 8, 2018
2,332
Zero. The problem is likely to be zero. There is only one of them.

Small wire like that is grossly inadequate to carry the "ground" current and voltage drops across the wires will corrupt logic levels. Loaded to the max, each driver chip can put nearly 2 amps into the ground. But from what I can tell from the photos of the Sparkfun board the driver IC would be glowing at about the same shade of red as the solder mask if you ran if at that current unless the LED supply voltage were just barely higher than the LED forward voltage.

The data signal is essentially regenerated at each chip, but the clock isn't. Not only is there going to be a ground problem, but there are going to be gross and obscene reflections all over the place on the clock line. A single-ended clock really isn't compatible with that type of construction. A differential driver and differential receivers should be used and even then care is going to be required and the clock line treated as a transmission line. Some improvement might be had by distributing the clock directly to each board from the clock generator, taking care not to introduce different delays that might cause grief. This means a big robust clock driver will be required. Slowing down the clock is unlikely to help because the problems will come primarily proximal to the transitions.

Some improvement might be had by putting the controlling device in the middle of the string and managing the grounds as ebeowulf suggests. It would halve the clock line length, but now there are reflections coming from both ends.
 

Thread Starter

adlib33e

Joined Dec 28, 2017
3
Hoping the break from this project doesn't bury it, but I've got a few more questions based on trying to use the above suggestions.

I've redesigned the art installation so that I could get the chip/boards centralized and next to each other/Arduino rather than separated out to the grid of LEDs. I am going to run a much, much thicker solid straight line for connections, ground and power (which I will increase to 6v). Main question I have is about the difference between an op amp and the clock driver. Since the TLC5940 boards are designed to run in serial, and since I need so many (approx30), It's been suggested that I run a 74HC7014 Non-invert amp every three-ish boards. I can do that, but should I drive all of the signals from the same OpAmp? Data, VPRG, Blank, and both clock signals (GSclock, Sclk)? Could use a little suggestion before I solder this up.

WireDiagrCloudPong.png
 

Attachments

ebeowulf17

Joined Aug 12, 2014
3,307
Hoping the break from this project doesn't bury it, but I've got a few more questions based on trying to use the above suggestions.

I've redesigned the art installation so that I could get the chip/boards centralized and next to each other/Arduino rather than separated out to the grid of LEDs. I am going to run a much, much thicker solid straight line for connections, ground and power (which I will increase to 6v). Main question I have is about the difference between an op amp and the clock driver. Since the TLC5940 boards are designed to run in serial, and since I need so many (approx30), It's been suggested that I run a 74HC7014 Non-invert amp every three-ish boards. I can do that, but should I drive all of the signals from the same OpAmp? Data, VPRG, Blank, and both clock signals (GSclock, Sclk)? Could use a little suggestion before I solder this up.

View attachment 150360
I'm out of my depth here. Based on @ebp's last post I don't think you want to daisy chain the clock at all, with or without buffer amps. Sounds like you'd want one big, robust clock amp feeding all of the clock inputs, not passing through the PCB daisy chain traces at all.

Really though, subtleties of timing issues and line reflections are way beyond my current skill set, so hopefully he'll jump in with better answers.
 

Thread Starter

adlib33e

Joined Dec 28, 2017
3
Zero. The problem is likely to be zero. There is only one of them.


The data signal is essentially regenerated at each chip, but the clock isn't. Not only is there going to be a ground problem, but there are going to be gross and obscene reflections all over the place on the clock line. A single-ended clock really isn't compatible with that type of construction. A differential driver and differential receivers should be used and even then care is going to be required and the clock line treated as a transmission line. Some improvement might be had by distributing the clock directly to each board from the clock generator, taking care not to introduce different delays that might cause grief. This means a big robust clock driver will be required. Slowing down the clock is unlikely to help because the problems will come primarily proximal to the transitions.
.
If I understand this right, I'm NOT to run the clock signals in serial through the various tlc5940 boards and 74hc7014 Buffer amps. I should run them through a clock driver and in parallel connected to each board. The timing "shouldn't" be a problem over a stretch of 32 boards/~100", especially if I can get everything cleanly connected, large ground, adequate power, etc. Question then: Any suggestions on which clock driver I should use?

I was also wondering how and if I need to do anything to terminate any of the signals/ground? Right now, all signals/power and ground are just in a long line, from the Arduino straight through all boards and drivers (It does bend in half, though) Is there anything that should be done after the last board? Or can they just end?
 
Top