Electronic – arduino – Sensor decoupling and noise reduction

arduinodecouplingdecoupling-capacitornoise

I have an Arduino UNO board, and I wanted to design a simple 'sensor shield' –since all simple sensors has 3 pins (namely, SIG-5V-GND) and it is convenient to connect bunch of them directly– and thats where things got ugly.

Below you can see my very basic design,

enter image description here

As you can imagine, there is 'a-lot' of noise going on right know (with 1 IR range and 3 ultrasonic sensors). I've managed to reduce some of the misreadings on the software side, yet it is clear that I have to make some hardware modifications as well.

A lot of people that had similiar problems advise coupling each additional IC with a 100nF cap.

My question is;

  • Should I de-couple each line with its own 100nF cap, or is there a neater solution ?
  • Also, these sensors are connected to my arduino with a 15-20cm cable (physical design restrictions). Because of this, should I take extra measures as well ?

EDIT: Sensors that I'm using

Best Answer

Your sensors are actually circuit boards that process the sensor output and give you a easily understood and implemented signals. I have checked, and these boards include their bulk and decoupling capacitors.

One thing to improve is the grounding quality. To do that, you have to improve the impedance of the ground tracks. In low frequencies, the ground impedance is dominated by the resistance, however when the frequency goes high, inductance kicks in and dominates the impedance.

One way to make the ground impedance low at high frequencies is bypass capacitors that are put very close to the supply pins. Since you already have about 20 cm of wires, you cannot do much for the high frequency on your board. But at least you can isolate the noise from the board as noted below.

There are couple of things that come to my mind that will reduce overall noise:

Add a bulk capacitor:

Put an electrolytic capacitor that has a value of about 10uF to 220uF across GND and +5V. This will give you a cleaner power and room for inrush currents. Since capacitors have relatively low series resistance, they can give higher currents, of course limited with their storage. Also, connecting a 100nF ceramic capacitor with this bulk capacitor will filter out high frequency content and decouple the "sensor shield" from Arduino.

Add decoupling capacitors to sensors:

Sensors can include digital circuitry which can generate high frequency content, thanks to square waves. You cannot give these sensors low impedance power paths because of the already long wires, however, you can limit the high frequency content coming from these sensors to your board.

You can add some 100nF ceramic capacitors in-between Vcc and GND of these sensors and the high frequency content coming from the sensors will be shorted to GND with the help of the capacitors. In other words, you are going to decouple your sensors from your board. Make these capacitors as close as possible to power pins of each sensor. You can sort of use one capacitor in common for very close sensors.

Make the ground trace gain weight:

When a trace gets ticker, its resistance drops lower. Make the ground trace as thick as you can. Or better, as Andy aka suggested, make a ground fill, or a ground plane, depending on what your CAD software calls it.

Also, there is nothing pulling you from making the Vcc trace thicker and lower impedance.

One small detail is to twist those long cables so that they are all close to GND cable.