电子说
在电子工程领域,精确的温度测量至关重要。今天,我们来详细介绍一款优秀的温度测量设备——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。
A0、A1、A2、A3 为地址引脚,但它们不影响 1-Wire 的“固定地址”。这些引脚设置的位可以从“配置”寄存器中读取,用于在连接多达 16 个不同的板时,方便识别各个板。默认情况下,这些引脚接地。你可以通过切断 3 路跳线之间的背面走线,然后将跳线焊接到另一侧或将引脚连接到 3V 或 GND 来改变其状态。
这是一个 1-Wire 设备,所有数据都通过单根引脚进行传输和接收,非常方便。微控制器还可以通过该线为传感器供电,实现三重功能。该引脚为 3V 逻辑电平,必须连接到 3V 输出引脚。如果使用 Arduino,由于其为 5V 逻辑电平,需要使用电平转换器。同时,需要在该引脚和 3V3 电源之间连接一个 4.7K 电阻。对于寄生电源,电阻应连接在微控制器一侧的数据线上;对于外部电源,电阻可以连接在数据线的任意一侧。
板的另一侧有一个 3.5mm 端子块的接口,用于连接热电偶。由于热电偶线不能直接焊接,所以使用螺丝端子进行连接。请记住,该套件仅适用于 K 型热电偶。
根据需要将引脚头切割成合适的长度。将其插入面包板,长引脚朝下,这样更便于焊接。
将 breakout 板放在引脚头上,使短引脚穿过板上的焊盘。
确保焊接所有 5 个引脚,以实现可靠的电气连接。如果你需要焊接技巧方面的帮助,可以查看我们的《优秀焊接指南》。
端子块安装在板的顶部,开口端朝外。像焊接普通引脚头一样焊接两个焊盘,由于焊盘较大,需要使用较多的焊锡。
插入热电偶线,并使用小的 Phillips 或一字螺丝刀拧紧夹子。
可以采用寄生电源和外部电源两种接线模式。
如果连接到 5V 的微控制器(如 Arduino),两种模式都需要对数据线进行电平转换。如果使用 3V 逻辑微控制器,则可以跳过 4 通道电平转换器。
与外部电源接线类似,但不连接 breakout 板的 Vin 引脚。如果传感器离 Arduino 较远,可以将数据线和接地线延长至 10 米。
对于 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 地址的传感器“热插拔”的一种好方法。
总之,Adafruit 1-Wire Thermocouple Amplifier - MAX31850K 是一款功能强大、使用方便的温度测量设备,无论是在单热电偶测量还是多热电偶测量场景中,都能提供准确可靠的温度数据。你在使用过程中遇到过哪些问题呢?欢迎在评论区分享你的经验。
全部0条评论
快来发表一下你的评论吧 !