32x Daisy Chained TPIC6B595 to drive 60x 29BYJ-48

Hi, this is a rough follow up on DIY ClockClock - Project Guidance - Arduino Forum, however the end product has since morphed.

I've finally gotten around to drawing up a schematic for the project, and just about to place a purchase order for components - but want to pass it by some folks with more idea than me. The design is largely based off CrossRoads design Maximum number of shift registers cascading (TPIC6B595) - LEDs and Multiplexing - Arduino Forum.

Basically, I plan on using an ESP32 to drive 4x boards, each consisting of 8x TPIC6B595s (w/ 74HC125 as a buffer per chip) that will be used to drive 15x 5V 28BYJ-48 stepper motors, giving a total of 32x TPIC6B595s, 4x 74HC125s and 60x 28BYj-48s. Does the below make sense for this purpose? The first SR_BOARD will receive the input from ESP32_BOARD_OUT, and every SR_BOARD after that will receive its input from the previous board etc.

Am I missing anything? I have the 0.1uF decoupling caps, however many other designs on these forums suggest the use of another capacitor, what is the purpose of this and where should it go?
Also, in regards to the 74HC125 buffer, I do not really understand its purpose, nor how it achieves this purpose...? (All I know is that it is a buffer chip and it's necessary? But this doesn't seem to match my idea of a 'buffer' in memory).

Cheers,
Cam

Also, in regards to the 74HC125 buffer, I do not really understand its purpose

Are your ESP32 output pins able to drive 32 TPIC595 inputs?
Search "fan out".

Fan-out is likely not an issue with Cmos, if wiring is kept short.
Level conversion is more important, because TPIC chips are 5volt only (>=4.25volt for a HIGH).
The ESP is 3.3volt logic.

If you would use a 5volt Arduino, then the 74HC125 would not be needed.
I have controlled a chain of 24 TPIC chips with a Nano @4Mhz SPI.
Leo..

That’s a big antenna you’re designing there.

Fan-out itself is less likely to be a problem, because your shift-registers are wired serially. out-in-out-in- etc...
The clock, latch etc are one long wire with a lot of branches on and between boards, that’s more likely to be an issue.

To address both issues, you need to look at buffering all the signals, and noise mitigation. The current layout may seriously affect your maximum clock & data rate.
It’s not impossible, but I wouldn't start this way.

Buffering may also be a convenient place where you introduce level conversion.
Good luck. If you stick with this concept, have a read up on high-speed serial busses.

I think I would revise my buffer suggestion to be something in the 74AHCT family for the first board in the chain.
That will accept a signal as low as 2V from a 3.3V powered devices as a valid high, and output 5V signals.
https://www.digikey.com/en/products/detail/texas-instruments/SN74AHCT125N/375798

Hi,
Have you prototyped at least a couple of 595 daisy chained to prove your circuit before going to PCB?

Tom... :slight_smile:

Thank you all for your help and advice.

It seems like fan-out may not be something I have to deal with, but logic level conversion is. But as CrossRoads and lastchancename have pointed out, maybe I can introduce the 74AHCT124 as a line driver to overcome this on the first board (although means my boards wouldn't be as modular, so may be worth replacing all of the 74HC125s with these....)

I'll look into high-speed serial busses in the next couple of days.

Lastchancename, sorry for my naivety, but what do you mean by all the signals? With a buffer on each chip, does this not cover the clock, data and latch signals - what else am I missing?

TomGeorge, I haven't yet. However I have daisy chained 12*74HC125s as a start. I won't be ordering any PCBs, just enough parts to continue mucking about on a breadboard at this stage. Just got bored whilst waiting on parts to arrive in Aus from China...

Exactly, you’re on the money. But CLK, DAT, and LATCH all take different paths.
The daisy-chain solves some issues like fan-out, but extends the signals differently for each wire... some are multi-drop, some are paralleled, and some are daisy-chained sequentially.

As the serial speed goes up, especially over longer or convoluted buss paths, you’ll have different waveform ‘shapes’, as they rattle through the interconnected boards (crosstalk, capacitance, voltage drop etc). This can skew the arrival of CLK & DAT relative to each other, and noisy edges may appear as stray CLK or DAT values.

This is where buffering and synchronous data helps, as long as the signals are clean - with nice sharp edges etc.
The buffering mentioned here isn’t a lengthy ‘buffer’, but simply the ability to reclock, or synchronise the three buss lines so they reliably arrive at the same moment.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.