Adafruit MAX31865 RTD PT100/PT1000放大器:高精度温度传感解决方案

电子说

1.4w人已加入

描述

Adafruit MAX31865 RTD PT100/PT1000放大器:高精度温度传感解决方案

一、概述

在精密温度传感领域,铂电阻温度探测器(RTD)是无可比拟的选择。RTD是一种温度传感器,其内部电阻会随温度变化而改变,本质上类似于热敏电阻。在这类传感器中,电阻是一小条铂,在0°C时电阻值为100或1000欧姆,因此被称为PT100/PT1000。与大多数NTC/PTC热敏电阻相比,PT类型的RTD更加稳定和精确,但价格也更高。多年来,PT RTD一直用于实验室和工业过程中的温度测量,以其高精度、可重复性和稳定性而闻名。

文件下载:3328.pdf

要充分发挥PT100x RTD的精度,需要使用专门设计的放大器来读取低电阻,甚至能自动调整和补偿连接线的电阻。Adafruit推出的带有MAX31865传感器的RTD传感器放大器就是这样一款出色的产品。它能满足各种RTD需求,甚至可以补偿3线或4线RTD以提高精度。通过SPI与任何微控制器连接,即可读取内部ADC的电阻比。

二、引脚说明

1. 电源引脚

  • Vin:电源引脚。芯片使用3VDC,板上有电压调节器,可将3 - 5VDC安全转换。为板子供电时,使用与微控制器逻辑电平相同的电源,如Arduino等5V微控制器,就用5V供电。
  • 3Vo:电压调节器输出的3.3V,可从中获取高达100mA的电流。
  • GND:电源和逻辑的公共接地。

2. SPI逻辑引脚

所有进入扩展板的引脚都有电平转换电路,确保3 - 5V逻辑电平安全。可使用Vin上的任何逻辑电平。

  • SCK:SPI时钟引脚,是芯片的输入。
  • SDO:串行数据输出/微控制器输入、传感器输出引脚,用于从MAX31865向处理器发送数据。
  • SDI:串行数据输入/微控制器输出、传感器输入引脚,用于从处理器向MAX31865发送数据。
  • CS:芯片选择引脚,拉低该引脚可启动SPI事务,是芯片的输入。若要将多个MAX31865连接到一个微控制器,可让它们共享SDI、SDO和SCK引脚,为每个芯片分配一个唯一的CS引脚。
  • RDY(就绪):数据就绪指示引脚,若自行编写驱动程序,可使用该引脚加快读取速度。Adafruit的Arduino驱动程序为节省引脚未使用该引脚。

3. 传感器端子块

用于连接RTD传感器,有四个触点,可使用2线、3线或4线传感器。根据使用的线数,可能需要焊接或跳线某些焊盘。也可将3线或4线传感器当作3线或2线传感器使用(不连接多余的线)。

4. 配置跳线

默认情况下,传感器为4线RTD使用方式,但可轻松设置为2线或3线。

  • 4线使用:无需对跳线进行操作。
  • 3线使用:焊接闭合标记为2/3 Wire的跳线,切断Rref上方2路跳线左侧的连接线,然后焊接闭合标记为3的右侧跳线。
  • 2线使用:焊接闭合端子块下方的两个三角形跳线,或在两侧的两个端子块之间放置短跳线(本质上是将右侧的两个端子孔连接在一起,左侧同理)。

三、组装步骤

1. 准备排针

如有必要,将排针剪至合适长度。将其插入面包板,长引脚朝下,这样焊接会更方便。

2. 焊接

