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.

ADS1220 采集到的温度数据不正常

Other Parts Discussed in Thread: ADS1220

CJCcode = calc_CJC(mmc);
// Configure ADS1220 for first Thermocouple1 measurements
Setup_ADS1220 (ADS1220_MUX_AIN3_AIN2, ADS1220_OP_MODE_NORMAL, //ADS1220_OP_MODE_TURBO Äںˡ¤¼ÓËÙ
ADS1220_CONVERSION_SINGLE_SHOT, ADS1220_DATA_RATE_20SPS, ADS1220_GAIN_32, ADS1220_USE_PGA,
ADS1220_IDAC1_AIN2, ADS1220_IDAC2_AIN3, ADS1220_IDAC_CURRENT_250_UA, ADS1220_VREF_EXT_REF0_PINS, ADS1220_TEMP_SENSOR_OFF);
delay_temp(5);
ReadConversionData = 0;
ADS1220_Start ();
while (!ReadConversionData);
ADS1220_Get_TC_Conversion_Data_Calibrated (&ADS1220TCdata);
// Configure ADS1220 for second chopped Thermocouple1 measurements
Setup_ADS1220 (ADS1220_MUX_AIN2_AIN3, ADS1220_OP_MODE_NORMAL,
ADS1220_CONVERSION_SINGLE_SHOT, ADS1220_DATA_RATE_20SPS, ADS1220_GAIN_32, ADS1220_USE_PGA,
ADS1220_IDAC1_AIN2, ADS1220_IDAC2_AIN3, ADS1220_IDAC_CURRENT_250_UA, ADS1220_VREF_EXT_REF0_PINS, ADS1220_TEMP_SENSOR_OFF);
TCtemperature2 = ADS1220TCdata/2;
delay_temp(5); //
ReadConversionData = 0;
ADS1220_Start ();
while (!ReadConversionData);
ADS1220_Get_TC_Conversion_Data_Calibrated (&ADS1220TCdata);

ADS1220TCdata = ADS1220TCdata/2;
TCtemperature2 -= ADS1220TCdata;
TCtemperature2 += CJCcode; //CJC
TCtemperature2 = interpolateTCTemperatureValue (TCtemperature2);

