Spurious 5v outputs from shift registers

I am Driving a 10x11 LED matrix using Arduino and Shift Registers with shiftOut function. I am turning on one row at a time. On for a second. Off for a second.

Problem: Spurious output from shift registers causing intermittent faint blink of batches of LEDs. The rows and columns blink is random. Usually a batch next to each other. See photos.

Questions:

  1. What is causing this spurious output from shift registers?

  2. Should I even be using Shift Register 74HC595 in this application?

Components Used:
Voltage Regulator L7805CV
Arduino Uno
Shift Register 74HC595 Qty 3
Darlington Array ULN2803A Qty 2 (Cols)
P Channel MOSFET FQU17P06 Qty 10 (Rows)

Power:
MOSFETS, Shift Registers, Darlington Array powered from 9volt 1 amp AC Wall Adapter through
7805 circuit.
Arudio powered directly with 9 Volt 1 amp AC/DC Wall Adapter.

Trouble Shooting with Oscilloscope: (will attach photos and schematic)

  1. Measured supply voltage. Output from 7805 looks clean.

  2. Measured input to MOSFET from shift register driving Row 1. Good signal.

  3. Measured output at a shift register pin not driving a row. Spurious 5v outputs. Also occurs when this pin is not connected to MOSFET.

  4. Completely disconnected LED matrix from circuit. Still occurs.

  5. Measured Arduino data pin 11 while connected to circuit. Not sure what I am looking at. Might be spurious signals, just do not know what a data signal is supposed to look like.
    Tried filtering signals with 0.1uF and 0.01uF caps, but do not know what I am doing. Did not help.

  6. Measured data pin 11 from Arduino, disconnected from circuit. No Change – same as when connected to circuit.

Detail 1 Breadboard Rev.jpg

Detail 2 Breadboard Rev.jpg

Detail 3 Breadboard Rev.jpg

Detail 4 Breadboard Rev.jpg

Detail 5 Breadboard Rev.jpg

Matrix Rev.jpg

Overall Breadboard.JPG

Attaching additional photos. Thank you for your advice.

Flicker 1.jpg

Flicker 2.jpg

Row 1 MOSFET Input Scope.JPG

Row 1 MOSFET Input.jpg

Row 5 MOSFET Input.jpg

ROW 5 MOSFET Scope.jpg

Shift Reg Row 3 Out Scope.jpg

Shift Reg Row 3 Out.jpg

Photos of Reading the Arduino Data Pin output, unconnected to circuit. Also of 5V power circuit.

Data Pin11.jpg

Data Scope.jpg

Power Circuit Scope.jpg

Power Circuit.jpg

Tried filtering signals with 0.1uF and 0.01uF caps, but do not know what I am doing. Did not help.

You do not filter the signals you filter the power. Each shift register chip needs a 0.1uF ceramic capacitor between power and ground pins directly. Even if you think it does not help you need them and then you go looking for other stuff.
http://www.thebox.myzen.co.uk/Hardware/Exhibition.html

Why dosn't the voltage regulator appear in the schematic?

Mike - I do have have those caps in place. I thought the data line into the shift register from arduino was noisy, tried that, but took them off.

Also want to point out that all the Oscilloscope photos were taken with only the first row being driven. Photos show other rows having spurious outputs from the shift registers, even though not being driven.

Schematic was too wide to show the voltage regulator. I will attach it in a view. Thanks for looking it over. You have helped me a lot in the past with all of your posts.

Voltage Regulator Schem.jpg

I found the source of the 5v blip!

I have 3 shift registers daisy chained together.
When I disconnected all outputs from the first shift register the 5v blip that had been appearing on the non-driven outputs (pins 1-7) went away! Pin 15 is the only pin being driven in this troubleshooting.

When I connected only pin 11 SRCLK clockpin from the first shif register to the second shift register it came back!

So now the question is how do I eliminate this, or am i expecting too much from a 595 chip? Is this tiny cross-talk normal in most uses?

Your opinions are very much appreciated.

I spoke too soon. It still does it when daisy chained shift registers are disconnected from first shift register. I give up. No idea why the ideas faintly flash in groups, randomly. I'm hoping someone will see some error in my circuit causing interference or something... out of gas.

Decoupling VCC of a logic chip should be short (chip VCC to chip ground).
I see you connected the cap to the OE pin, and then travel with that wire via an other breadboard back to the ground pin of the 595. A distance of >20cm.
There might be other things wrong.
Can't be bothered to download all the .jpg files. You should have posted them inline.
Leo..

Hard to see in the photo, but that yellow wire is actually going from 595 pin 15 (QA) to ULN2803 pin 15 (IN1). The caps on each 595 only go from pin 16 to pin 13 (OE). No wires.

I did get carried away with the photos and scope. Not sure any of my scope info is even relevant now.
I am out of my depth.

Sorry about the photos being scattered. Could not load more than 7 at a time, even after dropping resolution. 1 Meg max for uploads.

Here is a better photo showing overall breadboard and the schematic. Thanks for your time.

Suggestions:

  • place 470μF from regulator input to GND.
  • add decoupling to 'all' power rails also.
  • those preformed wires may be an issue, they can be intermittent.

What is written on your decoupling capacitors?

You need an Arduino GND to the breadboard GND.

.

That worked! Specifically attaching the Arduino GND to the breadboard GND. The spurious blinks are completely gone! When I detach the GND they come back!

Thanks larryd I have been chasing this for days!

I also

  • installed the 470uF cap from regulator input to GND
  • Added decoupling caps to all power rails

The decoupling caps are marked "104"

With these changes, does my schematic look correct in terms of good design practice? Any other suggestions?

While trying to solve this problem I found a post by PaulRB that said:

"The fact is, 595 does not make a good driver for led matrices. It was never designed for that. Get a max7219."

Then CrossRoads said: "Or use TPIC6C595 or TPIC6B595 to sink current."

https://forum.arduino.cc/index.php?topic=512368.0

So I researched data sheets for TPIC6C595 or TPIC6B595.

Each of my shift register pins will have max of 11 LEDs turned on at once.
Assume each LED draws 20mA.
Each pin must handle 20 x 11 = 220mA

This is why I am using the MOSFETs. But I see the data sheet for TPIC6B595 and TPIC6B595 allow high currents through their pins:

Shift Register Continuous ea. pin (mA) Pulsed ea. Output (mA)
SN74HC595 35
TPIC6B595 150 500
TPIC6C595 100 250

If I change from SN74HC595s to TPIC6B595s and use mulitplexing (pulsed ?) can I eliminate the 10 MOSFETs?

RichKC24:
That worked! Specifically attaching the Arduino GND to the breadboard GND. The spurious blinks are completely gone! When I detach the GND they come back!

Thanks larryd I have been chasing this for days!

I also

  • installed the 470uF cap from regulator input to GND
  • Added decoupling caps to all power rails

The decoupling caps are marked "104"

With these changes, does my schematic look correct in terms of good design practice? Any other suggestions?

We all need 'ground' to support us. :wink:

TPIC6A595 i.e. A, B, C and D are a better choice.

These SINK current though.

For sourcing see MIC2981/82.

.