电子说
在电子工程师的日常工作中,温度测量是一个常见且重要的任务。热电偶作为一种广泛使用的温度传感器,具有测量范围广、响应速度快等优点,但它的输出信号通常很微弱,需要一个高性能的放大器来进行处理。Adafruit MCP9600 I2C 热电偶放大器就是这样一款优秀的产品,今天我们就来详细了解一下它。
文件下载:4101.pdf
热电偶对环境非常敏感,因此需要一个带有冷补偿参考的优质放大器。Adafruit MCP9600 正好满足了这一需求,它可以轻松与任何支持 I2C 接口的微控制器或单板计算机连接。芯片内部处理所有模拟信号,支持 K、J、T、N、S、E、B 和 R 等多种类型的热电偶。此外,它还可以设置过温/欠温警报,并通过常见的 I2C 接口读取热电偶(热端)温度和芯片(冷端)温度。
该 breakout 板集成了芯片、3.3V 稳压器和电平转换电路,经过组装和测试,适用于 3.3V 或 5V 逻辑电平。板上配备了 2 针端子块(用于连接热电偶)和引脚头(可插入面包板或实验板)。
默认 I2C 地址为 0x67。
A1 - A4 为警报 1 - 4 输出引脚。
ADDR:用于设置 I2C 地址。默认情况下,ADDR 引脚连接到 Vin,将 I2C 地址设置为 0x67。可以使用跳线或直接将 ADDR 引脚连接到 GND 来更改 I2C 地址。该 breakout 板支持总共五个 I2C 地址,这意味着可以在同一 I2C 总线上连接多达五个 MCP9600 breakout 板。
| 地址 | J1 | J2 |
|---|---|---|
| 0x67 | - | - |
| 0x66 | - | - |
| 0x65 | X | X |
| 0x64 | - | X |
| 0x60 | (ADDR 连接到 GND) | - |
将 MCP9600 连接到 Feather 或 Metro / Arduino 非常简单:
需要注意的是,即使没有连接热电偶,MCP9600 也会返回热端的温度值,并且不会报错。
可以使用 Arduino IDE 中的库管理器安装 Adafruit MCP9600 库。点击“Manage Libraries...”菜单项,搜索“Adafruit MCP9600”,并选择该库进行安装。同时,还需要安装 Adafruit BusIO 库。
打开“File -> Examples -> Adafruit MCP9600 -> mcp9600_test”,并将其上传到连接了传感器的 Arduino。上传完成后,打开串口监视器(“Tools -> Serial Monitor”),应该可以看到热端、冷端和 ADC 的值。
#include < Wire.h >
#include < Adafruit_I2CDevice.h >
#include < Adafruit_I2CRegister.h >
#include "Adafruit_MCP9600.h"
#define I2C_ADDRESS (0x67)
Adafruit_MCP9600 mcp;
void setup() {
Serial.begin(115200);
while (!Serial) {
delay(10);
}
Serial.println("MCP9600 HW test");
/* 初始化驱动程序,使用 I2C_ADDRESS 和默认的 I2C 总线。 */
if (!mcp.begin(I2C_ADDRESS)) {
Serial.println("Sensor not found. Check wiring!");
while (1);
}
Serial.println("Found MCP9600!");
mcp.setADCresolution(MCP9600_ADCRESOLUTION_18);
Serial.print("ADC resolution set to ");
switch (mcp.getADCresolution()) {
case MCP9600_ADCRESOLUTION_18:
Serial.print("18");
break;
case MCP9600_ADCRESOLUTION_16:
Serial.print("16");
break;
case MCP9600_ADCRESOLUTION_14:
Serial.print("14");
break;
case MCP9600_ADCRESOLUTION_12:
Serial.print("12");
break;
}
Serial.println(" bits");
mcp.setThermocoupleType(MCP9600_TYPE_K);
Serial.print("Thermocouple type set to ");
switch (mcp.getThermocoupleType()) {
case MCP9600_TYPE_K:
Serial.print("K");
break;
case MCP9600_TYPE_J:
Serial.print("J");
break;
case MCP9600_TYPE_T:
Serial.print("T");
break;
case MCP9600_TYPE_N:
Serial.print("N");
break;
case MCP9600_TYPE_S:
Serial.print("S");
break;
case MCP9600_TYPE_E:
Serial.print("E");
break;
case MCP9600_TYPE_R:
Serial.print("R");
break;
case MCP9600_TYPE_B:
Serial.print("B");
break;
}
Serial.println(" type");
mcp.setFilterCoefficient(3);
Serial.print("Filter coefficient value set to: ");
Serial.println(mcp.getFilterCoefficient());
mcp.setAlertTemperature(1, 30);
Serial.print("Alert #1 temperature set to ");
Serial.println(mcp.getAlertTemperature(1));
mcp.configureAlert(1, true, true); // 启用警报 1,温度上升触发
mcp.enable(true);
Serial.println(F("------------------------------"));
}
void loop() {
Serial.print("Hot Junction: ");
Serial.println(mcp.readThermocouple());
Serial.print("Cold Junction: ");
Serial.println(mcp.readAmbient());
Serial.print("ADC: ");
Serial.print(mcp.readADC() * 2);
Serial.println(" uV");
delay(1000);
}
adafruit_mcp9600.mpy 和 adafruit_bus_device 到您的 CIRCUITPY 驱动器。pip3 install adafruit-circuitpython-mcp9600。以下是一个简单的示例代码,用于初始化传感器并读取温度值:
import board
import busio
import adafruit_mcp9600
i2c = busio.I2C(board.SCL, board.SDA, frequency=100000)
mcp = adafruit_mcp9600.MCP9600(i2c)
while True:
print((mcp.ambient_temperature, mcp.temperature, mcp.delta_temperature))
time.sleep(1)
MCP9600 breakout 板允许您在四个引脚上配置四个独立的警报。将警报引脚连接到您的电路板或计算机的数字输出引脚,并使用 MCP9600 库中的警报配置功能进行设置。具体的配置方法可以参考相关文档。
Adafruit MCP9600 I2C 热电偶放大器是一款功能强大、使用方便的温度测量解决方案。它具有广泛的热电偶兼容性、高分辨率和丰富的功能,适用于各种温度测量应用。无论是使用 Arduino 还是 Python/CircuitPython,都可以轻松地与 MCP9600 进行集成,实现高精度的温度测量和警报功能。
你在实际使用过程中是否遇到过类似的温度测量问题?你对 Adafruit MCP9600 的性能有什么看法?欢迎在评论区分享你的经验和见解。
全部0条评论
快来发表一下你的评论吧 !