Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

ADS1247 with 3-wire Pt100: Calculating Temperature

$
0
0

First, I'm still fairly new to the world of ADC's.

BACKGROUND:

I have an ADS1247 I'm using with a 3-wire Pt100; following the same setup as the numerous examples titled "Hardware Compensated...". I'm using an Arduino Uno with the 3 SPI connections and CS of the ads1247 hooked up to a digital pin.

Connections i've made on the ADS are as follows:

AVDD--> +5V          AVSS-->0V          DVDD--> +5V            AVSS-->0V            START--> +5V        RESET--> +5V      VREFOUT--> 6.8 uF to VREFCOM--> 0V

Pt100 (2 red wires and one white, not that it matters):   red1-->AIN0    red2-->110 ohm resistor (Rcomp) which is then connected to AIN1      white-->REFP0 with an 820 ohm resistor (Rbias) connecting to REFN0

Hopefully someone has bothered to keep on reading. I've basically just copied the example but I'm having difficulty getting and sensible temp readings. Where i think the likely problem is in handling the adc output. My gain is 128 and 20sps so the formula I'm using to get Rrtd is:

Rrtd = [ (ADCoutput * 4 * Rbias) / (Gain * 2^N) ] + Rcomp              where:   N=24???

Below are my Register settings:

  CS_LOW;
  SPI.transfer(RESET); //Reset command
  delay(10);  //Allow time for device to come back
  //Stop continuous data conversion
  SPI.transfer(SDATAC);
  //Set MUX1 Register (02h) Write 60h - Select internal reference always on,
  //internal ref connected to REF0 pins.
  SPI.transfer(WRITE|MULTIPLEX_1);
  SPI.transfer(0x00);
  SPI.transfer(0x60);
  //Set MUX0 Register (00h) Write 01h
  SPI.transfer(WRITE|MULTIPLEX_0);
  SPI.transfer(0x00);
  SPI.transfer(0x01);
  //Set IDAC1 Register (0Bh) Write 01h - Output reference current on ANIN0,1
  SPI.transfer(WRITE|IDAC_1);
  SPI.transfer(0x00);
  SPI.transfer(0x01);
  //Set IDAC0 Register (0Ah) Write 07h - Select 1.5mA reference current for RTD
  SPI.transfer(WRITE|IDAC_0);
  SPI.transfer(0x00);
  SPI.transfer(0x07);
  //Set SYS0 Register (03h) Write 72h - PGA:128, Sample at 20sps
  SPI.transfer(WRITE|SYS_CONTROL);
  SPI.transfer(0x00);
  SPI.transfer(0x72);
  CS_HIGH;

In the loop portion of my code all I'm currently doing is calling RDATA and then sending 3 NOP in order to retrieve data in the conversion buffer. I'd greatly appreciate any input into what may be the problem. Again I believe the problem lay in how I'm handling the output data but I can't be 100% sure.

Thank You


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>