Adventures with an Amazon ADS1115

Background

I’m trying to integrate an ORP sensor into my hot tub project. Rather than measuring chlorine concentration directly, “Oxidation Reduction Potential” is basically a measure of how good your water currently is at killing bacteria. The sensor is basically two dissimilar metals that form a galvanic cell with the water, the voltage of which signifies how oxidizing (or reducing) the water is. But the controller for my tub is built around a Raspberry Pi, which has no analog input hardware. Therefore, I need an ADC.

ADCs

My usual MO for starting a project like this is to go as mainstream as possible and get whatever is most available on Amazon or Sparkfun or Adafruit and start there, since their breakout circuits are usually quite applicable to whatever problem. No surprises, Adafruit made a breakout for the ADS1115 4-channel, single ended or differential input ADC with integrated PGA, and there seem to be plenty of clones on Amazon. Unfortunately I went to Amazon first and didn’t realize they were clones of an Adafruit board before I bought the cheapest listing I could find.

ADCs are often quite unkind to their inputs, so usually you need to put some circuitry between your signal and the ADC: filtering, amplification (or at least buffering), that sort of thing. In this case, I’m lazy and the ADC has a built in programmable gain amplifier, which kinda sorta looks like signal conditioning if you squint real hard, so I figured why not just try it.

The sensor itself is relatively high impedance (100s of kOhms) and my hot tub should produce a voltage of like 0.6V tops, but the ADC is rated at multiple megaohms of input impedance, both differential and common mode, so it seemed to me like it should be good enough. This was not the case, but it got more interesting.

Input Impedance

The sensor seems to read fine with my preferred multimeter, a U1252A – for instance, it would read around 200mV in tap water, which is about right according to the internet. However whenever I tried to read it with the ADC, that would suddenly become 20 or 50mV, backed up by using the multimeter in parallel to spot check. Interestingly, when I used my Fluke 87V to compare, it was somewhere in the middle – not as high as 200mV but not clamped to 20mV either. Clearly each different device was loading the sensor with substantially different input impedance.

I checked the U1252A’s input impedance on the mV range using the Fluke and it was about 15Mohm. Typically multimeters are about 10Mohm input, but maybe this meter has higher impedance for the lower level input range? Doing the reverse, the Fluke came in a bit below 10Mohm, so indeed it would be loading the sensor a bit more.

What’s interesting is that using the DC resistance range on either meter, the ADC input measured a differential input impedance of around 5Mohm. Given my experience with the meters, I don’t think that’s good enough, and it’s below the datasheet spec for the various sample rates and PGA gains I’ve been using, but it doesn’t explain clamping the sensor to near-zero output.

Since there could be something else going on, I wanted to see if the input impedance was the same att different input voltages. I hooked the input up to my favorite power supply that’s decently accurate through the multimeter on the uA range. At 600mV input, it measured 2.4uA, and at 1.2V input it measured 2.55uA. That works out to be an input impedance of more like 450kOhms, and would totally explain the sensor getting dragged down by the ADC.

But why?

That’s what I’m not sure about. It’s very possible I’m doing something dumb or didn’t read the datasheet closely enough, but I also suspect the problem may lie with my choice of vendor.

Since I’m suspicious my Amazon Special knockoff might be using a counterfeit ADC, I ordered the real deal from Adafruit to A/B compare. I guess in a week we’ll see if I’m just missing something, or if I found a suspect part!

Update 1

It’s not counterfeit. I replaced my cheap amazon breakout with an Adafruit one in the same test setup and got the same results. I did notice some errors with my measurements, namely that I should have been using DC+AC mode on the DMM for measuring the current. But the gist of everything is still right, and I measure as bad as 85kOhms load impedance when sampling a 0.51V input measured accurately. I added a post over on the TI E2E forum for help.

my ADC input impedance test setup with a multimeter measuring 2.67uA into the ADC at 1.2V
2.67uA into the ADC at 1.2V works out to 450kOhm
Multimeter measuring the probe directly at 340mV
Multimeter measuring the probe directly at 340mV. It’s just been plugged in and hasn’t settled yet to ~200mV, though that means the meter’s input impedance definitely loads it still.

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *