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.
-
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
- HDC1000_OK
-
enum
hdc1000_res_t
¶ - HDC1000_11BIT
= (HDC1000_TRES11 | HDC1000_HRES11)
- 11-bit conversion
- HDC1000_14BIT
= (HDC1000_TRES14 | HDC1000_HRES14)
- 14-bit conversion
- HDC1000_11BIT
-
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 usinghdc1000.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.
-
hdc1000_params_t