Adafruit MAX31856 通用热电偶放大器:设计与应用全解析

电子说

1.4w人已加入

描述

Adafruit MAX31856 通用热电偶放大器:设计与应用全解析

一、概述

在电子工程领域,热电偶是一种常用的温度测量元件,但它非常敏感,需要一个优秀的放大器以及冷补偿参考,同时还需要处理非线性问题的计算。此前,我们常推荐 MAX31855K 开发板,不过它仅适用于 K 型热电偶。现在,Adafruit 推出了一款出色的新型热电偶放大器/转换器——MAX31856,它几乎可以处理任何类型的热电偶,甚至能在温度超出范围或出现故障时发出通知。

文件下载:3263.pdf

这款转换器通过 4 线 SPI 进行通信,可与 K、J、N、R、S、T、E 或 B 型热电偶接口。开发板集成了芯片、3.3V 稳压器和电平转换电路,经过组装和测试。它还配备了 2 针端子块(用于连接热电偶)和引脚头(可插入面包板或穿孔板),并且按照 Maxim 的建议,板上添加了串联电阻和滤波电容以提高稳定性。

其主要特性如下:

  1. 广泛的热电偶兼容性:适用于 K、J、N、R、S、T、E 或 B 型热电偶。
  2. 宽温度范围和高分辨率:输出范围为 -210°C 至 +1800°C,分辨率为 0.0078125°。不过要注意,许多热电偶的精度约为 ±2°C 至 ±6°C,具体取决于温度和类型,所以分辨率比精度要高很多。
  3. 内部温度读取:可以读取芯片内部的温度。
  4. 电源和逻辑电平兼容性:支持 3.3 至 5V 电源和逻辑电平。
  5. SPI 数据接口:只需要 4 个数字 I/O 引脚。

二、引脚说明

1. 电源引脚

  • Vin:这是电源引脚。由于传感器芯片使用 3VDC,板上集成了一个稳压器,可将 3 - 5VDC 安全转换。为开发板供电时,应使用与微控制器逻辑电平相同的电源,例如对于 5V 的 Arduino 微控制器,使用 5V 电源。
  • 3Vo:这是稳压器的 3.3V 输出,可从中获取高达 100mA 的电流。
  • GND:电源和逻辑的公共接地端。

2. SPI 逻辑引脚

所有进入开发板的引脚都有电平转换电路,使其在 3 - 5V 逻辑电平下安全。使用 Vin 上的逻辑电平即可。

  • SCK:SPI 时钟引脚,是芯片的输入。
  • SDO:串行数据输出/微控制器输入、传感器输出引脚,用于从 MAX31856 向处理器发送数据。
  • SDI:串行数据输入/微控制器输出、传感器输入引脚,用于从处理器向 MAX31856 发送数据。
  • CS:芯片选择引脚,将其拉低可开始 SPI 事务,是芯片的输入。如果要将多个 MAX31856 连接到一个微控制器,可以让它们共享 SDI、SDO 和 SCK 引脚,然后为每个芯片分配一个唯一的 CS 引脚。

3. 额外引脚

  • FLT:故障输出引脚。如果使用 MAX31856 的阈值通知功能,可以监控此引脚,当它变为低电平时表示有故障。
  • DRDY:用于高级应用,可让传感器开始读数,然后等待此引脚变为低电平。在库代码中,为了简单起见使用了延迟/等待方式,不过如果需要也可以使用此引脚。

三、组装步骤

1. 准备引脚排

必要时将引脚排裁剪到合适的长度。将其插入面包板(长引脚朝下),这样焊接会更容易。

2. 添加开发板

将开发板放在引脚上,使短引脚穿过开发板的焊盘。

3. 焊接

确保焊接所有 5 个引脚,以实现可靠的电气连接。如果需要焊接技巧,可以查看 Adafruit 优秀焊接指南。接下来安装端子块,这是用于连接热电偶的,因为不能直接焊接热电偶。端子块安装在顶部,开口端朝外,然后像焊接普通引脚排一样焊接两个焊盘,由于焊盘较大,需要较多的焊料。最后插入热电偶线,用小的 Phillips 或平头螺丝刀拧紧夹子。

四、接线与测试

