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.

AMC7823 temp sensor precision issue

Other Parts Discussed in Thread: AMC7823, AMC7812

Hello,

I work on project with 4DSP's FMC30RF and have to control module temperature.

This module has AMC7823 to control voltage and temp. Voltage measure results look correctly&stable_enough, but temperature results are unstable (noise like, deviation  upto +-3C from average value that looks correct). I use temp recalculaton as AMC7823 datasheet said.

Thanks for any suggestions about issue.

BR, Serge

  • Howdy Serge,

    Welcome to the E2E forums! The two remote temperatures sensors do have +-2C accuracy, which is very close to the +-3C value you have given.

    The AMC7812 has a built in 65kHz filter on the inputs of D+ and D-, which is designed to minimize noise.  In addition to this internal filter, an external bypass capacitor can be placed across the inputs of the temperature sensor.  The bypass capacitor provides extra protection against unwanted coupled signals.  The datasheet recommends a capacitance value of 330pF or less for optimum measurement performance.  An illustration of this connection is provided below:

    Best Regards,

    Matt

  • Howdy Serge,

    It looks like I may have had my wires crossed.  Just consider it as a post with addition information :).  Regarding the AMC7823 device, if you are referring to the internal temperature sensor, the datasheet does specify an accuracy of +-2C for a Vref voltage of 1.25V, and an accuracy value of +-4C for a Vref voltage of 2.5V.  The accuracy values seem to correlate with the number you have given, +-3C.  

    An illustration of the relationship between the internal reference and temperature is shown in the figure below.  The temperature affects the reference voltage which drives the systems resolution and accuracy. 

    When using the internal reference, a filter capacitor (10uF) connected from pin 21 (EXT_REF_IN) to GND is recommended to improve temperature reading.

    If you are referring to the precision current source, then more information is needed, such as a copy of the thermistor or RTD circuit, Rset value, and reference configuration (internal/external).

    Hope this information helps.

    Best Regards,

    Matt

  • Hello Matt,

    Thanks for detailed info about internal temp sensor accuracy.

    Used Vref=1.25V, so error should be in +/-3C range.

    BR&Thanks,
    Serge

  • Hello Matt,

     

    Could you supppose a reason of very big (up to 40C after centigrade calculation) noise when others ADC voltage channel work quite well?

    Can it be result of fail/break of filter capacitor (10uF) connected from pin 21 (EXT_REF_IN)?

     

    BR&Thanks,
    Serge

     

  • Howdy Serge,

    Since the ADC readings are not affected, I wouldn't think that the filter capacitor is damaged, you can always verify with a DMM.  Maybe the temperature is not getting fully measured. Do you have the device in auto-mode or direct-mode?

    According to the datasheet:

    In direct-mode operation, the temperature can be measured by converting Channel CH8 only, or by converting
    several channels including Channel CH8. In auto-mode, the temperature must be measured by converting at
    least two channels including Channel CH8.

    Can you provide temperature read data (HEX)?

    Best Regards,

    Matt

  • Hello Matt,

    Device works in auto mode.

    Please see below init and simple read functions

    void monitor_init()
    {
        Xuint16 dword;

        PORT_OUT(XPAR_CNTRL_GPIO_BASEADDR) |= AMC7823_RESET;
        amc7823_SPI_Write(&amc7823, 0x0C, 0xBB30, 1, 1);
        xil_printf("Starting monitor (AMC7823) initialization\r\n");

        //check <Part Revision Number> register
        amc7823_SPI_Read(&amc7823, 0x1E, &dword, 1, 1);

        xil_printf("AMC7823_REV: 0x%X\r\n", dword);
        //Power-Down Register
        //set PADC to '1' to enable ADC operation
        //set PDACn to '0' to disable DAC operation
        //set PTS to '0' to disable the precision current source
        //set PREFB to '0' disable the reference buffer amplifier
        amc7823_SPI_Write(&amc7823, 0x0D, 0x8000, 1, 1);

        //AMC Status/Configuration Register
        //set SREF to '0' to select internal refence
        //set GREF to '0' to select +1.25V reference
        //set ECNVT to '0' to enable internal trigger mode
        amc7823_SPI_Write(&amc7823, 0x0A, 0x0000, 1, 1);

        //ADC Control Register
        //set CMODE to '1' for auto mode (continuous conversion)
        //set SA to 0 to start measure at channel 0
        //set EA to 8 to end measure at channel 8
        amc7823_SPI_Write(&amc7823, 0x0B, 0x8080, 1, 1); Sleep(2);
    }

    void monitor_displayamctemp()

    {
        int dword;
        float result;
        amc7823_SPI_Read(&amc7823, 0x08, &dword, 1, 0);

        //calculate deltaVbe in mV
        result = 0.61f * (dword&0xFFF);

        //calculate temperature in C
        result = 2.60f * result - 273.0f;
        xil_printf(" Temperature  : %d C\r\n", (Xuint32)result);

    }

    BR&Thanks,
    Serge

  • Howdy Serge,

    Sorry for the late reply.  I think I may have overlooked this post when accessing my email.  

    • In the post above, you mention that the temperature data looks reasonable in auto mode.  Is this the code displayed above?  
    • When using direct mode, are you internally or externally triggering the conversions? 
    • What are the values of the AMC Status/Configuration and ADC Control registers when in direct mode?

    One quick way to verify that you are properly converting channels in direct mode is to read the DAVF bit.  In direct-mode, after the ADC Data registers update, the DAVF bit in the AMC Status/Config Resister is set to '1'.  

    Matt