mcp960x - Driver for MCP9600/MCP9601, thermocouple EMF to temperature converter¶
- group mcp960x
ESP-IDF driver for MCP960X/L0X/RL0X Thermocouple EMF to Temperature Converter.
Copyright (c) 2020 Ruslan V. Uss unclerus@gmail.com
BSD Licensed as described in the file LICENSE
Defines
-
MCP960X_ADDR_BASE¶
Basic I2C address.
Device support 8 addresses, ranging from 0x60 to 0x67.
-
MCP960X_ADDR_DEFAULT¶
Default I2C address (ADDR pin is connected to VDD or floating).
-
MCP960X_FILTER_OFF¶
-
MCP960X_FILTER_MAX¶
Enums
-
enum mcp960x_thermocouple_t¶
Thermocouple type.
Values:
-
enumerator MCP960X_TYPE_K¶
default
-
enumerator MCP960X_TYPE_J¶
-
enumerator MCP960X_TYPE_T¶
-
enumerator MCP960X_TYPE_N¶
-
enumerator MCP960X_TYPE_S¶
-
enumerator MCP960X_TYPE_E¶
-
enumerator MCP960X_TYPE_B¶
-
enumerator MCP960X_TYPE_R¶
-
enumerator MCP960X_TYPE_K¶
-
enum mcp960x_adc_resolution_t¶
ADC measurement resolution.
Values:
-
enumerator MCP960X_ADC_RES_18¶
18 bits / 2 uV, 320 ms, default
-
enumerator MCP960X_ADC_RES_16¶
16 bits / 8 uV, 80 ms
-
enumerator MCP960X_ADC_RES_14¶
14 bits / 32 uV, 20 ms
-
enumerator MCP960X_ADC_RES_12¶
12 bits / 128 uV, 5 ms
-
enumerator MCP960X_ADC_RES_18¶
-
enum mcp960x_burst_samples_t¶
Number of temperature samples in burst mode.
Values:
-
enumerator MCP960X_SAMPLES_1¶
default
-
enumerator MCP960X_SAMPLES_2¶
-
enumerator MCP960X_SAMPLES_4¶
-
enumerator MCP960X_SAMPLES_8¶
-
enumerator MCP960X_SAMPLES_16¶
-
enumerator MCP960X_SAMPLES_32¶
-
enumerator MCP960X_SAMPLES_64¶
-
enumerator MCP960X_SAMPLES_128¶
-
enumerator MCP960X_SAMPLES_1¶
-
enum mcp960x_mode_t¶
Operational mode.
Values:
-
enumerator MCP960X_MODE_NORMAL¶
default
-
enumerator MCP960X_MODE_SHUTDOWN¶
-
enumerator MCP960X_MODE_BURST¶
-
enumerator MCP960X_MODE_NORMAL¶
-
enum mcp960x_tc_resolution_t¶
Cold-Junction/Ambient sensor resolution.
Values:
-
enumerator MCP960X_TC_RES_0_0625¶
0.0625°C, conversion time: 250 ms
-
enumerator MCP960X_TC_RES_0_25¶
0.25°C, conversion time: 63 ms
-
enumerator MCP960X_TC_RES_0_0625¶
-
enum mcp960x_status_t¶
Device status.
Values:
-
enumerator MCP960X_OK¶
Device is functioning normally.
-
enumerator MCP960X_OPEN_CIRCUIT¶
Open circuit detected on thermocouple input (MCP9601 only)
-
enumerator MCP960X_SHORT_CIRCUIT¶
Short circuit detected on thermocouple input (MCP9601 only)
-
enumerator MCP960X_OK¶
-
enum mcp960x_alert_t¶
Alert.
Values:
-
enumerator MCP960X_ALERT_1¶
-
enumerator MCP960X_ALERT_2¶
-
enumerator MCP960X_ALERT_3¶
-
enumerator MCP960X_ALERT_4¶
-
enumerator MCP960X_ALERT_1¶
-
enum mcp960x_alert_mode_t¶
Alert mode.
Values:
-
enumerator MCP960X_ALERT_DISABLED¶
Alert disabled.
-
enumerator MCP960X_ALERT_COMP¶
Comparator mode.
-
enumerator MCP960X_ALERT_INT¶
Interrupt mode.
-
enumerator MCP960X_ALERT_DISABLED¶
-
enum mcp960x_alert_level_t¶
Alert output active level.
Values:
-
enumerator MCP960X_ACTIVE_LOW¶
Active-low.
-
enumerator MCP960X_ACTIVE_HIGH¶
Active-high.
-
enumerator MCP960X_ACTIVE_LOW¶
Functions
-
esp_err_t mcp960x_init_desc(mcp960x_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)¶
Initialize device descriptor.
- Parameters
dev – Device descriptor
addr – Device I2C address
port – I2C port
sda_gpio – SDA GPIO
scl_gpio – SCL GPIO
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_free_desc(mcp960x_t *dev)¶
Free device descriptor.
- Parameters
dev – Device descriptor
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_init(mcp960x_t *dev)¶
Init device.
Read device HW ID and revision
- Parameters
dev – Device descriptor
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_set_sensor_config(mcp960x_t *dev, mcp960x_thermocouple_t th, uint8_t filter)¶
Setup thermocouple parameters.
- Parameters
dev – Device descriptor
th – Thermocouple type
filter – Digital filtering level, 0..MCP960X_FILTER_MAX
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_sensor_config(mcp960x_t *dev, mcp960x_thermocouple_t *th, uint8_t *filter)¶
Get thermocouple parameters.
- Parameters
dev – Device descriptor
th – [out] Thermocouple type, NULL-able
filter – [out] Digital filtering level, 0..MCP960X_FILTER_MAX, NULL-able
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_set_device_config(mcp960x_t *dev, mcp960x_mode_t mode, mcp960x_burst_samples_t bs, mcp960x_adc_resolution_t adc_res, mcp960x_tc_resolution_t tc_res)¶
Set device configuration.
- Parameters
dev – Device descriptor
mode – Operation mode
bs – Number of temperature samples in burst mode
adc_res – ADC measurement resolution
tc_res – Cold-Junction/Ambient sensor resolution
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_device_config(mcp960x_t *dev, mcp960x_mode_t *mode, mcp960x_burst_samples_t *bs, mcp960x_adc_resolution_t *adc_res, mcp960x_tc_resolution_t *tc_res)¶
Get device configuration.
- Parameters
dev – Device descriptor
mode – [out] Operation mode, NULL-able
bs – [out] Number of temperature samples in burst mode, NULL-able
adc_res – [out] ADC measurement resolution, NULL-able
tc_res – [out] Cold-Junction/Ambient sensor resolution, NULL-able
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_set_mode(mcp960x_t *dev, mcp960x_mode_t mode)¶
Switch device operation mode.
- Parameters
dev – Device descriptor
mode – Operation mode
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_raw_adc_data(mcp960x_t *dev, int32_t *data)¶
Get raw ADC data.
- Parameters
dev – Device descriptor
data – [out] Raw ADC data
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_thermocouple_temp(mcp960x_t *dev, float *t)¶
Get thermocouple temperature.
Returns cold-junction compensated and error-corrected thermocouple temperature
- Parameters
dev – Device descriptor
t – [out] Temperature, degrees Celsius
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_delta_temp(mcp960x_t *dev, float *t)¶
Get thermocouple junctions delta temperature.
Returns error corrected thermocouple hot-junction temperature without the cold-junction compensation
- Parameters
dev – Device descriptor
t – [out] Temperature, degrees Celsius
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_ambient_temp(mcp960x_t *dev, float *t)¶
Get cold-junction/ambient temperature.
- Parameters
dev – Device descriptor
t – [out] Temperature, degrees Celsius
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_status(mcp960x_t *dev, bool *temp_ready, bool *burst_ready, mcp960x_status_t *status, bool *alert1, bool *alert2, bool *alert3, bool *alert4)¶
Get device status.
- Parameters
dev – Device descriptor
temp_ready – [out] Temperature conversion complete if true, NULL-able
burst_ready – [out] Burst conversion complete if true, NULL-able (burst mode only)
status – [out] Device status, NULL-able
alert1 – [out] Alert 1 status, NULL-able
alert2 – [out] Alert 2 status, NULL-able
alert3 – [out] Alert 3 status, NULL-able
alert4 – [out] Alert 4 status, NULL-able
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_set_alert_config(mcp960x_t *dev, mcp960x_alert_t alert, mcp960x_alert_mode_t mode, mcp960x_alert_level_t active_lvl, mcp960x_alert_temp_dir_t temp_dir, mcp960x_alert_source_t src, float limit, uint8_t hyst)¶
Setup temperature alert.
- Parameters
dev – Device descriptor
alert – Alert index
mode – Alert mode
active_lvl – Alert output active level
temp_dir – Alert temperature direction
src – Alert temperature source
limit – Alert limit
hyst – Hysteresis
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_alert_config(mcp960x_t *dev, mcp960x_alert_t alert, mcp960x_alert_mode_t *mode, mcp960x_alert_level_t *active_lvl, mcp960x_alert_temp_dir_t *temp_dir, mcp960x_alert_source_t *src, float *limit, uint8_t *hyst)¶
Get temperature alert configuration.
- Parameters
dev – Device descriptor
alert – Alert index
mode – [out] Alert mode, NULL-able
active_lvl – [out] Alert output active level, NULL-able
temp_dir – [out] Alert temperature direction, NULL-able
src – [out] Alert temperature source, NULL-able
limit – [out] Alert limit, NULL-able
hyst – [out] Hysteresis, NULL-able
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_get_alert_status(mcp960x_t *dev, mcp960x_alert_t alert, bool *status)¶
Get alert status.
- Parameters
dev – Device descriptor
alert – Alert index
status – [out] Alert status
- Returns
ESP_OK
on success
-
esp_err_t mcp960x_clear_alert_int(mcp960x_t *dev, mcp960x_alert_t alert)¶
Clear alert interrupt.
- Parameters
dev – Device descriptor
alert – Alert index
- Returns
ESP_OK
on success
-
struct mcp960x_t¶
- #include <mcp960x.h>
Device descriptor.
-
MCP960X_ADDR_BASE¶