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