电子说
在电子工程领域,热电偶是一种常用的温度测量元件,但它非常敏感,需要一个优秀的放大器以及冷补偿参考,同时还需要处理非线性问题的计算。此前,我们常推荐 MAX31855K 开发板,不过它仅适用于 K 型热电偶。现在,Adafruit 推出了一款出色的新型热电偶放大器/转换器——MAX31856,它几乎可以处理任何类型的热电偶,甚至能在温度超出范围或出现故障时发出通知。
文件下载:3263.pdf
这款转换器通过 4 线 SPI 进行通信,可与 K、J、N、R、S、T、E 或 B 型热电偶接口。开发板集成了芯片、3.3V 稳压器和电平转换电路,经过组装和测试。它还配备了 2 针端子块(用于连接热电偶)和引脚头(可插入面包板或穿孔板),并且按照 Maxim 的建议,板上添加了串联电阻和滤波电容以提高稳定性。
其主要特性如下:
所有进入开发板的引脚都有电平转换电路,使其在 3 - 5V 逻辑电平下安全。使用 Vin 上的逻辑电平即可。
必要时将引脚排裁剪到合适的长度。将其插入面包板(长引脚朝下),这样焊接会更容易。
将开发板放在引脚上,使短引脚穿过开发板的焊盘。
确保焊接所有 5 个引脚,以实现可靠的电气连接。如果需要焊接技巧,可以查看 Adafruit 优秀焊接指南。接下来安装端子块,这是用于连接热电偶的,因为不能直接焊接热电偶。端子块安装在顶部,开口端朝外,然后像焊接普通引脚排一样焊接两个焊盘,由于焊盘较大,需要较多的焊料。最后插入热电偶线,用小的 Phillips 或平头螺丝刀拧紧夹子。
可以使用硬件或“软件”SPI 进行接线。为了使所有 Arduino 的接线相同,先使用“软件”SPI。接线如下:
要开始读取传感器数据,需要从 Arduino 库管理器中安装 Adafruit MAX31856 库。打开 Arduino 库管理器,搜索 Adafruit MAX31856 库并安装。也可以查看 Arduino 库安装教程。
需要连接一个热电偶,本演示使用 K 型热电偶,如果没有 K 型热电偶,可以调整演示代码。
打开 File -> Examples -> Adafruit_MAX31856 -> max31856,将代码上传到连接了传感器的 Arduino。如有必要,调整 max.setThermocoupleType(MAX31856_TCTYPE_K) 行。上传代码后,打开串口监视器,波特率设置为 115200,即可看到冷端温度(微控制器芯片的温度)和热电偶温度(热电偶探头末端检测到的温度)的输出。还可以通过断开一个引脚来检测一些可检测的故障。
// 使用软件 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) 设置热电偶类型,可选类型有:
max.getThermocoupleType() 查询。max.readCJTemperature();也可以读取热电偶末端的温度:max.readThermocoupleTemperature()。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 摄氏度。
sudo pip3 install adafruit-circuitpython-max31856
如果默认 Python 是版本 3,可能需要运行 'pip' 而不是 'pip3',但要确保不使用 Python 2.x,因为不支持。
以下是使用 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 通用热电偶放大器有了全面的了解。在实际应用中,你可以根据自己的需求选择合适的接线方式和编程语言,利用其强大的功能进行温度测量和故障检测。你在使用过程中遇到过哪些问题呢?欢迎在评论区分享。
全部0条评论
快来发表一下你的评论吧 !