1. SPI 接线

可以使用硬件或“软件”SPI 进行接线。为了使所有 Arduino 的接线相同,先使用“软件”SPI。接线如下:

  • 将 Vin 连接到电源,3V 或 5V 均可,使用与微控制器逻辑电平相同的电压。对于大多数 Arduino,是 5V。
  • 将 GND 连接到公共电源/数据接地端。
  • 将 SCK 引脚连接到数字引脚 #13(后续可以使用任何引脚)。
  • 将 SDO 引脚连接到数字引脚 #12(后续可以使用任何引脚)。
  • 将 SDI 引脚连接到数字引脚 #11(后续可以使用任何引脚)。
  • 将 CS 引脚连接到数字引脚 #10(后续可以使用任何引脚)。

2. 下载 Adafruit_MAX31856 库

要开始读取传感器数据,需要从 Arduino 库管理器中安装 Adafruit MAX31856 库。打开 Arduino 库管理器,搜索 Adafruit MAX31856 库并安装。也可以查看 Arduino 库安装教程

3. 连接热电偶

需要连接一个热电偶,本演示使用 K 型热电偶,如果没有 K 型热电偶,可以调整演示代码。

4. 加载演示

打开 File -> Examples -> Adafruit_MAX31856 -> max31856,将代码上传到连接了传感器的 Arduino。如有必要,调整 max.setThermocoupleType(MAX31856_TCTYPE_K) 行。上传代码后,打开串口监视器,波特率设置为 115200,即可看到冷端温度(微控制器芯片的温度)和热电偶温度(热电偶探头末端检测到的温度)的输出。还可以通过断开一个引脚来检测一些可检测的故障。

5. 库参考

  • 创建对象:可以使用软件 SPI 创建 MAX31856 对象,所有四个引脚可以是任何 I/O 引脚:
    // 使用软件 SPI: CS, DI, DO, CLK
    Adafruit_MAX31856 max = Adafruit_MAX31856(10, 11, 12, 13);

    也可以使用硬件 SPI,但必须使用 Arduino 的硬件 SPI 引脚(每种 Arduino 类型的引脚不同),可以查看 SPI 参考。在这种情况下,可以使用任何 CS 引脚,其他三个引脚是固定的:

    // 使用硬件 SPI,只需传入 CS 引脚
    Adafruit_MAX31856 max = Adafruit_MAX31856(10);
  • 初始化传感器:使用 max.begin() 初始化传感器。
  • 设置热电偶类型:使用 max.setThermocoupleType(MAX31856_TCTYPE_xxx) 设置热电偶类型,可选类型有:
    • MAX31856_TCTYPE_B
    • MAX31856_TCTYPE_E
    • MAX31856_TCTYPE_J
    • MAX31856_TCTYPE_K
    • MAX31856_TCTYPE_N
    • MAX31856_TCTYPE_R
    • MAX31856_TCTYPE_S
    • MAX31856_TCTYPE_T
    • MAX31856_VMODE_G8
    • MAX31856_VMODE_G32 最后两个不是热电偶类型,是“普通”电压读数模式(更多细节可查看数据手册,库中未使用这些模式)。如果不确定当前模式,可以使用 max.getThermocoupleType() 查询。
  • 读取温度:可以读取冷端温度(返回浮点型摄氏度读数,即 MAX31856 芯片内部检测到的温度):max.readCJTemperature();也可以读取热电偶末端的温度:max.readThermocoupleTemperature()
  • 故障检测:MAX31856 有广泛的故障检测机制,可以通过引脚或函数在出现问题时发出警报。使用 max.readFault() 读取故障,它将返回一个 uint8_t 类型,每个位代表 8 种不同的故障类型之一。可以使用以下代码测试每种故障类型:
    uint8_t fault = max.readFault();
    if (fault) {
    if (fault & MAX31856_FAULT_TCRANGE) Serial.println("Thermocouple Range Fault");
    if (fault & MAX31856_FAULT_CJHIGH) Serial.println("Cold Junction High Fault");
    if (fault & MAX31856_FAULT_CJRANGE) Serial.println("Cold Junction Range Fault");
    if (fault & MAX31856_FAULT_CJLOW) Serial.println("Cold Junction Low Fault");
    if (fault & MAX31856_FAULT_TCHIGH) Serial.println("Thermocouple High Fault");
    if (fault & MAX31856_FAULT_TCLOW) Serial.println("Thermocouple Low Fault");
    if (fault & MAX31856_FAULT_OVUV) Serial.println("Over/Under Voltage Fault");
    if (fault & MAX31856_FAULT_OPEN) Serial.println("Thermocouple Open Fault");
    }

    对于冷端温度和热电偶温度的高低阈值,可以使用以下函数设置:

    // 冷端温度阈值
    max.setColdJunctionFaultThreshholds(lowtemp, hightemp);
    // 热电偶温度阈值
    setTempFaultThreshholds(lowtemp, hightemp);

    其中,冷端温度阈值范围为 -127 至 +127 摄氏度,热电偶温度阈值是浮点型数字,范围为 -4096 至 +4096,分辨率为 0.0625 摄氏度。

