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\$
  • 1
    \$\begingroup\$ 25 is a lot, but 74HC has high impedance inputs, what clock rate do you want to run into the 74HC595? \$\endgroup\$ – Jasen Feb 7 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 at 11:36
  • \$\begingroup\$ What are the outputs connected to? If you're doing something like driving LEDs you may have additional issues. \$\endgroup\$ – Spehro Pefhany Feb 7 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 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 at 12:26
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.

| improve this answer | |
\$\endgroup\$
  • \$\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 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 at 9:15
  • \$\begingroup\$ The 0.1uF cap per device is definitely needed. \$\endgroup\$ – CrossRoads Feb 11 at 13:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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