Quantcast
Channel: Data converters
Viewing all articles
Browse latest Browse all 90965

Forum Post: RE: ADS1147 misbehavior at random condition

$
0
0

Hi,
please find my comment below in bold.

Without burn-out current enabled,
Most of the boards are working. But, In 7 of 50 AI boards, ADC count is fluctuating from 0 to 0x7FFF for Open circuit and Short Circuit conditions. Why?

With burn-out current of 2uA enabled, IDAC1 =1mA and IDAC2=1mA
In All 50 boards, For Open circuit ADC Count is reading as 0x7FFF. Short circuit count is 0x0013. But, Normal values are increased by some amount.

What will be the current flowing through Analog Input Sensor?
What will be the reference voltage across Resistor R77?
With burn-out current always enabled, How can we get normal values properly? Any formula to apply?

As I understand from the schematic and the code you are either measuring a
- Pt100 (IDAC=1mA, R_REF=1k, G=8) or a
- PTC (IDAC=250uA, R_REF=3.92k, G=1).
Do you want to measure a 2- or 3-wire Pt100?
It is 3-wire Pt100/PTC
If I calculated correct, you only measure temperatures up to 60°C with the Pt100. Is that correct?
No, For PT100 range is from -50°C to 250°C, For PTC range is from 10Ohms to 6500Ohms
For PT100, Reference R=1K(R77) , I = 1mA and Vref = 2V, valid sensor R = 80Ohms to 180Ohms, PGA = 8
For PTC, Reference R=3.92K(R64) , I = 250uA and Vref = 1.96V, valid sensor R = 10Ohms to 6500Ohms, PGA = 1
Regarding the code. It looks correct, only one comment in there should be changed:
regmap.mux1 = 0x20; // Ref Vol always on,REF0 input pair selected (default)
MUX1 = 0x20 actually selects the external reference on REFP0, REFN0 which is correct in your case. Just the comment should be updated accordingly.
You should not overwrite the factory gain calibration value (FSC register) unless you run a system gain calibration. Each gain is calibrated in our manufacturing. So whenever you change the gain setting the device loads the factory calibration value for this gain into the FSC register. If you 'blindly' overwrite the FSC register with a value you will lose this trimming.
FSC with 0, ADC count is always 0
The schematic looks more or less okay.
We might want to change the RC input filters a little bit.
First of all the cutoff frequency is pretty high. So in case your measurement results are pretty noisy we should decrease the cutoff frequency by increasing R61, R62, C5 and R63, C34. The resistors should not be larger than 1k though.
However when increasing R61, this will cause an additional voltage drop when running the 1mA through it. In order to make it work then you should run the excitation current around the filter and inject it at test point PT4. You could use AIN3 as the current output then and route it to PT4.
You might want to consider adding some common-mode filter; means adding a cap from RTD_IN1 to AVSS and one from RTD_IN2 to AVSS. Those caps should be at least 10x smaller than C5.
We could think about adding a differential and common-mode filter on the REFP0/REFN0 input as well. I am not sure if this is really required on the 16bit level though.
For best noise performance it is good practice to match the input and reference input filters. We have a nice application note talking about this: http://www.ti.com/litv/pdf/sbaa201
Unfortunately it will not be really easy to match the filters as you can select between different R_REF (R77 and R64) values in your case.
For the 16bit resolution level it might not matter, but you could in principle increase R_REF (R77 and R64) by a factor of 2x and then also increase the gain by 2x. That way you would get a little bit better input referred noise. But you would probably only notice the difference when using the 24bit version (ADS1247).
Finally coming to your actual question about open sensor detection:-).
When the Pt100 fails open, the excitation current source will pull AIN1 to AVDD. AIN0 and REFP0 should be pulled to AVSS in principle. So that means your reference voltage is 0V. In that case the ADS1147 will unfortunately not provide any deterministic result (although you might think it should output a full scale reading).

As you realized you should not turn the burnout current sources on when performing a measurement. They should only be activated when running a diagnosis. Otherwise you will disturb your measurement.
Following are two ideas how you could detect an open Pt100. I did not try them myself yet, so I cannot guarantee that they work. You will not be able to detect an open sensor while measuring the Pt100 with them. You will have to add an additional diagnosis measurement.
Idea #1:
You could turn the excitation current on AIN1 off, and instead turn the excitation current on on AIN0. Then turn on the burnout current sources as well. The excitation current on AIN0 will make sure you get a valid reference voltage across R_REF (=R77). If there is an open sensor the burnout current source should pull AIN1 to AVDD and you should be able to read a proper full scale value. If the sensor is okay, you should read a value close to zero. (I am not exactly sure what the current sink will do to the negative input.)
Observation: Since It is 3-wire, In PT100 case, It will generate 1V reference Voltage, Not 0V. With this we measure only upto voltage across Anlog Input is less than 1V
Idea #2:
You could configure REFP0 as a GPIO input in between measurements and check if the reference voltage is above or below the GPIO threshold. For this to work you would however have to increase the R_REF values (and/or the excitation current when running the diagnosis) so that you get >3.5V (= 0.7 x 5V)
A low reading on the GPIO will tell you you have an open sensor. A high reading will tell you everything is okay.
Observation: We didn't check this

Regards,
Saravanan.K


Viewing all articles
Browse latest Browse all 90965

Trending Articles