Other Parts Discussed in Thread: ADS1147
Hello,
I've been working to interface one of your ADS1147 devices with an Arduino in order to read a 2-wire Pt1000 RTD to 0.1C accuracy over a range of 0-40C.
Having read a few of your datasheets and application notes, I've set my circuit up as shown below:
I initially perform an opcode-based reset, and then wait 2msec before loading my registers.
My registers are set as follows, with a 0.1% 20K5 resistor as Rbias so I can use a low Idac current to minimise self-heating.
writeRegister(REG_MUX0, B00000001); //Burnout source off, AIN0 +ve input, AIN1 -ve input
writeRegister(REG_VBIAS, B00000000); //Disable VBIAS
writeRegister(REG_MUX1, B00100000); //Internal Oscillator, Internal Reference Always On, REF0 Pair Selected, MUXCAL Measure Vref
writeRegister(REG_SYS0, B01000001); //PGA Gain 16, 10SPS
writeRegister(REG_IDAC0, B00000010); //DOUT/!DRDY only DOUT, 100uA Excitation DAC
writeRegister(REG_IDAC1, B00011100); //IDAC1 on AIN1, IDAC2 off
Following these writes, I perform a SELFOCAL and wait the appropriate time before using an interrupt-based data collection routine watching for DRDY.
I then collect the 16 bits into a signed int, ready for processing.
So...this is a question which I think comes up a lot so please forgive me if you're already bored of answering it - why are the values I'm getting out negative?
Vbias = Idac * Rbias = 0.0001*20500 = 2.05V
My differential is set up such that the Idac output pin (AIN0) is subtracting AIN1, which is in turn connected to REFP0.
Surely RTD values should be positive? They also seem to become more negative when I touch the sensor (i.e. starting at -28260 decimal and moving down to -29100 or so).
Please reassure me that this is appropriate behaviour and that my current setup is as it should be according to your app notes? If so, I have two smaller follow-on questions which I hope would also be of use to other forum users looking at your ADS114X and ADS124X series.
Many thanks!
-Rob Learney