Adafruit 1-Wire Thermocouple Amplifier - MAX31850K:高效温度测量解决方案

电子说

1.4w人已加入

描述

Adafruit 1-Wire Thermocouple Amplifier - MAX31850K:高效温度测量解决方案

在电子工程领域,精确的温度测量至关重要。今天,我们来详细介绍一款优秀的温度测量设备——Adafruit 1-Wire Thermocouple Amplifier - MAX31850K。

文件下载:1727.pdf

产品概述

热电偶是一种非常敏感的温度测量元件,需要一个带有冷补偿参考的优质放大器。此前我们使用过SPI接口的MAX31855热电偶放大器,它很不错,但当需要测量多个热电偶时,使用起来就不太方便了。而新的MAX31850K采用“1-Wire”接口,可在单条共享I/O线上连接任意数量的传感器,极大地简化了多热电偶测量的布线问题。

MAX31850K能完成所有的温度测量工作,并且可以轻松与任何支持1-Wire的微控制器进行接口。这款 breakout 板集成了芯片、3.3V 稳压器和 10uF 旁路电容,并且经过了测试。它既可以使用“寄生电源”(电源在数据线上),也可以使用“本地电源”(通过 Vin 引脚供电)。

需要注意的是,该板的 3V 数据线没有进行电平转换,这是为了使其能够在寄生模式下使用。如果连接到 5V 的微控制器,数据线必须进行电平转换,我们推荐使用 4 通道电平转换器(http://adafru.it/757),并且在“1-Wire 主机”端只需要一个转换器就可以处理共享数据线上的所有热电偶。

MAX31850K的数据格式与常见的 1-Wire DS18B20 温度传感器非常相似,但如果不修改代码来检查新的“1-Wire 家族”类型,它并不是直接兼容的。我们已经对经典的 Arduino OneWire() 和 DallasTemp() 库进行了修改,使其与 MAX31850 兼容,你可以点击相应链接下载这些库。

该套件还配备了 2 针端子块(用于连接热电偶)、4.7K 数据线上拉电阻和引脚头(可插入面包板或穿孔板)。它适用于任何 K 型热电偶,测量范围为 -270°C 至 +1370°C,分辨率为 0.25 度,还能读取内部温度。供电范围为 3.3V 至 5V,但数据线仅为 3V。

引脚说明

电源引脚

  • GND:公共接地线,需要连接到电源地和微控制器的数据参考地。即使使用“1-Wire 寄生电源”,也需要将其连接到微控制器。
  • VIN:如果不使用寄生电源,可提供 3 - 5V 的电源输入。连接 3 - 5V 直流电源后,MAX31850 将自动切换到外部电源。
  • 3V3:板载稳压器的 3.3V 输出,最大可提供 100mA 的电流。仅在外部供电时使用,在寄生模式下,该引脚无电压输出。

地址引脚

A0、A1、A2、A3 为地址引脚,但它们不影响 1-Wire 的“固定地址”。这些引脚设置的位可以从“配置”寄存器中读取,用于在连接多达 16 个不同的板时,方便识别各个板。默认情况下,这些引脚接地。你可以通过切断 3 路跳线之间的背面走线,然后将跳线焊接到另一侧或将引脚连接到 3V 或 GND 来改变其状态。

数据引脚

这是一个 1-Wire 设备,所有数据都通过单根引脚进行传输和接收,非常方便。微控制器还可以通过该线为传感器供电,实现三重功能。该引脚为 3V 逻辑电平,必须连接到 3V 输出引脚。如果使用 Arduino,由于其为 5V 逻辑电平,需要使用电平转换器。同时,需要在该引脚和 3V3 电源之间连接一个 4.7K 电阻。对于寄生电源,电阻应连接在微控制器一侧的数据线上;对于外部电源,电阻可以连接在数据线的任意一侧。

热电偶接口

板的另一侧有一个 3.5mm 端子块的接口,用于连接热电偶。由于热电偶线不能直接焊接,所以使用螺丝端子进行连接。请记住,该套件仅适用于 K 型热电偶。

组装步骤

准备引脚头

根据需要将引脚头切割成合适的长度。将其插入面包板,长引脚朝下,这样更便于焊接。

安装 breakout 板

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

焊接

确保焊接所有 5 个引脚,以实现可靠的电气连接。如果你需要焊接技巧方面的帮助,可以查看我们的《优秀焊接指南》。

安装端子块

端子块安装在板的顶部,开口端朝外。像焊接普通引脚头一样焊接两个焊盘,由于焊盘较大,需要使用较多的焊锡。

插入热电偶线

插入热电偶线,并使用小的 Phillips 或一字螺丝刀拧紧夹子。

接线与测试

接线模式

可以采用寄生电源和外部电源两种接线模式。

  • 寄生电源:所有数据和电源都通过单根数据线和接地线传输,布线更简单,但对电源波动比较敏感。
  • 外部电源:数据线和接地线与寄生电源模式相同,但需要单独的电源供应。虽然需要更多的电线,但读数更稳定。

如果连接到 5V 的微控制器(如 Arduino),两种模式都需要对数据线进行电平转换。如果使用 3V 逻辑微控制器,则可以跳过 4 通道电平转换器。

外部电源接线

  • 将 GND 连接到 Arduino 的接地引脚(黑色线)。
  • 将 Vin 连接到 Arduino 的 5V 引脚(也可以连接到 3 - 5V DC 的外部电池)(红色线)。
  • 将共享数据线连接到电平转换器的 A1 引脚(绿色线)。
  • 将一个 4.7K 电阻从共享数据线连接到 3V。
  • 将电平转换器的 B1 连接到 Arduino 的 #2 引脚(蓝色线)。
  • 将电平转换器的 HV 连接到 Arduino 的 5V(红色线)。
  • 将电平转换器的 LV 连接到 Arduino 的 3V(黄色线)。

寄生电源接线

与外部电源接线类似,但不连接 breakout 板的 Vin 引脚。如果传感器离 Arduino 较远,可以将数据线和接地线延长至 10 米。

下载 Arduino 库

对于 1-Wire 设备,我们需要使用 OneWire 库和修改后的 DallasTemp 库。原始的 DallasTemp 库不支持 MAX31850,因此我们对其进行了修改。下载这两个库后,将其重命名并放置在 sketchbookfolder/libraries/ 文件夹中,然后重启 Arduino IDE。

运行示例代码

运行 DallasTemp 多个示例代码,上传到 Arduino 后,打开串口控制台,你将看到检测到的传感器数量、是否使用寄生电源、设备地址和温度等信息。

外部电源与寄生电源对比

在外部电源模式下,温度读数更接近真实温度(室温约 72°F),因为电源供应更稳定。如果使用寄生电源,可能需要计算温度偏移(校准传感器)以获得准确的温度读数。

编写自己的代码

OneWire 和 DallasTemp 库功能强大,但对于大多数人来说,只需要在项目中打印出温度即可。下面是一个简单的代码示例,用于处理任意数量的传感器,打印出温度和唯一 ID 号的最后两个字节:

#include < OneWire.h >
#include < DallasTemperature.h >

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/
// Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature. 
DeviceAddress addr;

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
  // Start up the library
  sensors.begin();
}

