网联高温仪表专用传感器MAX31856-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1685|回复: 1

网联高温仪表专用传感器MAX31856

[复制链接]
发表于 2022-5-2 14:36 | 显示全部楼层 |阅读模式
MAX31856 高精度热电偶至数字输出转换器开发笔记
【器件概述】
MAX31856可对来自于任何类型热电偶的信号进行冷端补偿和数字化,将输出数据格式化为以摄氏度为单位。转换器的温度分辨率达0.0078125°C,允许读取高达+1800°C以及低至-210°C(取决于热电偶类型)的温度读数,热电偶电压测量精度达±0.15%。热电偶输入具有高达±45V的过压保护。器件包括50Hz和60Hz电网频率滤波,也是热电偶的故障检测频率。SPI兼容接口允许选择热电偶类型以及设置转换和故障检测过程。
【功能框图】
MAX31856内部结构.png
MAX31856关键特性】
提供高精度热电偶温度读数
包括8种热电偶的自动线性度修正
±0.15%(最大值,-20°C+85°C)热电偶满幅和线性度误差
19位、0.0078125°C热电偶温度分辨率
内置冷端补偿,将系统元件数量降至最少
转换器的温度分辨率达0.0078125°C
允许读取高达+1800°C以及低至-210°C(取决于热电偶类型)的温度读数
±0.7°C(最大值,-20°C+85°C)冷端补偿精度
±45V输入保护,系统性能可靠
简化系统故障管理和诊断
检测热电偶开路
过温和欠温故障检测
50Hz/60Hz噪声抑制滤波,提高系统性能
14引脚TSSOP封装
【备货信息】   硅天下备货编号GXT-MAX31856MUD+T
【应用电路图】
9.png
【寄存器配置】
     芯片内部有16个寄存器,没有什么特别的要求的话(比如自己做冷端补偿),主要关心CR0CR1MSAKLTCBHLTCBMLTCBLSR这几个就好了,其他保持默认值。
10.png
存取寄存器时,使用地址0Xh为读操作,地址8Xh为写操作。CR0CR1主要配置芯片工作模式,推荐设置连续采样模式和采样点平均,我把CR0设置为0xA0CR1设置为0x33MASK设置为0x00,开启所有的故障检测,故障检测周期在CR0寄存器里配置。LTCBHLTCBMLTCBL存放最后的测温结果,做一些转换就能计算出来。芯片计算好一次温度结果后会把DRDY引脚设为低电平,推荐采用DRDY引脚触发中断来测量温度。SR寄存器放置故障检测的结果。
基本的流程就是,配置CR0CR1MASK三个寄存器,然后读取LTCBHLTCBMLTCBLSR的值,获取温度结果和测温过程中的故障。
【编写程序】
利用CubeMX生成Keil 5的工程后,新建并添加max31856.hmax31856.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_DELAYSPI通信的超时大小。
1 #define             MAX31856_INIT_CR0                                           0xA0
2 #define             MAX31856_INIT_CR1                                       0x33
……
MAX31856datasheet英文.pdf (804.01 KB, 下载次数: 0)

MAX31856芯片中文手册.pdf (897 KB, 下载次数: 1)


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 07:49 , Processed in 0.148446 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表