确保焊接所有引脚,以实现可靠的电气连接。若需要焊接技巧,可查看Adafruit的《优秀焊接指南》(https://adafru.it/aTk)。

3. 焊接端子块

将用于连接电源和电机的两个3.5mm端子块焊接到扩展板上。确保端子的开口部分朝外,以便轻松连接电线。可使用胶带或粘性粘土固定端子块,焊接完成后移除胶带。

四、RTD接线与配置

1. 4线RTD

4线RTD是最复杂的一种。对于低电阻电阻器的精确测量,需要考虑连接线的电阻。4线RTD的每一侧都有两根线连接,放大器会测量RTD两端的电压以及线对两端的电压,通过计算消除连接线电阻的影响。例如,在0°C时,4线PT100 RTD的中间电阻为102Ω(PT1000为1002Ω),连接线电阻约为2Ω。放大器测量时,会分别测量一组红、蓝线之间的电阻,以及红、蓝线之间的电阻,然后将这些电阻值除以2,最终得到准确的RTD电阻值。

2. 3线RTD

与4线RTD类似,但只有一对连接线。由于RTD的电线规格和长度基本相同,放大器只需读取一对线的电阻,并将其作为两根线的电阻。

3. 2线RTD

最简单的接线方式,每侧只有一根线。可能需要将传感器放入冰浴中进行校准,以确定0°C时的电阻(如102Ω),然后减去100Ω,得到连接线的总电阻。

4. 接线方法

  • 4线传感器:将四根线连接到相应的焊盘。使用万用表确定哪些线直接相连(它们之间的电阻约为2欧姆),哪些线通过RTD相连。通常,相连的线颜色相同。将相连的线对连接到左右两侧匹配的端子块,线对的内外顺序和左右位置无关紧要,无需焊接或切断跳线。
  • 3线传感器:将三根线连接到最右侧的三个触点。使用万用表确定哪些线直接相连,哪些线通过RTD相连。相连的两根线应连接到最右侧的端子块(标记为F+和RTD+),线对的内外顺序无关紧要。RTD另一侧的第三根线连接到左侧(标记为F - 或RTD - ),插槽位置无关紧要。需要切断板右侧2路跳线之间的细迹线,然后焊接闭合右侧的焊点,同时焊接闭合左侧端子块旁边的跳线,也可在端子块中插入一根线将它们“短路”。
  • 2线传感器:最简单的接线方式,可将每根线使用两侧的任意一个端子块插槽。然后焊接闭合RTD端子块旁边的跳线,或在左右端子块中插入小电线将它们短路。

五、Arduino代码实现

1. SPI接线

使用“软件”SPI进行接线,以下引脚可用于连接:

  • 将Vin连接到电源,3V或5V均可,使用与微控制器逻辑电平相同的电压,大多数Arduino使用5V。
  • 将GND连接到公共电源/数据接地。
  • 将CLK引脚连接到数字引脚#13,后续也可使用其他引脚。
  • 将SDO引脚连接到数字引脚#12,后续也可使用其他引脚。
  • 将SDI引脚连接到数字引脚#11,后续也可使用其他引脚。
  • 将CS引脚连接到数字引脚#10,后续也可使用其他引脚。

2. 下载Adafruit_MAX31865库

从Arduino库管理器中搜索并安装Adafruit MAX31865库。也可参考Adafruit的Arduino库安装教程(http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use )。

3. 连接PT100或PT1000 RTD

连接RTD传感器,根据实际情况调整跳线和接线。

4. 加载示例代码

打开File -> Examples -> Adafruit_MAX31865 -> max31865,上传到连接了传感器的Arduino。必要时调整max.begin(MAX31865_3WIRE) 行。上传后,以115200波特率打开串行控制台,查看传感器数据。MAX31865返回的是测量电阻与Rref参考电阻的比值,可据此计算电阻和温度。

5. 提高精度

Adafruit的库使用算法计算温度,虽效果良好,但并非最精确。可参考DrHaney的符合ITS - 90标准的库(https://adafru.it/Cbo),该库使用查找表以提高精度

6. 库参考

可使用软件SPI创建MAX31865对象:

// 使用软件SPI: CS, DI, DO, CLK
Adafruit_MAX31865 max = Adafruit_MAX31865(10, 11, 12, 13);

也可使用硬件SPI,但需使用Arduino的硬件SPI引脚:

// 使用硬件SPI,只需传入CS引脚
Adafruit_MAX31865 max = Adafruit_MAX31865(10);

根据连接的RTD类型初始化传感器:

max.begin(MAX31865_2WIRE);
max.begin(MAX31865_3WIRE);
max.begin(MAX31865_4WIRE);

7. 读取电阻

使用max.readRTD()读取原始的16位无符号值,将其转换为电阻的代码示例如下:

Serial.print("RTD value: ");
Serial.println(rtd);
float ratio = rtd;
ratio /= 32768;
Serial.print("Ratio = ");
Serial.println(ratio, 8);
Serial.print("Resistance = ");
Serial.println(RREF * ratio, 8);

需定义RREF,PT100为430.0,PT1000为4300.0。

8. 计算温度

可使用max.temperature(100, RREF)函数计算温度,第一个参数是RTD在0°C时的电阻(PT100为100),第二个参数是参考电阻值,该函数返回温度值(单位:°C)。

9. 故障检测

使用max.readFault()读取故障信息,返回一个uint8_t类型的值,每个位表示一种故障类型。可使用以下代码检测并打印故障信息:

// 检查并打印任何故障
uint8_t fault = max.readFault();
if (fault) {
    Serial.print("Fault 0x");
    Serial.println(fault, HEX);
    if (fault & MAX31865_FAULT_HIGHTHRESH) {
        Serial.println("RTD High Threshold");
    }
    if (fault & MAX31865_FAULT_LOWTHRESH) {
        Serial.println("RTD Low Threshold");
    }
    if (fault & MAX31865_FAULT_REFINLOW) {
        Serial.println("REFIN- > 0.85 x Bias");
    }
    if (fault & MAX31865_FAULT_REFINHIGH) {
        Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
    }
    if (fault & MAX31865_FAULT_RTDINLOW) {
        Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
    }
    if (fault & MAX31865_FAULT_OVUV) {
        Serial.println("Under/Over voltage");
    }
    max.clearFault();
}

六、Python与CircuitPython使用

1. 接线

  • CircuitPython微控制器接线:按照Arduino的接线方式将MAX31865连接到电路板。例如,将Feather M0与传感器通过SPI连接:将板的3V连接到传感器的VIN,板的GND连接到传感器的GND,板的SCK连接到传感器的CLK,板的MOSI连接到传感器的SDI,板的MISO连接到传感器的SDO,板的D5连接到传感器的CS(或其他数字I/O引脚)。
  • Python计算机接线:以树莓派为例,将Pi的3V3连接到传感器的VIN,Pi的GND连接到传感器的GND,Pi的MOSI连接到传感器的SDI,Pi的MISO连接到传感器的SDO,Pi的SCLK连接到传感器的CLK,Pi的GPIO5连接到传感器的CS(或其他空闲的GPIO引脚)。

2. 库安装

  • CircuitPython库安装:确保运行最新版本的Adafruit CircuitPython,然后从Adafruit的CircuitPython库包中安装必要的库,如adafruit_max31865.mpy和adafruit_bus_device。将这些文件复制到板的lib文件夹或根文件系统中。连接到板的串行REPL,进入CircuitPython >>> 提示符。
  • Python库安装:安装Adafruit_Blinka库以提供Python中的CircuitPython支持,可能需要在平台上启用I2C并确保运行Python 3。从命令行运行sudo pip3 install adafruit - circuitpython - max31865(若默认Python为版本3,可能只需运行pip)。

3. 使用示例

import board
import adafruit_max31865
import digitalio

spi = board.SPI()
cs = digitalio.DigitalInOut(board.D5)  # MAX31865板的芯片选择
sensor = adafruit_max31865.MAX31865(spi, cs)

# 可设置传感器的线数、标称电阻和参考电阻
# sensor = adafruit_max31865.MAX31865(spi, cs, wires=3, rtd_nominal=1000.0, ref_resistor=4300.0)

print('Temperature: {0:0.3f}C'.format(sensor.temperature))
print('Resistance: {0:0.3f} Ohms'.format(sensor.resistance))

七、常见问题解答

如何判断是100ohm还是1kohm的RTD扩展板?

Adafruit的扩展板有两种版本,分别使用不同的参考电阻。PID 3328(https://adafru.it/Scm)使用430Ω参考电阻,适用于100ohm RTD;PID 3648(https://adafru.it/Scn)使用4.3kΩ参考电阻,适用于1kohm RTD。可通过读取参考电阻的标签来确定,标记为4300或431是PT100,标记为4301或432是PT1000。同时,需在代码中更改RREF的值以匹配。

八、下载资源

总之,Adafruit MAX31865 RTD PT100/PT1000放大器为电子工程师提供了一个高精度、易于使用的温度传感解决方案。无论是在实验室还是工业应用中,都能帮助工程师准确测量温度。你在使用过程中遇到过哪些问题呢?欢迎分享交流。

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

全部0条评论

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

×
20
完善资料,
赚取积分