7 Segment LED and shift register current draw

I currently have 2 x 74HC595 shift registers driving a 2 x digit 7 segment LED (common cathode) and providing 10mA to each segment out of a maximum of 20mA to limit the current draw through the shift register and to control the brightness by using a 330R (8 per 7 segment LED) prior to each anode.

This is displaying the current temperature from a LM35 to two significant figures, however, I would like to add another 2 x shift registers and 2 7 segments LED's to display decimal level temperatures using 4 digits in total.

From what I have read the digital pins are limited in the current that they can provide, however, from reading the 74HC595 data sheet it would appear that they can provide 70mA each. I am powering the Vcc of each chip from the 5V pin and the digital pins are only providing the relevant bits to the shift register to light the correct LED segment.

With this method and without multiplexing am I likely to be requesting too much current from the 5V pin, essentially if all seven segments on each digit are lit I will be using 70mA per digit or 280mA in total from the 5V pin.

Hi, I'd say your calculations are right and that you should power all the LED displays with a separate 5V supply.
Have you got a circuit diagram to show us what you have at the moment, a CAD or just a pic of a hand drawn circuit will do.

Hope to help..
Tom....... :slight_smile:

Here is a fritzing project showing how I've wired up my 2 digit display.

The first shift register overflows into the second the the bit register is set to output the display, I would replicate this to output a 32bit binary to all four shift registers in my final example.

The LED display is currently shown as an IC.

74HC595 is only good for 70mA TOTAL thru the VCC and Gnd Pins. Thus with all 8 outputs on you should be limiting current per IO pin to 70/8 = 8.75mA.
4 digits would then be 280mA.

Let me be something of a "pain".

This is an amusing, but impractical exercise. Otherwise a waste of time.

The task is properly performed with essentially no restrictions by using a MAX7219, which is readily and cheaply available on eBay. Perhaps more to the point, the whole display, fully assembled, is available at modest cost. There have been some concerns about dud chips being supplied - I have had no problems so far but perhaps you have to be careful of which dealers you use.

The MAX7219 performs the multiplexing without involvement of the Arduino. You just send it the data to display only on the occasions whenever you need to alter that data. (Using common-cathode displays) it decodes the digits for you, or you can send it raw segment data - your whim. For up to 8 digits, you need only one resistor and two capacitors. It is correctly rated and supplies the correct drive currents automatically.

Experiment if you will, but if you simply want to have a working display, the MAX7219 is the way to go.

Request was for "With this method and without multiplexing" tho.
I agree MAX7219 is a lovely chip for common cathode displays.
$1.25 from taydaelectronics. Probably fakes, the one I purchase before finding that out (with Maxim stating that Tayda is not an authorized reseller) have worked ok.

CrossRoads:
Request was for "With this method and without multiplexing" tho.

I take that as a description of current state of affairs rather than a proscriptive requirement.

The most common situation here, is that questions are asked based on what people think is the obvious or immediate solution, rather than describing the primary need.

What is elegant about the MAX7219 is that it completely bypasses the consideration of multiplexing as it does it all for you and avoids any need to code as such. In fact, apart from the extra registers that appear and need to be initialised, the (SPI) interface is essentially the same as driving 74HC595s. Or the ability to use the inbuilt decoder of the MAX7219 makes coding even simpler.

All,

thanks for your help, I am indeed just trying to find the most efficient way to drive a 4 digit 7 segment LED display without using all the pins on my board.

My main goal is to make a LED clock with temperature (current / high and low) outputs, a buzzer alarm and barometer with configurable RGB led for warnings.

To this end I have ordered a MAX7219 as this seems the most appropriate for my needs, however, the shift registers have been a useful lesson. What would be their main purpose other than driving LED's as that seems secondary.

Is there an more common solution other than the MAX7219?

Shift registers would be universally used for serial-to-parallel conversion in the more general context, and another configuration for parallel-to-serial conversion. The 74HC595 is a logic chip which was never intended for use to drive LEDs, rather to perform the function amidst other logic chips of the same series. Of course, "discrete" logic in itself has been manifestly eclipsed by MCUs, so these logic families are just as, if not more frequently used now as interface chips.

I presume that if there was a more common solution than the MAX7219, we would be using it and that would be the predominant one on eBay. :slight_smile:

There is in fact, another chip which supports more matrices, the HT1632C, used in the JY-MCU Lattice Clock which (the clock unit) is worth considering in itself and has a fair bit of support.

There are power shift register chips like TPIC6B595 that can sink 150mA continously per output from sources up to 50V. If you have a large 7-segment displays that has multiple LEDs in series (and in parallel) than MAX7219 is not suitable, but a power shift register chip is.