0
\$\begingroup\$

I'm trying to build a 8x32 LED matrix the rows are controlled by a 74hc595 shift register connected to the base of 8 BC547B transistors. The output current of the shift register is regulated by 560 ohm on each output pin. The BC547Bs connect the cathode of the LEDs to ground if the corresponding output of the shiftregister is high. The anode of the LEDs is connected to the outputs of 2 4/16-demultiplexers which supply one column at a time with VCC (5V). The current through the LEDs is regulated with 470 ohm resistors.

All parts are supplied with power by a mini-usb with 5V/2.1A

This is the part of the circuit diagram with the 74hc595 and the BJTs:

74HC595 with connections to BJTs

Now. This is the problem. I control the shift register with my arduino due. The MR pin of 74hc595 is connected to GND and the OE to 5V.

Sometimes when I power the whole thing up it works well and everything does what it's supposed to but in some cases all LEDs in the currently active row shut off and the 74hc595 starts to heat up.

After disconnecting the whole thing I let the IC cool down. And tried to reconnect it but now all 8 outputs are high or in some cases nothing happens.

Can anyone help me to solve this overheating? This destroyed 2 ICs since the first tests.

I will give you more information on request.

Edit: Full circuit

Full circuit

I do not think that the reason is too much current to ground. The current to the LEDs is about 10mA. Output current of the sift register is about 7.7mA if one output is enabled and 71mA when all 8 outputs are on. The ground should be able to handle this current. The problem occured in both cases first all 8 outputs were on and the second time only one output was driven high.

Something about the functionality of the circuit:

The columns are controlled by 2 demultiplexers which "scan" through the cloumns applying 5V on one column at a time scanning all 32 columns. So there will never be 2 columns active at the same time. The shift register controls which row is connected to ground. This results in lighting 0-8 LEDs up at the same time. The matrix should be able to display simple characters.

\$\endgroup\$
11
  • \$\begingroup\$ You're drawing about 7.7 mA per output from the '595, or about 62 mA total when they're all on. Have you looked at the '595 datasheet? \$\endgroup\$ Commented Dec 4, 2016 at 16:08
  • \$\begingroup\$ The datasheet says the ic cab handle 32 mA per output pin \$\endgroup\$ Commented Dec 4, 2016 at 16:11
  • \$\begingroup\$ (The output current of the shift register is regulated by 560 ohm on each output pin.) V = IR, I = V/R, I = (5 - .6)/560, I = 7.86 mA, 7.86mA * 8-outputs = 62.9mW. Humm, even if that is not beyond the total power the 74hc595 can handle, you could get away with a lot more resistance as the beta of the transistor you are using is likely something like 100. \$\endgroup\$ Commented Dec 4, 2016 at 16:12
  • 1
    \$\begingroup\$ If you really need more current when driving your LEDs you could use a Darlington transistor configuration. \$\endgroup\$ Commented Dec 4, 2016 at 16:15
  • 1
    \$\begingroup\$ Your schematic lies to you: whatever layout/breadboard you're using introduces parasitic elements that you don't see on the schematic, and thus ignore. Most likely all the long wires/traces in your system, coupled with fast rise/fall times of the logic signals, generate decent ringing that destroys your logic. This question cannot be answered until you include readable pictures of the layout and/or breadboard used. Once you do, try and model the parasitics and figure out whether they play a role. My gut feel is that they do. \$\endgroup\$ Commented Dec 5, 2016 at 21:46

2 Answers 2

2
\$\begingroup\$

You are probably getting latchup due to sloppy layout and thus poor control of current flow. Chances are your high current to the LEDs is finding its way through the ground to your chips and allowing the chip ground voltage to drop more than a diode drop below the driver ground briefly. The resulting current through the protection network, when more than a few hundred mA typically, triggers the parasitic SCR that lives inside your CMOS chip, the chip 'turns on' and is destroyed.

TL;DR: Your layout is almost surely at fault.

\$\endgroup\$
7
  • \$\begingroup\$ If it's what you said shouldn't the error occure everytime the led is on or under certain condition instead of occuring randomly? \$\endgroup\$ Commented Dec 4, 2016 at 16:54
  • \$\begingroup\$ Btw the circuit worked for about 10 minutes per test and about 1 hour in total (about 6 tests) \$\endgroup\$ Commented Dec 4, 2016 at 16:55
  • \$\begingroup\$ Test it without the LEDs connected or reduce the LED current by 10:1 without changing anything else. It will not fail (my prediction). You will then have your answer. \$\endgroup\$ Commented Dec 4, 2016 at 16:59
  • \$\begingroup\$ Tested it already and it worked well. This is the point I don't understand. It was able to work and then suddenly without any warning got damaged. \$\endgroup\$ Commented Dec 4, 2016 at 17:02
  • \$\begingroup\$ Could it make a difference to connect the leds to the usbs gnd and the ics to the aruinos gnds? \$\endgroup\$ Commented Dec 4, 2016 at 17:02
0
\$\begingroup\$

The transistor's input and the LED are current controlled devices. Not voltage controlled. Typically to control a current controlled device a resistor is added (simplest way). Too low of a resistance will draw too much current, too high will not turn it on. Read the data sheet. Subtract the forward voltage form the output voltage then divide by desired current. Also you could possibly substitute the transistor for a MOSFET.

\$\endgroup\$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.