0
\$\begingroup\$

Situation:

I am doing a project which requires me to chain 25 74HC595 shift registers together. They ate controlled by an Arduino microcontroller.

Question:

  1. Will it work when chaining that number of shift registers together?
  2. Will there be any problem such as the clock signal false and data transmission errors because of the long transmission distance?
  3. Do I need something like a buffer or capacitor to make sure the transmitted signal is correct? If needed, any recommended type and where to connect them?
\$\endgroup\$
5
  • 1
    \$\begingroup\$ 25 is a lot, but 74HC has high impedance inputs, what clock rate do you want to run into the 74HC595? \$\endgroup\$ Feb 7, 2020 at 11:33
  • 1
    \$\begingroup\$ Based on the information you gave, we can't obviously predict how you have designed and wired it, so we can't know if it will work or not. Are they on same PCB, or different PCBs? Are they 1cm apart or 1km apart? \$\endgroup\$
    – Justme
    Feb 7, 2020 at 11:36
  • \$\begingroup\$ What are the outputs connected to? If you're doing something like driving LEDs you may have additional issues. \$\endgroup\$ Feb 7, 2020 at 11:37
  • \$\begingroup\$ Similar question: electronics.stackexchange.com/questions/40242/… recommends putting a buffer on each board. But you might not actually need it. \$\endgroup\$
    – user253751
    Feb 7, 2020 at 12:11
  • \$\begingroup\$ I am thinking of placing five shift registers on one PCB and make five PCBs to connect 25 shift registers in total. The total length of the 25 shift registers will be controlled around 2 meters. The purpose to control this amount of output pins is to output "digital high" voltage to each output pin on the shift register one by one and detect this voltage through a sensor on a separate pin on Arduino using "digitalRead()" to see if the sensor is conducted with each output pin on the shift register. \$\endgroup\$
    – Andrew
    Feb 7, 2020 at 12:26

1 Answer 1

2
\$\begingroup\$

In the ideal case, driving 25 HC595s will work just fine.

However, there are some things you can do to make it not ideal, especially easy if you have long lines or high current consumption.

If you have a very long clock and strobe lines, then reflections could be a problem and you need to treat them as transmission lines. Usually a series resistor at the source end of a single, long, unterminated line is sufficient.

If you have your power ground and logic ground as the same conductor, then current flowing in a long line could generate enough V=IR voltage drop to shift the ground voltage at the far end such that you don't make the logic levels for clock and strobe signals send from the control end. You might want to rebuffer the clock and strobe at each board, if you have a long string of boards, so the voltage shift doesn't build up.

\$\endgroup\$
3
  • \$\begingroup\$ I've daisy chained 45 TPIC6B595 which is similar to 74HC595, but with open drain outputs. I put 9 on a little card with 74HC125 to buffer the clock and latch signals, and also the dataout from the end of the prior group. Worked very well, no termination needed as each signal only saw 9 loads, and the '125 kept the signals clean. I'd recommend similar for you, with 9, 8 , and 8 as a grouping perhaps. Depending on the loads, you may want to beef up the power and Gnd wires, and add a 10uF cap for each group of chips. Don't forget 0.1uF cap at each chip. \$\endgroup\$
    – CrossRoads
    Feb 7, 2020 at 15:34
  • \$\begingroup\$ @CrossRoads Thank you very much for your suggestions, I will try to use the buffer and capacitors. \$\endgroup\$
    – Andrew
    Feb 11, 2020 at 9:15
  • \$\begingroup\$ The 0.1uF cap per device is definitely needed. \$\endgroup\$
    – CrossRoads
    Feb 11, 2020 at 13:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.