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.

HDC1080 Not able to read temperature and humidity

Other Parts Discussed in Thread: HDC1080

I Am using HDC1080 with AVR xmega microcontroller and using ASF(Atmel Software Framework) I2C API's for interfacing HDC1080.

I am able to read HDC1080 Device ID and Manufacturer ID but when reading temperature or humidity, i am getting zero.

I need help.

  • Hi Mohammed,

    The following is the correct procedure to read the temperature or humidity data from the output register using the I2C interface:

    1) point the output register you want to read in order to trigger the start of the measurement

    Start | Slave Address + W | ACK | Address | ACK | STOP

    2) wait the conversion time (in case of T + RH at highest resolution the conversion time is 15msec typical and 20msec max)

    3) read the output data

    Start | Slave Address + R | ACK | Data | ACK | Data | NACK | STOP

    If you are correctly implementing the above reading procedure and you are still seeing bad output results, could you please send us an oscilloscope acquisition of a temperature or humidity reading so that we can double check the root cause of the issue?

    Thanks in advance.

    Best regards,

    Carmine

  • Thanks Carmine,

    Actually i am using Atmel ASF(Atmel Software Framework) I2C API's for reading and writing HDC1080 registers. So to read the DeviceID, i am simply passing the DeviceID register address and to read the temperature register i am simply passing the temperature register address. I am able to read device ID but not the Temperature.

    Here i am attaching oscilloscope acquisition..

    1. Reading the DeviceID

    2. Reading the Temperature register

    Thanks and best regards

    Mohammed Arif

  • I have exactly the same problem. I can read the DeviceID but don't get any measurements back if I try to read register 0x00 or 0x01.

    Was there a solution to this problem?
  • Hi Stefan,

    Measurement is triggered by writing the register address address via I2C, for example to trigger temperature measurement you need to write 0x00 via I2C first then "its very important to wait for sometime just after you write 0x00", then you can read the the output temperature from 0x00.
    So the Key here is to put some delay just after you trigger the temperature measurement. You can experiment with varying the delay duration.
    And if you are using some I2C API's then you need to locate the exact point where 0x00 is writen(Temperature measurement is triggered) and just after that delay need to be applied. I mean delay must be applied in between writing 0x00 and reading 0x00.
  • Thank you very much Mohammed for the answer!
    I will try that.
    I used the Atmel api and I thought that can't be the problem because I used them for a lot of other sensors too and normally it's working fine.
    Thank you again!!!
  • Just to confirm...everything is working now fine! Thanks again!!!

  • Great to know that Stefan...