Electronic – arduino – Driving two large 7-segment displays using Arduino and shift registers

7segmentdisplayarduinoshift-register

I recently started a project in which I want to control two 7-segment LED displays using two shift registers (74HC595) and my Arduino. I thought I had the basic ideas mastered, but I ran into some complications and I could use some help.

For this project, I wanted very (physically) large digits. I purchased two of these giant 6.5" 7-segment displays from Sparkfun. They are common anode.

The first thing I realized is that these displays likely need more than the 5V that the Arduino will supply. So, I'm guessing a different source will be needed. I'm hoping that a 12V battery would do it, but I'm not sure. I'm also a little uncertain what that implies for my circuit… does that mean I'm going to need a relay?

I also realized that I'm uncertain about the resistors I need here. I'm not sure if I'm reading it correctly, but the specs seem to indicate that there are 12 individual LEDs in each segment (five in the decimal point, which I probably don't even need for this).

The specs indicate 20mA forward current and forward voltage of 11.6-12.4V, but I don't understand if that's per LED, per segment, or for the whole display.

One other point – I intend to use multiplexing (or charlieplexing?) to cycle through and turn on individual segments to reduce power consumption at any one time. (I was thinking that if I did one segment per display, that means only two segments, at most, need to be lit at any one time.)

I'd really appreciate any advice here. It would be great if someone could put together the entire wiring diagram, but I'm happy to take a crack at it myself if somebody can answer some of the key questions. (i.e., power source, resistors)

Best Answer

  1. They are common-anode, so charlieplexing is out.

  2. Multiplexing does not reduce power consumption, it only (may) simplify the drivers. You only have two displays, so you may as well not bother and drive them statically. The ratio of peak to maximum current is very low on these displays (only 1.5:1 for 10% duty cycle).

  3. There are two parallel strings of 6 series LEDs for each segment, as shown the the datasheet. The decimal point has one fewer and apparently a resistor (not as shown). The voltage is for all LEDs in series. Since that voltage is around 12V you should use a higher voltage supply such as 15V or maybe a 19V laptop adapter.

  4. You can use 2x ULN2003A drivers along with the 2x 74HC595s and 14 resistors to control the displays. The ULN2003A drivers will drop around 0.8V at 15mA, so you can find the resistors as around 150 ohms with a 15V supply or about 430 ohms with a 19V supply. If you use the decimal point be prepared to change its resistor value to match the brightness, and you'll also want to use the ULN2803A which has 8 drivers per chip rather than 7.

  5. 20mA is the absolute maximum current at 25°C so don't attempt to run them at that current unless they are going to live in a refrigerator.