这是读取ads1220的代码,现在将热电偶放在沸水中温度只上升十几度

  • Hello user4590050,

    It would appear that you are not getting the expected temperature values from your thermocouple measurement.  You are conducting a number of calculations, but I see no actual data between each step.  Can you send me some data for comparison?

    I think it would be best if you simplified your approach and instead of adding all the calculations and chopping, verify by voltage if your TC is responding with a correct voltage measurement.  I see that you are turning on the IDACs, what is the intended purpose?  How are you measuring the cold-junction?  What is the reference voltage value that you are using?  By the ADS1220 device settings it would appear that you are attempting to measure an RTD, but the code appears to be a TC.  Can you send me your schematic?

    Best regards,

    Bob B

  • hello Bob,

         schematic.SCHEMATIC1 _ 04 ADS1220.pdf

        Today ,when I turn off the IDAC ,I found that the data Increased,when I put the thermocouple into the Boiling water the  temperature increase about 82C.   I thought it maybe increase about 95C. 

       

    That's the wave when I put thermocouple into the Boiling water。

  • HELLO Bob,

               That's my test code;    

                 

    CJCcode = calc_CJC(mmc);  // mmc data from ADT7420 

    /*-----------------------------------------------------------------AIN0 AIN1---------------------------------------------------------------------------------*/

    // Configure ADS1220 for first Thermocouple1 measurements
    Setup_ADS1220 (ADS1220_MUX_AIN0_AIN1, ADS1220_OP_MODE_NORMAL,
    ADS1220_CONVERSION_SINGLE_SHOT, ADS1220_DATA_RATE_90SPS, ADS1220_GAIN_32, ADS1220_USE_PGA,
    ADS1220_IDAC1_DISABLED, ADS1220_IDAC2_DISABLED, ADS1220_IDAC_CURRENT_OFF, ADS1220_VREF_EXT_REF0_PINS, ADS1220_TEMP_SENSOR_OFF);
    delay_temp(5); //
    ReadConversionData = 0;
    ADS1220_Start ();
    while (!ReadConversionData);
    ADS1220_Get_TC_Conversion_Data_Calibrated (&ADS1220TCdata);

    Setup_ADS1220 (ADS1220_MUX_AIN1_AIN0, ADS1220_OP_MODE_NORMAL,
    ADS1220_CONVERSION_SINGLE_SHOT, ADS1220_DATA_RATE_90SPS, ADS1220_GAIN_32, ADS1220_USE_PGA,
    ADS1220_IDAC1_DISABLED, ADS1220_IDAC2_DISABLED, ADS1220_IDAC_CURRENT_OFF, ADS1220_VREF_EXT_REF0_PINS, ADS1220_TEMP_SENSOR_OFF);

    TCtemperature1 = -ADS1220TCdata;
    delay_temp(5); //
    ReadConversionData = 0;
    ADS1220_Start ();
    while (!ReadConversionData);
    ADS1220_Get_TC_Conversion_Data_Calibrated (&ADS1220TCdata);
    TCtemperature1 = (ADS1220TCdata+TCtemperature1)/2;
    TCtemperature1 += CJCcode; //CJC
    TCtemperature1 = interpolateTCTemperatureValue (TCtemperature1); // Get the temperature and convert into millidegrees C 

    /*-----------------------------------------------------------------AIN2 AIN3---------------------------------------------------------------------------------*/
    Setup_ADS1220 (ADS1220_MUX_AIN2_AIN3, ADS1220_OP_MODE_NORMAL,
    ADS1220_CONVERSION_SINGLE_SHOT, ADS1220_DATA_RATE_90SPS, ADS1220_GAIN_32, ADS1220_USE_PGA,
    ADS1220_IDAC1_DISABLED, ADS1220_IDAC2_DISABLED, ADS1220_IDAC_CURRENT_OFF, ADS1220_VREF_EXT_REF0_PINS, ADS1220_TEMP_SENSOR_OFF);
    delay_temp(5); //
    ReadConversionData = 0;
    ADS1220_Start ();
    while (!ReadConversionData);
    ADS1220_Get_TC_Conversion_Data_Calibrated (&ADS1220TCdata);

    Setup_ADS1220 (ADS1220_MUX_AIN3_AIN2, ADS1220_OP_MODE_NORMAL,
    ADS1220_CONVERSION_SINGLE_SHOT, ADS1220_DATA_RATE_90SPS, ADS1220_GAIN_32, ADS1220_USE_PGA,
    ADS1220_IDAC1_DISABLED, ADS1220_IDAC2_DISABLED, ADS1220_IDAC_CURRENT_OFF, ADS1220_VREF_EXT_REF0_PINS, ADS1220_TEMP_SENSOR_OFF);

    TCtemperature2 = -ADS1220TCdata;
    delay_temp(5); //
    ReadConversionData = 0;
    ADS1220_Start ();
    while (!ReadConversionData);
    ADS1220_Get_TC_Conversion_Data_Calibrated (&ADS1220TCdata);
    TCtemperature2 = (ADS1220TCdata+TCtemperature2)/2;
    TCtemperature2 += CJCcode; //CJC
    TCtemperature2 = interpolateTCTemperatureValue (TCtemperature2); // Get the temperature and convert into millidegrees C

                             

  • Hi,

    There are a number of potential issues within the schematic.  I will discuss from the top left moving right along the schematic. I believe you are attempting to create a bidirectional TVS diode stack using unidirectional TVS diodes.  I can't think of a good reason why you would want to drive current into your supply or potentially deliver it back to the sensor.  D5 and D4 should be connected similar to the D8 and D9 so that the transient goes to ground.

    You don't need R44.  This creates an unnecessary voltage divider.  Although R44 helps to establish common mode, so does the TC when connected through R43 and R54. 

    The connections C67, C72, D6 and D7 makes no sense to me.  I think this is for extra transient protection.  Normally you would want pin 2 of D6 and D7 to go to the supply ISO2_3.3V.  I'm not sure if C67 and C72 are meant as low pass filters, but this connection will only provide a non-linear output and cause drift error.  I would remove C67 and C72 completely.

    The circuit is repeated, so the other inputs should also be corrected.  I think the biggest issue is the Schottky diodes D6 and D7, so I would remove them first to see if this corrects the temperature difference you are seeing.

    Best regards,

    Bob B