void loop(void)
{
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  for (uint8_t s = 0; s < sensors.getDeviceCount(); s++) {
    // get the unique address 
    sensors.getAddress(addr, s);
    // just look at bottom two bytes, which is pretty likely to be unique
    int smalladdr = (addr[6] < < 8) | addr[7];
    Serial.print("Temperature for the device #");
    Serial.print(s);
    Serial.print(" with ID #");
    Serial.print(smalladdr);
    Serial.print(" is: ");
    Serial.println(sensors.getTempCByIndex(s));
  }
}

读取地址引脚

如果想读取地址引脚,可以使用较低级别的 OneWire 库。打开 OneWire->MAX31850_Temperature 示例并加载到 Arduino 中。在 MAX31850 breakout 板的背面,切断跳线之间的焊盘,通过连接不同的 Ax 引脚到 3V 或 GND,可以改变地址值。打开串口控制台,你将看到传感器的数据、地址和温度信息。这是处理具有唯一 ROM 地址的传感器“热插拔”的一种好方法。

更多资源

相关阅读

数据手册和文件

  • MAX31850 数据手册
  • Adafruit Fritzing 库中的 Fritzing 对象
  • GitHub 上的 EagleCAD PCB 文件

总之,Adafruit 1-Wire Thermocouple Amplifier - MAX31850K 是一款功能强大、使用方便的温度测量设备,无论是在单热电偶测量还是多热电偶测量场景中,都能提供准确可靠的温度数据。你在使用过程中遇到过哪些问题呢?欢迎在评论区分享你的经验。

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

全部0条评论

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

×
20
完善资料,
赚取积分