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.

HDC3022: the humidity is higher

Part Number: HDC3022
Other Parts Discussed in Thread: HDC3020,

Dear,

 One customer used HDS3022 for his application, now he met the question is that the tested humidity result is higher .temp=31.75 humidity=23

While he tested the temperature is about 26, and humidity is 39.

He used the flying lead test:

Does he need  compensation? If there is calibration before factory?

Below is the code, please help to analyze:

   // set offset
    op = HDC3020_OFFSET_MSB<<8|HDC3020_OFFSET_LSB;
    buf[0] = 0x00;
    buf[1] = 0x00;
    buf[2] = hdc3020_crc(buf, 2);
    i2c_write_poll(op, buf, 3);

[2:30 PM] Eking-YiQing Chen

int hdc3020_read(int32_t values[])
{
    uint16_t op = HDC3020_MODE_TRIG_MSB<<8|HDC3020_MODE_TRIG_LPM0;
    uint8_t buf[6] = {0};
    i2c_write_poll(op, buf, 0);

    rt_thread_mdelay(20);

    i2c_read_poll(op, buf, 6);

    // check temp crc
    uint8_t tcrc[] = {buf[0], buf[1], buf[2]};
    if (hdc3020_crc(tcrc, 3))
    {
        // crc error
        return -1;
    }

    // check humidity crc
    uint8_t hcrc[] = {buf[3], buf[4], buf[5]};
    if (hdc3020_crc(hcrc, 3))
    {
        // crc error
        return -1;
    }

    /* store temperature */
    values[0] = ((int32_t)buf[0]) << 8 | buf[1];
    /* store humidity */
    values[1] = ((int32_t)buf[3]) << 8 | buf[4];

    return 0;
}

int32_t hdc3020_toCelsius(int32_t x)
{
    float f = ((float) x) / 65535 * 175 - 45;
    return (int32_t)(f * 100);
}
int32_t hdc3020_toRH(int32_t x)
{
    float f = ((float) x) / 65535 * 100;
    return (int32_t)f;
}

Best regards

kailyn

  • HI Kailyn,

    Could you please provide more detail about the "flying lead test" and how the HDC3022 is connected to the PCB? I cannot tell from the image if the HDC3022 is soldered onto the PCB with wires connected to the soldered pins, or if the HDC3022 is not attached to the PCB and is free floating with the soldered wires holding it up.

    When measuring the temp and humidity to compare against the HDC3022, how is that being done? With another humidity sensor IC, a calibrated reference, or a temp/RH chamber? How far apart are the HDC3022 and the other measuring device, and how close are either of them to heat sources on the board, like ICs or power connectors?

    HDC3022 is trimmed and ensured to be accurate in production, so it should be working without any additional calibration necessary. Has this device been in use for a long time, or is it new? During either the assembly process or user application, was this device exposed to any chemicals (liquid or vapors) containing acids, VOCs, board cleaner, or anything other than a single reflow process (if soldered on PCB)? Exposure to chemical contaminants can change the HDC3022's RH performance, so knowing all the possible chemicals the HDC3022 could be exposed to is important.

    The provided code looks OK to me, but if you want to be safe, you can try using the code for HDC3020 on ASC Studio, which we know works well: HDC3020 ASC Studio code depot.

    Thanks

    -Alex Thompson

  • Hi Alex Thompson,

      HDC3022DEJR s not attached to the PCB and is free floating with the soldered wires holding it up. It is maybe 0.5mm near from PCB.

      Compare with another thermohygrometer. The distance between HDC3022 with thermohygrometer is maybe 80mm. And HDC3022 is far away from heat source on the board. We currently read once in 2S, starting with temp=24.9 humidity=48, and finally stabilizing temp=31.53 humidity=27
    (Compared with another thermohygrometers temp=25.4  humidity=32.5%, the temperature is relatively close at the beginning, and the temperature has been increasing after turning on; The humidity is inaccurate at the beginning, and then the stability is close but also 4% worse)

       This device is new. But now the accuracy of temperature is also about 5℃ difference. The temperature should be Chemical-free?

  • Hello,

    HDC3022's RH and Temp accuracy is defined and guaranteed for when the device is soldered to a PCB, not free floating or in a socket. So there will be some temp and RH inaccuracies when the device is used in this way. 

    However, I think this should be tested in a RH chamber that can control temperature as well, and left for at least an hour to stabilize. The tmperature is likely changing because the board is heating up. You are correct that the temperature performance should not be influenced by potential chemical contaminants. Once the temp accuracy is resolved, then you can look at the RH accuracy.

    Thanks

    -Alex Thompson

  • Hi Alex,

    I will test the accuracy when it is soldered to a PCB after one week maybe. I  agree which HDC3022's RH and Temp accuracy is defined and guaranteed for when the device is soldered to a PCB. But I think it should test lower temperature not higher when free floating? Because It may be heating up on the PCB.

    And we also tested in a temperature and humidity chamber. HDC3022 output  temp=63.35  humidity=58 when chamber setup  temp=60℃ humidity=60%. HDC3022 output  temp=53.66  humidity=50 when chamber setup  temp=50℃ humidity=652%. We can see HDC3022's temperature is 3℃ higher  and humidity is 2% lower than chamber.

  • Hello,

    Try setting the chamber to 25C/50%RH and let it settle for at least 1 hour. If that temp is accurate, then take it to 50C to try the higher temp you are doing now.

    A higher temp reading on HDC3022 will correspond with a lower RH reading. You could also try just testing the HDC3022 without the PCB to eliminate the variable of PCB heat radiating to the device for now. 

    Have you seen this on other HDC3022s, or just this one?  

    Thanks

    -Alex Thompson