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.

HDC2080: Not times getting wrong Humidity value (0 or 100)

Part Number: HDC2080

Dear Technical Support Team,

We used HDC2080 in our product to measure Temp and RH.

Sometimes we are getting correct result, but sometime it is showing 0 or 100. Need your help to address it.

Please see the interaction steps with HDC2080 in FW.

1. Initialization: 

a. Software Reset to HDC2080 (write 0x80 in addr 0x0E)

b. Set for Temp & RH Measurement and 14 bit Resolution  (0x00 ORed with content of addr 0x0F)

c. Set Sampling Rate (0x50 in addr 0x0E)

d.  Trigger Measurement (ORed 0x01 in addr 0x0F)

2. In Loop 

a. Check for DRDY_STAT bit in addr 0x04

b. If high, read two bytes Temp value from addr 0x00 and then two bytes RH value from addr 0x02 and do conversion.

Please suggest.

  • Dear Vivek - 

    Thanks for posting on E2E and providing the details of your issue. 

    In this case, you are setting the device to do automatic reading every second, and checking register 0x04, but you refer to it as "high" which should be checking for value of 0x80. Also, software reset is not required. 

    I would recommend you consider modifying your flow like this - 

    a. (First) power up -

    b. wait more than 3mSec - 

    c. write register 0x0E with 0x50 (set for conversion every one second)

    d. write register 0x0F with 0x01 (start conversion)

    c. wait >1.3 to 1.5mSec 

    d. read register 0x04 (for 0x080) -

    e. if 0x04 = 0x080, read 0x00 through 0x03 (this can be done all at once)

    // loop

    f. wait 1 sec

    g. read register 0x04 (for 0x080) -

    e. if 0x04 = 0x080, read 0x00 through 0x03 (this can be done all at once)

    the other alternative would be to do same, but set 0x0E to 0x56 and 0x07 to 0x80, then use the DRDY/INT pin as your interrupt source for triggering read of register 0x04 instead of timer. 

  • Hi Josh,

    Thanks for sharing your valuable input.

    We corrected the Firmware, as per your feedback, write the image in multiple boards and done testing for two days.

    In one board only, we are still getting 0 humidity value and wrong temp value for a single instance. Please see the attached image of log file.

    But interestingly, we are not getting 100% RH this time. Its a improvement but not solved 100%.

    Please check if you have any idea.

    Regards
    Vivek
     


  • Vivek - 

    You can extend the waiting time (previously I had recommended waiting ~1.3 to 1.5mSec, as this is typical for 14 bit conversion time) - there is no max spec on this, so this is the parameter to adjust as the results you are getting on temp and %RH are consistent with the values in registers 0x00 through 0x03 being 0x00's. (as you are getting -40C and 0%RH) and those registers should be 0x00's until conversion is done. 

    Please check this out with a logic analyzer or o'scope if those are available on your side and share those if this doesn't solve the issue. 

  • Hi Josh,

    Today we faced the problem again and found that 168 value (instead of 128) coming from Status reg (0x04), after that RH value is 0 only.

    Now we change the logic, please see the new one.

    Loop()
    1. Timeout (1s delay over)
    2. Read Status Reg (0x04)
    3. if it's not 0, 
        a. If it is 128, read the 4 bytes and calculate Temp & RH
        b. else Reset HDS2080 (write 0x80 to reg 0xE) and initialize HDC2080 again

    After that also found 168 from Status Reg, reset the HDC and found correct RH again from HDC.

    Please share your feedback on those steps.

    Another point, its not clear to us the purpose of Heater in HDC2080. Please share your knowledge.

    Regards
    Vivek

  • Vivek -

    when using the soft reset, you do need to wait some time before interacting with the device, too - I would recommend taking a capture of your logic sequence and sharing that if possible. 

    also, you can try using the one-shot mode since this may be timing related (which will be revealed in your logic capture, hopefully)

    (if you have Saleae LSA, you can save capture, zip it up and attach to the E2E post directly)

    the function of the heater is to remove condensation quickly. 

  • Hi Josh,

    Thanks for your reply. We don't have facility to capture the whole sequence in single shot. But lets see what best we can do.

    Please share information on in-build heater of HDC2080.

    Regards
    Vivek

  • Vivek - 

    OK - even if you can capture step by step that would be OK. 

    The heater is a built in resistive element that draws current and therefore generates heat when turned on (similar to an electric stove element, but on a much smaller scale) - what details are you looking for more than this?

        

  • What is the purpose of in-build heater? When we need to use it?

    Regards
    Vivek

  • Dear Vivek - 

    The purpose of the integrated heating element is  to prevent or remove any condensation that may build up in high humidity environments. You would need to characterize how to use it correctly in your system / system environment. From your website it looks as though you are making Air Quality Monitors, so I can see a possibility of this being needed in your application, as your end product might be placed in a condensing environment, where the heater feature can be employed after or during a (potential) condensation event.

    Additionally, the heater can be used to verify functionally of the integrated sensors (temp and %RH) as temp will rise and %RH will fall when the heater is on.