五、Python 与 CircuitPython 的使用

1. 接线

  • CircuitPython 微控制器接线:将 MAX31856 按照前面 Arduino 的接线方式连接到开发板。例如,将 Feather M0 连接到传感器:
    • 开发板 3V 连接到传感器 VIN
    • 开发板 GND 连接到传感器 GND
    • 开发板 SCK 连接到传感器 SCK
    • 开发板 MISO 连接到传感器 SDO
    • 开发板 MOSI 连接到传感器 SDI
    • 开发板 D5 连接到传感器 CS(或任何其他空闲数字 I/O 引脚) 连接到微控制器后,确保将热电偶连接到开发板的端子上。
  • Python 计算机接线:以 Raspberry Pi 为例,接线如下:
    • Pi 3V 连接到传感器 VIN
    • Pi GND 连接到传感器 GND
    • Pi SCK 连接到传感器 SCK
    • Pi MISO 连接到传感器 SDO
    • Pi MOSI 连接到传感器 SDI
    • Pi D5 连接到传感器 CS(或任何其他空闲数字 I/O 引脚) 连接到 Raspberry Pi 后,同样要将热电偶连接到开发板的端子上。

2. 库安装

  • CircuitPython 安装 MAX31856 库:首先确保运行的是适用于开发板的最新版本的 Adafruit CircuitPython。然后从 Adafruit 的 CircuitPython 库包中安装必要的库,例如对于非 Express 开发板(如 Trinket M0、Gemma M0 和 Feather/Metro M0 basic),需要手动从库包中安装以下文件:
    • adafruit_max31856.mpy
    • adafruit_bus_device 在继续之前,确保开发板的 lib 文件夹中已经复制了 adafruit_max31856.mpy 和 adafruit_bus_device 文件和文件夹。最后连接到开发板的串行 REPL,进入 CircuitPython >>> 提示符。
  • Python 安装 MAX31856 库:需要安装提供 Python 中 CircuitPython 支持的 Adafruit_Blinka 库,这可能还需要在平台上启用 I2C 并验证运行的是 Python 3。由于每个平台有所不同,且 Linux 经常变化,请查看 CircuitPython on Linux 指南 准备好计算机。完成后,从命令行运行以下命令:
    sudo pip3 install adafruit-circuitpython-max31856

    如果默认 Python 是版本 3,可能需要运行 'pip' 而不是 'pip3',但要确保不使用 Python 2.x,因为不支持。

3. 使用示例

以下是使用 CircuitPython 读取温度的示例代码:

import board
import digitalio
import adafruit_max31856

# 创建 SPI 连接
spi = board.SPI()
# 分配 CS 引脚并设置方向
cs = digitalio.DigitalInOut(board.D5)
cs.direction = digitalio.Direction.OUTPUT
# 创建热电偶对象
thermocouple = adafruit_max31856.MAX31856(spi, cs)
# 读取温度
print(thermocouple.temperature)

六、下载资源

通过以上介绍,你应该对 Adafruit MAX31856 通用热电偶放大器有了全面的了解。在实际应用中,你可以根据自己的需求选择合适的接线方式和编程语言,利用其强大的功能进行温度测量和故障检测。你在使用过程中遇到过哪些问题呢?欢迎在评论区分享。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分