MAX31856 高精度热电偶至数字输出转换器开发笔记 【器件概述】 MAX31856可对来自于任何类型热电偶的信号进行冷端补偿和数字化,将输出数据格式化为以摄氏度为单位。转换器的温度分辨率达0.0078125°C,允许读取高达+1800°C以及低至-210°C(取决于热电偶类型)的温度读数,热电偶电压测量精度达±0.15%。热电偶输入具有高达±45V的过压保护。器件包括50Hz和60Hz电网频率滤波,也是热电偶的故障检测频率。SPI兼容接口允许选择热电偶类型以及设置转换和故障检测过程。 【功能框图】 【关键特性】 提供高精度热电偶温度读数 包括8种热电偶的自动线性度修正 ±0.15%(最大值,-20°C至+85°C)热电偶满幅和线性度误差 19位、0.0078125°C热电偶温度分辨率 内置冷端补偿,将系统元件数量降至最少 ±0.7°C(最大值,-20°C至+85°C)冷端补偿精度 ±45V输入保护,系统性能可靠 简化系统故障管理和诊断 检测热电偶开路 过温和欠温故障检测 50Hz/60Hz噪声抑制滤波,提高系统性能 14引脚TSSOP封装 【备货信息】 硅天下备货编号GXT-MAX31856MUD+T 【应用电路图】 【寄存器配置】 芯片内部有16个寄存器,没有什么特别的要求的话(比如自己做冷端补偿),主要关心CR0、CR1、MSAK、LTCBH、LTCBM、LTCBL、SR这几个就好了,其他保持默认值。 存取寄存器时,使用地址0Xh为读操作,地址8Xh为写操作。CR0和CR1主要配置芯片工作模式,推荐设置连续采样模式和采样点平均,我把CR0设置为0xA0,CR1设置为0x33。MASK设置为0x00,开启所有的故障检测,故障检测周期在CR0寄存器里配置。LTCBH、LTCBM、LTCBL存放最后的测温结果,做一些转换就能计算出来。芯片计算好一次温度结果后会把DRDY引脚设为低电平,推荐采用DRDY引脚触发中断来测量温度。SR寄存器放置故障检测的结果。 基本的流程就是,配置CR0、CR1、MASK三个寄存器,然后读取LTCBH、LTCBM、LTCBL、SR的值,获取温度结果和测温过程中的故障。 【编写程序】 利用CubeMX生成Keil 5的工程后,新建并添加max31856.h和max31856.c文件,存放与其相关的代码。这里摘出主要代码: 1. 列出各寄存器地址(.h文件中) 1 #define MAX31856_CR0_R_ADDR 0x00 // 配置0寄存器 2 #define MAX31856_CR0_W_ADDR 0x80 3 #define MAX31856_CR1_R_ADDR 0x01 // 配置1寄存器 4 #define MAX31856_CR1_W_ADDR 0x81 5 #define MAX31856_MASK_R_ADDR 0x02 // 故障屏蔽寄存器 6 #define MAX31856_MASK_W_ADDR 0x82 7 #define MAX31856_CJHF_R_ADDR 0x03 // 冷端上限故障 8 #define MAX31856_CJHF_W_ADDR 0x83 9 #define MAX31856_CJLF_R_ADDR 0x04 // 冷端下限故障 10 #define MAX31856_CJLF_W_ADDR 0x84 11 #define MAX31856_LTHFTH_R_ADDR 0x05 // 线性化温度上限故障,MSB 12 #define MAX31856_LTHFTH_W_ADDR 0x85 13 #define MAX31856_LTHFTL_R_ADDR 0x06 // 线性化温度上限故障,LSB 14 #define MAX31856_LTHFTL_W_ADDR 0x86 15 #define MAX31856_LTLFTH_R_ADDR 0x07 // 线性化温度下限故障,MSB 16 #define MAX31856_LTLFTH_W_ADDR 0x87 17 #define MAX31856_LTLFTL_R_ADDR 0x08 // 线性化温度下限故障,LSB 18 #define MAX31856_LTLFTL_W_ADDR 0x88 19 #define MAX31856_CJTO_R_ADDR 0x09 // 冷端温度偏移寄存器 20 #define MAX31856_CJTO_W_ADDR 0x89 21 #define MAX31856_CJTH_R_ADDR 0x0A // 冷端温度寄存器,MSB 22 #define MAX31856_CJTH_W_ADDR 0x8A 23 #define MAX31856_CJTL_R_ADDR 0x0B // 冷端温度寄存器,LSB 24 #define MAX31856_CJTL_W_ADDR 0x8B 25 #define MAX31856_LTCBH_R_ADDR 0x0C // 线性化TC温度,字节2 26 #define MAX31856_LTCBM_R_ADDR 0x0D // 线性化TC温度,字节1 27 #define MAX31856_LTCBL_R_ADDR 0x0E // 线性化TC温度,字节0 28 #define MAX31856_SR_R_ADDR 0x0F // 状态故障寄存器 2. 初始化参数宏定义(max31856.h文件中) 这里将MAX31856设置为连续采样模式,8个采样点取一次平均值,设置为K型热电偶(根据热电偶型号选择,不过芯片也会自动识别),开启所有故障检测,每16个采样点进行一次开路检测。SPI_DELAY是SPI通信的超时大小。 1 #define MAX31856_INIT_CR0 0xA0 2 #define MAX31856_INIT_CR1 0x33 ……
|