Post Go back to editing

AD7689 unipolar differential pair problem

Hello, everyone. I am trying to measure thermistor voltage to check the temperature.

In this case, I have designed a circuit like the above one, and I connected 2 wires to AD7689's IN0 and IN1.

The VTH(+) is connected with IN0 and VTH(-) is connected with IN1.

As I wanted to measure the voltage between the thermistor, I set AD7689 operates as unipolar differential pair.

The set value is INCCx = 5, INx = 0, SEQ = 0,  REFx=0. And I think it is correct but the measured voltage was totally wrong. 

E.g, When I put the thermistor on the hot place and checked its voltage by using a multimeter, its value was 0.7V but ADC value was 22263 (0.849V)

Moreover, when I have put the thermistor in the cold place, the ADC value was still 22263 although the voltage was changed to 1.3V.

I think I did something wrong when I set the AD7689 but I can't understand what I did wrongly.

So please help me!!!

  • JK,

    The issue with your circuit is the voltage at the odd channel input (IN1) exceeds the allowable 0V +/- 0.1V for unipolar operation.   

    Thus for your current implementation to be able to read the correct value you are likely going to have to reference both IN0 and IN1 to COM (ground referenced) in unipolar mode and then execute conversions to capture both values sequentially and then do the subtraction yourself.  Fortunately the thermistor is not going to change temperature quickly so you'll only loose the absolute rejection of any HF noise at the input which is common mode in nature. 

    The alternative for you here is to modify the configuration word to use the bipolar differential mode selection (INCC = 0 or 1) .  The issue here is that you will need to keep IN1 within +/-100mV of VREF/2.   So the safest approach schematically is to create an effective bridge by using a fixed divider from ref to ground with 2x 10K resistors in series, with the center tap sensed by IN1 and then sense the voltage between the thermistor and the fixed 10K.  By implementing this circuit you could use the differential nature to sense the +/-2.2V range of the 10k thermistor accurately and then apply your linearization algorithm.