HDC1000 Humidity and Temperature Sensor

Driver for the TI HDC1000 Humidity and Temperature Sensor.

The driver will initialize the sensor for best resolution (14 bit). Currently the driver doesn’t use the heater. Temperature and humidity are acquired in sequence. The sensor is always in sleep mode.

The temperature and humidity values can either be acquired using the simplified hdc1000_read() function, or the conversion can be triggered manually using the hdc1000_trigger_conversion() and hdc1000_get_results() functions sequentially. If using the second method, on must wait at least HDC1000_CONVERSION_TIME between triggering the conversion and reading the results.

Note

The driver does currently not support using the devices heating unit.

This driver provides [S]ensor [A]ctuator [U]ber [L]ayer capabilities.

enum @122
HDC1000_OK = 0
everything went as expected
HDC1000_NODEV = -1
no HDC1000 device found on the bus
HDC1000_NOBUS = -2
errors while initializing the I2C bus
HDC1000_BUSERR = -3
error during I2C communication
enum hdc1000_res_t
HDC1000_11BIT = (HDC1000_TRES11 | HDC1000_HRES11)
11-bit conversion
HDC1000_14BIT = (HDC1000_TRES14 | HDC1000_HRES14)
14-bit conversion
int hdc1000_init(hdc1000_t * dev, const hdc1000_params_t * params)

Initialize the given HDC1000 device.

Parameters

dev:device descriptor of sensor to initialize
params:configuration parameters

Return values

  • HDC1000_OK on success
  • HDC1000_NOBUS if initialization of I2C bus fails
  • HDC1000_NODEV if no HDC1000 device found on bus
int hdc1000_trigger_conversion(const hdc1000_t * dev)

Trigger a new conversion.

After the conversion is triggered, one has to wait hdc1000.h::HDC1000_CONVERSION_TIME us until the results can be read using hdc1000.h::hdc1000_get_results().

Parameters

dev:device descriptor of sensor

Return values

  • HDC1000_OK on success
  • HDC1000_BUSERR on I2C communication failures
int hdc1000_get_results(const hdc1000_t * dev, int16_t * temp, int16_t * hum)

Read conversion results for temperature and humidity.

Parameters

dev:device descriptor of sensor
temp:temperature [in 100 * degree centigrade]
hum:humidity [in 100 * percent relative]

Return values

  • HDC1000_OK on success
  • HDC1000_BUSERR on I2C communication failures
int hdc1000_read(const hdc1000_t * dev, int16_t * temp, int16_t * hum)

Convenience function for reading temperature and humidity.

This function will trigger a new conversion, wait for the conversion to be finished and the get the results from the device.

Parameters

dev:device descriptor of sensor
temp:temperature [in 100 * degree centigrade]
hum:humidity [in 100 * percent relative]

Return values

  • HDC1000_OK on success
  • HDC1000_BUSERR on I2C communication failures
int hdc1000_read_cached(const hdc1000_t * dev, int16_t * temp, int16_t * hum)

Extended read function including caching capability.

This function will return cached values if they are within the sampling period (HDC1000_RENEW_INTERVAL), or will trigger a new conversion, wait for the conversion to be finished and the get the results from the device.

Parameters

dev:device descriptor of sensor
temp:temperature [in 100 * degree centigrade]
hum:humidity [in 100 * percent relative]

Return values

  • HDC1000_OK on success
  • HDC1000_BUSERR on I2C communication failures
HDC1000_I2C_ADDRESS

Default I2C bus address of HDC1000 devices.

1
(0x43)
HDC1000_CONVERSION_TIME

Typical conversion time needed to acquire new values [in us].

1
(26000)

Note

This time value is chosen twice as large as needed for two 14-bit conversions (worst case) to allow for timer imprecision: (convert temp + convert hum) * 2 -> (6.5ms + 6.5ms) * 2 := 26ms.

struct hdc1000_params_t

Parameters needed for device initialization.

i2c.h::i2c_t i2c

bus the device is connected to

uint8_t addr

address on that bus

hdc1000.h::hdc1000_res_t res

resolution used for sampling temp and hum

uint32_t renew_interval

interval for cache renewal

struct hdc1000_t

Device descriptor for HDC1000 sensors.

hdc1000_params_t p

Configuration parameters.