Noise Filtering Techniques for Analog Sensor Design

Thread Starter

DJ_AA

Joined Aug 6, 2021
490
Hi All,

I have not yet created my design, but I would like some advice before I start the schematic.

I am working on a design where I need to read the voltage from an electrochemical sensor that is sensitive to various types of noise and interference from the environment, as well as from different parts of the same circuit. Please excuse my questions if they are not appropriately phrased. My PCB will include a multi-channel ADC and a microcontroller. The electrochemical sensor will connect to the PCB using a PCB-to-PCB connector instead of any loose wires.

1. The main power coming into the PCB is 12V, which needs to be filtered. I am considering using a common mode choke or a ferrite bead. Do you have any recommendations for this?

2. The ADC will be read using I2C, and I aim to read it at maximum speed with a microcontroller. Are there any best practices I should keep in mind to ensure that noise from one ADC channel/sensor does not interfere with another channel? Would using ferrites or some other form of filtering help?

Additionally, how can I ensure that I2C communication with the microcontroller does not introduce noise to the rest of the circuit?

3. This PCB will also communicate with other PCBs using UART, via a ribbon cable. I am considering including a digital isolator or optoisolator to reduce noise from this path as well. Would this be recommended?
 

Ian0

Joined Aug 7, 2020
13,112
It all depends on the electromechanical sensor. What is its output voltage? Output impedance? Frequency range?
 

Papabravo

Joined Feb 24, 2006
22,065
Noise filtering techniques are never as good as getting rid of the source of the noise. That is where your efforts should be concentrated.
 

schmitt trigger

Joined Jul 12, 2010
2,056
Exactly as Papa mentioned.
Simply replacing the leadwire from a flat twin to a coax will dramatically reduce the noise.
Another trick is to make sure that the coax shield is only grounded at the entrance of your circuit.
Another trick is to make the input impedance as low as feasible.
Now, once that you have done this, then you may attach filters. I assume that your sensor’s output is essentially a slowly changing DC level. Then a low pass filter, with a corner frequency at least two octaves below the powerline frequency will help.
Finally, since you are using a microcontroller, take several readings and average them. If you can synchronize the different readings to the powerline’s zero crossing, much better. This last technique is used by high end DMMs to obtain 6 1/2 digits or more resolution.
 
Last edited:

WBahn

Joined Mar 31, 2012
32,752
One of the first things you need to do is figure out, at least roughly, how big the problem is that you actually need to solve. In this case, you need to get a decent idea of how much noise you have, and how much noise you can tolerate. Once you get the noise down below what you can tolerate... stop! You are done. But you can't know when you are done until you quantify what you can tolerate. So the place to start is to consider how much your signal at the input to your A2D can change before the resulting change in the output value is unacceptable. Don't just declare it to be 1/2 LSB of the ADC, either. Consider the actual application and what is actually tolerable. What is the resolution that your sensor readings have to actually deliver to be acceptable?

Depending on the results of the first part, you might consider implementing a prototype system where you simply apply all of the low hanging fruit techniques, include good power supply and individual chip bypassing and good PCB signal routing practices, plus anything else simple that comes to mind -- and that you are willing to commit to even if it isn't actually needed, for instance, you could put ferrite beads on there, but you might end up being stuck with them in your design even if they aren't really needed (unless you do additional work with them removed). If that system meets your noise requirements, you're done. If not, then you start looking for other things you can do. Mitigate the source where possible/reasonable, filter out what's left if you still need it better.

If you need to go beyond the "low-hanging fruit" stage, it will probably be worth the effort to determine exactly what the worst noise sources are. That can be tricky, but it allows you to focus on the things that matter instead of going down a rabbit hole on things that don't.
 

Thread Starter

DJ_AA

Joined Aug 6, 2021
490
Thank you for your reply. At this stage, I am designing the PCB, so there might not be a problem, but I am being cautious by providing multiple options for adding additional components if necessary.

Will the output voltage vary from about 0.1V to 0.4V? If so, it's a fairly low voltage.

Yes, I agree that reducing noise directly is the best option compared to filtering. This is something I aim to do, but there could be factors out of my control, such as environmental noise like RF, which I would like to filter. This might require some type of shielding.

Previously, I have been using the following types of wires on my sensor boards, which will be replaced by a ribbon cable. Each signal and power line will have an associated ground.

Wire Link

My sensors are directly connected to the PCB, which reduces impedance, and the connectors are kept close to the ADC as well. However, my concern is that I will be polling the ADC from my microcontroller’s I2C, which I believe could introduce some noise.

Would it be a good idea to place ferrite beads on all signals and ADC channels, as well as at the entry point connector on the PCB?
 

Ian0

Joined Aug 7, 2020
13,112
Thank you for your reply. At this stage, I am designing the PCB, so there might not be a problem, but I am being cautious by providing multiple options for adding additional components if necessary.

Will the output voltage vary from about 0.1V to 0.4V? If so, it's a fairly low voltage.

Yes, I agree that reducing noise directly is the best option compared to filtering. This is something I aim to do, but there could be factors out of my control, such as environmental noise like RF, which I would like to filter. This might require some type of shielding.

Previously, I have been using the following types of wires on my sensor boards, which will be replaced by a ribbon cable. Each signal and power line will have an associated ground.

Wire Link

My sensors are directly connected to the PCB, which reduces impedance, and the connectors are kept close to the ADC as well. However, my concern is that I will be polling the ADC from my microcontroller’s I2C, which I believe could introduce some noise.

Would it be a good idea to place ferrite beads on all signals and ADC channels, as well as at the entry point connector on the PCB?
If only we knew what those sensors were, their output voltage, impedance and frequency response. . . . .
 

Ian0

Joined Aug 7, 2020
13,112

Ian0

Joined Aug 7, 2020
13,112
What I aim to do is sample at the max i2c speed for that ADC, which i think is about 300-400 Khz
I think that would be overkill.
Considering that the sensor takes 80 seconds to respond, sampling once a second would still allow you to gain an extra 6 bits of resolution without missing anything.
 

Thread Starter

DJ_AA

Joined Aug 6, 2021
490
I think that would be overkill.
Considering that the sensor takes 80 seconds to respond, sampling once a second would still allow you to gain an extra 6 bits of resolution without missing anything.
The sensor module takes 80 seconds to respond but there could be a possibility the voltage could fluctuate due to noise. That being the reason to take a sample to calculate an mean or median value
 

Ian0

Joined Aug 7, 2020
13,112
The sensor module takes 80 seconds to respond but there could be a possibility the voltage could fluctuate due to noise. That being the reason to take a sample to calculate an mean or median value
which is exactly what would happen with a 1Hz anti-aliasing filter and sampling at 2 samples per second.
 

Thread Starter

DJ_AA

Joined Aug 6, 2021
490
Thanks,

In addition to this, all my connector points, I will be adding a ferret bead for VCC and signals; if these are not needed, then I can always replace it with a 0 ohm resistor.
 

MrChips

Joined Oct 2, 2009
34,698
Another option is to use a 24-bit delta-sigma ADC and digitize the sensor signal directly without using any analog circuitry.
All your filtering and processing can be done digitally.
 
Top