Hello,
I'm new to forum. Please guide me if I'm posting to the wrong area. Thanks.
We're using the ADS1248 in a temperature measurement circuit. I've included a snippet of the schematic at bottom of this post.
The out microcontroller periodically connects the IDAC1 to AIN0 - AIN3. IDAC2 is normally connected to AIN7. The temperature sensors can be connected between THERM1 - THERM4 and the common node THERM_RTN (see our schematic below). We've found that if we ever switch the multiplexor with IDAC1 and IDAC2 on (100uA) to an open circuit, then subsequent measurements will be inaccurate for a significant amount of time (at least 28ms). In order to avoid this problem we're changing microcontroller firmware to periodically (slower period then normal sensor measurements) check for a open-circuit sensor channel. When this is detected we avoid connecting the IDAC1 and IDAC2 sources to this sensor channel during normal sensor measurement polling. We thought that the long transient affect of connecting to an open-circuit sensor may be related to the IDAC current sources. If so, we guessed we might be able to use the Burnout Detection current source pair for checking for open circuit. In this way we thought we may be able to check for open-circuits more often and fits better with our normal sensor measurement polling sequence. However, I'm unable to the get the Burnout Detection current sources to actually source any current.
I have these questions:
1) Do you have any guidance or suggestions for how soon after switching IDAC1 and IDAC2 current sources to an open-circuit and then to a working-sensor channel before the working sensor channel ADC measurement can be made accurately? That is, what is the settling time of IDAC1/2 after switching from an open-circuit to a non-open-circuit?
Initialization writes to these registers:
MUX0 <- 0x07 // Negative Input channel connected to AIN7
SYS0 <- 0x09 // PGA = 1, 2000 Samples per second
MUX1 <- 0x20 // Mux 1: CLKSTAT: 0 , VREFCON1:0: 01, REFSELT1:0: 0, MUXCAL2:0: 0
IDAC0 <- 0x02 // IMAG2:0 = 2 (100uA for IDAC supplies)
Each time we switch channels we write these registers changes (first IDAC1, then immediately MUX0):
IDAC1 <- 0x07 (THERM1), 0x17 (THERM2), 0x27 (THERM3), 0x37 (THERM4)
MUX0 <- 0x07 (THERM1), 0x0F (THERM2), 0x17(THERM3), 0x27 (THERM4)
2) Why can't I get the Burnout Detection current sources to work?
In my test code these registers are written:
Initialization writes to these registers:
MUX0 <- 0x07 // Negative Input channel connected to AIN7
SYS0 <- 0x09 // PGA = 1, 2000 Samples per second
MUX1 <- 0x20 // Mux 1: CLKSTAT: 0 , VREFCON1:0: 01, REFSELT1:0: 0, MUXCAL2:0: 0
IDAC0 <- 0x02 // IMAG2:0 = 2 (100uA for IDAC supplies)
Then this register is written:
IDAC1 <- 0xFF // Disconnect IDAC1 and IDAC2
MUX0 <- 0xCF // Burnout source at 10uA, and connect positive input AIN1, and negative input AIN7. I have 15k across THERM2 and THERM_RTN in our schematic below.
Then the microcontroller hangs in an infinite loop so I can make a dc measurement across a 15k ohm sensor-emulation resistance. I'm reading 0V across 15k. I've tried setting Burnout Current to 10uA, and 2uA and get the same 0V results.
All other registers are unwritten and therefore should have default values.
THANKS!