hello,
I use ADS1248 ro read 4 RTD to measure temp. (use 4 wire) see my app.2235.ADS1248.pdf
My problem is fluctuating 12 bits(LSB)!
Settings: PGA = 8
5 SPS
current 1mA
When I try ro read temp Diode inside ADS1248 flucuates 8 bits!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
hello,
I use ADS1248 ro read 4 RTD to measure temp. (use 4 wire) see my app.2235.ADS1248.pdf
My problem is fluctuating 12 bits(LSB)!
Settings: PGA = 8
5 SPS
current 1mA
When I try ro read temp Diode inside ADS1248 flucuates 8 bits!
Hi Zlatko,
Good PCB layout is very critical for achieving a high level of performance. Also, we have seen a number of problems with inductance on the analog supply. I would remove the inductance L1 and L2, at least until you have minimized the noise by other means.
I'm also very confused as to your IDAC routing. You have two current routes that end up at the same reference resistor. If both current paths operate simultaneously you will not get a ratiometric measurement. I'm not clear about your symbol references either. It would appear that you have many signals connecting at the same point. Can you explain further on how things are connected and operating? Can you send me your PCB layout?
Best regards,
Bob B
In att. is my PCB.2727.TSP303n.pdf
I dont use ratiometric measurements. I use internal reference.
I try without L1 and L2 (use 0 ohm resistor instead) but no difference.
In my system i use 6 pcs ADS1248 to measure 24 PT100 sensors, and I must measure all 24 in 1 second (and every sec.), but now I test it only 4 PT100 .
I use ARM LPC1768 , and I think that I have no problem with code.
I load setting and read results but results show me that my useful resolution is 1 degre celsius (I need 0.1)
Measur. range is -50 to 60 degre Celsius.
thanks
Hi Zlatko,
There are a number of issues. First of all the schematic and layout do not match. Also the layout is not good enough for 24 bit performance. There are lots of traces on the input that will act like an antenna and pick up all sorts of RFI/EMI. The PCB ground should use a ground plane area under the traces for lowest noise. Please take a look at the layout information located here:
http://e2e.ti.com/support/data_converters/precision_data_converters/w/design_notes/1392.aspx
Also, to reduce the effects of noise the measurement should be ratiometric and should be done at the lower data rates. Take a look at the following application note:
http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sbaa201&fileType=pdf
Best regards,
Bob B
I make some changes: Current source1 is used for PT100 1 an2, and current source2 is used for PT100- 3 and 4
is it better?
Is it possible to get some good PCB design for ADS1248?(working one)8561.Mj_temp2.pdf
Hi Zlatko,
As I've stated, I have not tried to use the device myself in the manner you are using although in theory it should work for 4 wire RTDs. For 3-wire RTDs you need to cancel the effect of the lead resistance of both input leads. This requires that the current must flow through the two input leads of one RTD. So the answer is no, it will not work for 3-wire RTDs.
I've attached the schematicand layout for the ADS1248EVM. Keep in mind that the EVM can operate from 5V analog or +/-2.5V analog supplies.
Best regards,
Bob B
Hello,
I have new problem.
I set mux input , start meas., stop meass., read measurement ad its ok.
But when I change inputs (I have 4 PT100 connected) , it does not working, I still measure 1 input!?(+Ain0 , -Ain1)
Part of code:
Measure:
LPC_GPIO0->FIOCLR = 1<<4;// start = 0
delay();
while (( LPC_GPIO1->FIOPIN2 & 0x20) > 0); //wait end of conversion
//read measuremenst for input ,defined previus entrance
SetCS (0); // CS = 0 for reading data ok
Send_SSP0 (0x12);// RDATA command
measure[0] = Send_SSP0 (0xFF);//nop
measure[1] = Send_SSP0 (0xFF);
measure[2] = Send_SSP0 (0xFF);
SetCS (1); // CS = 1
// set MUX for NEXT reading!!! NOT working ?????
input++; // pointer
if (input > 4) input = 1;
switch (input) {
case 1:// measure 1 PT100
{
SetCS (0); // write to reg
Send_SSP0 (0x42); //write to adress 2 MUX1
Send_SSP0 (0); // 1 data
Send_SSP0 (0x20);//REF0 input pair selected ratiometric
SetCS (1);
// delay
SetCS (0); // write to reg 0 MUX0
Send_SSP0 (0x40);
Send_SSP0 (0);
Send_SSP0 (0x01);//define inputs +Ain0 , -Ain1
SetCS (1);
}
case 2:// measure 2 PT100
{
SetCS (0); //
Send_SSP0 (0x42);//write to adress = 2
Send_SSP0 (0);
Send_SSP0 (0x28);//REF1 input pair selected ratiometric
SetCS (1);
// delay
SetCS (0); // write to adress = 0
Send_SSP0 (0x40);
Send_SSP0 (0);
Send_SSP0 (0x13);//define inputs +Ain2 - Ain3
SetCS (1);
}
case 3:// measure 3 PT100
{
SetCS (0); //
Send_SSP0 (0x42);
Send_SSP0 (0);
Send_SSP0 (0x20);//REF0 input pair selected ratiometric
SetCS (1);
// delay
SetCS (0); // ser reg 0
Send_SSP0 (0x40);
Send_SSP0 (0);
Send_SSP0 (0x25);//define inputs +Ain4 - Ain5
SetCS (1);
}
case 4:// measure 4 PT100
{
SetCS (0); //
Send_SSP0 (0x42);
Send_SSP0 (0);
Send_SSP0 (0x28);//REF1 input pair selected ratiometric
SetCS (1);
// delay
SetCS (0); // ser reg 0
Send_SSP0 (0x40);
Send_SSP0 (0);
Send_SSP0 (0x37);//define inputs +Ain6 - Ain7
SetCS (1);
}
---------------------------------------------------------------
setup:
Init_spi_0 ();
// delay
// init registers
SetCS (0); // ser reg 2
Send_SSP0 (0x42);
Send_SSP0 (0);
Send_SSP0 (0x20);// ratiometric
SetCS (1);
// delay
SetCS (0); // set reg a i b
Send_SSP0 (0x4A);
Send_SSP0 (1);
Send_SSP0 (0x0E);//1mA current
Send_SSP0 (0x89);//Output IE1,2
SetCS (1);
// delay
SetCS (0); // ser reg 0
Send_SSP0 (0x40);
Send_SSP0 (0);
Send_SSP0 (0x01);//define inputs OK working!!
SetCS (1);
// delay
SetCS (0); // ser reg 3
Send_SSP0 (0x43);
Send_SSP0 (0);
Send_SSP0 (0x33);// pga = 8 40 sps
SetCS (1);
// delay
//**************************************************
SetCS (0); // calibration
Send_SSP0 (0x60);
SetCS (1);
delay (0xFFFFFF);// delay
while (( LPC_GPIO1->FIOPIN2 & 0x20) > 0); //end of call
// delay
SetCS (0); // calibration
Send_SSP0 (0x61);
SetCS (1);
delay (0xFFFFFF);// delay
while (( LPC_GPIO1->FIOPIN2 & 0x20) > 0); //end call
// delay
SetCS (0); // calibration
Send_SSP0 (0x62);
SetCS (1);
delay (0xFFFFFF);// delay
while (( LPC_GPIO1->FIOPIN2 & 0x20) > 0); //end
// delay
// init registers again
SetCS (0); // ser reg 2
Send_SSP0 (0x42);
Send_SSP0 (0);
Send_SSP0 (0x20);// ratiometric
.......
//**************************
Hi Zlatko,
Happy New Year! Can you send me your most recent schematic? Is the START pin high when writing the registers? Can you send me some pictures of the SPI communication when changing the MUX?
Thanks,
Bob B
Hi Zlatko,
Looking at your schematic I see that there is the potential that the digital pins can float. You probably should add weak pullup or pulldown resistors (100k) to the digital signals that connect to tri-state buffers. Also, for the ADS1248 device to convert and to read and write registers the START pin must be in the logic high state. The START pin controls the power down status of the device. Please read the section 'SPI Communication During Sleep Mode' on page 37 of the datasheet.
Best regards,
Bob B