I built the following circuit featuring the HI7190, 24-bit ADC, straight off the datasheet:
Since there is no available negative supply I built one using ICL7660, as AN9601 recommends. For VRef, as a test, I used a TL431. The actual measured VRef is 2.495V.
If I short Vin pins, the ADC gives a reading of around -10 to +10, which is to be expected because of the low quality reference and circuit construction. (This is still an impressive 6uVpp noise floor).
If I put a slightly discharged AAA battery, about 1.4V, between the input pins, I get a reading of about 3 500 000.
- If i turn the battery around, the reading is about -3 500 000.
In both cases, Vinhi and Vinlo are floating. The battery terminals are connected to Vinhi and Vinlo and nothing else.
The problem I have is that the ADC reading does not match the actual values between Vinhi and Vinlo. The ADC has a voltage reference of (nominal) 2.5V. The readings of 3,500,000 would mean: (3500000 * 2 * 2.5)/(2^24) = 1.0431V. This is far from the 1.4V that are at the inputs. It's about 1.345x lower.
I have noticed this error is constant across all the range. I tried several voltages at the input and they are all off by the same factor.
I have measured the reference voltage, supply voltages, ground. It's all OK. I have even replaced the IC and the problem persists. The ADC has calibration registers. They are a all "auto calibrated" at power up. I have also overriden them by overwriting them like the datasheet suggests, but nothing seems to change.
Is there something I'm missing?