How many Shift Registers can I power through Arduino's 5V VCC?

Hi everyone,

I hope you're all doing great.

I am using an Arduino Mega 2560 to control 170 PIN diodes.

For that, I am using 22 shift registers type 74hc595n. Each DataPin of these 22 shift registers is connected to one output pin of the Arduino MEGA. The latchPin and ClockPin of all the Shift Registers are connected to Arduino Pins 9 and 8 respectively.

Each of the 8 Shift Register output pins needs to output 10 mA of current.

As you may already know, for the shift registers to work, they need to be fed with 5 Volts each.

Hence, my question is: Given that Arduino has a VCC output Pin that gives 5V, can I connect all 22 shift registers to this same VCC pin of the Arduino MEGA?

Thank you so much in advance for your help!

So that would be 80mA per shift register and you have 22 shift registers. If my maths are correct, then that's 1.76A not including the additional current requirements of the shift registers internal logic.

Looking at the schematic for the MEGA2560, it shows an LD1117S50CTR as the 5V regulator, which according to the ST datasheet, is limited to around 800mA.

You should definitely look for an alternate 5V supply as the onboard one can't supply that amount of current.

Maximum current through Vcc ir GND of the 74HC595 is 70 mA; so you can't use 8x10 mA at the same time.

The 800 mA mentioned above applies if one has proper cooling; on the Mega that's not the case. It's also only applicable when using an external power source on Vin or barrel; the USB current is limited to 500 mA. So you need a dedicated 5V power supply just for the 74HC595s.

That sounds very strange. Is there a reason you connected them like that?

The normal way would be to chain the registers together, then only one data pin is connected to the Mega.

Hi Paul,

It sounded easier for me to connect the dataPins of the shift registers to different output pins of the arduino.

This said, is there any advantage of chaining the registers together instead?

Thank you so much for your help

So your code is bit-banging 22 shift registers in parallel? You're going to be amazed how much easier it is if you chain them!

  1. You save 21 Arduino pins. That means you can use a Nano or something much smaller and less costly than a Mega. And probably quite a lot of wire.
  2. You can use the standard Arduino shiftOut() function instead of your own bit-banging code.
  3. If shiftOut() isn't fast enough, you can use the Mega's SPI hardware to shift out the data far faster than bit-banging.