I am debugging a temperature controller using a AD7793 in a configuration similar to figure 21 in https://www.analog.com/media/en/technical-documentation/data-sheets/AD7792_7793.pdf
What could cause the AD7793 to give a 0xFFFFFF (ERR bit set) reading on channel 3 when the excitation currents are disabled (and a 0V input is verified with oscilloscope)?
The same thing is causing AIN1(-) - AIN1(-) (external reference) readings to vary around 0x800000 (bipolar) by at least +/- 0x60, instead of being fixed at 0x800000 as a functioning controller is getting.
Normal AIN1(+) - AIN1(-) (external reference) produce about half the expected result with 1mA excitation currents and with excitation currents at 210uA the result is even worse (1mA reading divided by 4.66).
The AIN1(–) – AIN1(–) channel is useful for debugging such as to check the reference voltage or power supply when you get a very high noise value when you selected this channel. It is not intended for noise test as the noise performance was tested using an external short with a bias voltage and the offset error was specified following a calibration. This channel is used to help with understanding where the source of errors coming from. So like I mentioned above if you are measuring a very high noise and not meeting the expected noise. You can used this internal short in which the analog inputs are disconnected and the ADC are just looking at the reference and power supply. If you get the expected noise after doing this, then the errors are coming from the input. If you are still seeing errors then it could be down to the power supply and reference. So, this is very helpful in debugging purposes.
May I know what is your selected reference voltage while doing the test? In the circuit, your external reference voltage is driven by the reference resistor through the excitation current. If external reference is selected and excitation current is off then you have an invalid reference and will clamp your data to all 0s or all 1s.
May I know if what is your reference resistor value? Please take note that since it is a reference resistor this should be a precision resistor with at least 0.1% accuracy and +/-10ppm/'c tempco.
Please take note also the output compliance of the excitation current. The output compliance is AVDD − 0.65 V max for 10 μA or 210 μA currents selected. And output compliance is AVDD − 1.1 V max, GND-30mV min for 1 mA currents selected.
We have a reference circuit for 3 wire RTD which includes some calculations in order to avoid violating the output compliance. This uses AD7124 that you may also want to consider using as it has the same building blocks as AD7793 with more advance features. You can apply the same principle in your application.
It's a 1 kOhm 0.02% ±10ppm/°C and I get 2V (as expected) over it with 1mA currents.This controller already exist in thousands of units spread around the world and my primary objective is to provide them with a software that gets as good temperature readings as possible. A secondary objective might be to take notes of design mistakes for when the next generation of controllers would be designed but right now I want to make this hardware configuration work as well as possible.
Yes I wouldn't started to take measurements of neither AIN1(-) - AIN1(-) nor AIN3(+) - AIN3(-) if not to debug a strange error.When measuring AIN1(-)-AIN1(-), I used the external reference at 2V driven by the 1mA excitation currents. Bi-polar, gain 1, buffered, no bias, burnouts nor boost.
When measuring AIN3(+)-AIN3(-), I used the internal reference. Unipolar, gain 1, buffered, no bias, burnouts nor boost.AVdd is 5V.