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.

ads1248 RTD 4wire accuracy

Other Parts Discussed in Thread: ADS1248

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.

    5047.ADS1x48EVM.zip

    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

  • Start pin is Low.

    Schema is 8561.Mj.temp.pdf- I send it  oct.10.2013.

    I attached pictures  data_in ws clock while sending

                       SetCS (0);
                             Send_SSP0 (0x40);
                             Send_SSP0 (0);
                             Send_SSP0 (0x01);// set inputs +Ain0 - Ain1

                      SetCS (1);  

    data ws clock


                         

    I have only 2 trace scope.

  • 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

  • Hello,

    I put START pin HI and ist OK, many thanks for help!