I’ve been very excited to experiment with the ADS1115 based 4-20mA current loop receiver Mini Module (PR33-10), however I’ve found what appears to be a flaw regarding noise introduced to the measurement from the on-board power supplies.
When a pair of channels (1&2 or 3&4) collectively draw around 20mA, the reading becomes unstable for that pair of channels. For a short range of current draw around that point, there is a 3% noise added to the measurement—a magnitude of almost 0.5mA.
I spent a few days debugging the board, and it appears to be an issue with the power supply. There’s significant noise on the 16V output, and a peak right when the switching frequency is somewhere around 515KHz. (The first harmonic would be suspiciously similar to the 1MHz internal clock of the ADS1115—maybe causing a beat frequency? But I have no proof here.)
I was able to make some modifications to my board and get significantly better results, reducing the noise event at this critical current level down to 0.016mA or 0.08% noise.
I made the following modifications to my board:
- add a 10µF ceramic capacitor in parallel with the 100nF “CA1” power supply input capacitor (for channels 1&2)
- add a 1µF ceramic capacitor in parallel with each of the 5Ω current shunt resistors to additionally filter the signal before being amplified but the INA196.
I came to the conclusion it was power supply related because it is related to the sum of current draw across a pair of channels. Studying the datasheet for the TPS61040, it seems like a larger input capacitor (C1) is needed, and a smaller feed-forward (measured 100nF, expected to be 5pF) capacitor should be used, but I didn’t experiment with that.
I first noticed the issue with two industrial pressure sensors attached to channels 1 & 2. I’d have them reach full-scale, then let the pressure slowly decrease—and found that noise was induced on both channels reliably at the same time at some point in the decay.
The easiest way to reproduce the issue is simply to get a potentiometer and connect it to channel 1. Hook up another sensor (or potentiometer) and leave it at ~4ma draw on channel 2. Adjust the first potentiometer until approximately 20ma of current is drawn total
Plot the output from the ADS1115 at a high resolution and with a regular. In my plotting configuration, I am sampling 2x per second. I have configured the ADS1115 for single-ended measurements, and am using the 128 SPS sample rate to take each reading.
Watch the plot, and adjust the potentiometer up or down until the instability is located.
Unfortunately, this particular current limit is frustrating, because it’s right in the middle of the reference range.
In my testing I found that:
- The waveform on the SW node of the power supply seemed to change at this 20mA boundary, the transition seems to cause the noise.
- Since the maximum bandwidth that can be digitized by the ADC is on the order of 400Hz, a simple RC filter could go a long way in noise rejection into the INA196 current sense chip, and the ADC.
- There is something like 1.5Vp-p noise on the 16V supply output, which can be reduced to <300mV with a larger power supply input capacitor
After image (linked, because new users can only include 3 images in post)
I’d be happy to discuss the issue more, or provide additional data regarding my investigation. I hope you consider enhancing a future revision of this board to be more immune to noise for particularly sensitive measurements.
16V Before:
16V After: