Adafruit MCP9600 I2C 熱電偶放大器:高精度溫度測量的理想之選
在電子工程師的日常工作中,溫度測量是一個常見且重要的任務(wù)。熱電偶作為一種廣泛使用的溫度傳感器,具有測量范圍廣、響應(yīng)速度快等優(yōu)點,但它的輸出信號通常很微弱,需要一個高性能的放大器來進(jìn)行處理。Adafruit MCP9600 I2C 熱電偶放大器就是這樣一款優(yōu)秀的產(chǎn)品,今天我們就來詳細(xì)了解一下它。
文件下載:4101.pdf
產(chǎn)品概述
熱電偶對環(huán)境非常敏感,因此需要一個帶有冷補(bǔ)償參考的優(yōu)質(zhì)放大器。Adafruit MCP9600 正好滿足了這一需求,它可以輕松與任何支持 I2C 接口的微控制器或單板計算機(jī)連接。芯片內(nèi)部處理所有模擬信號,支持 K、J、T、N、S、E、B 和 R 等多種類型的熱電偶。此外,它還可以設(shè)置過溫/欠溫警報,并通過常見的 I2C 接口讀取熱電偶(熱端)溫度和芯片(冷端)溫度。
該 breakout 板集成了芯片、3.3V 穩(wěn)壓器和電平轉(zhuǎn)換電路,經(jīng)過組裝和測試,適用于 3.3V 或 5V 邏輯電平。板上配備了 2 針端子塊(用于連接熱電偶)和引腳頭(可插入面包板或?qū)嶒灠澹?/p>
主要特性
- 廣泛的熱電偶兼容性:支持 K、J、T、N、S、E、B 和 R 型熱電偶。
- 寬溫度測量范圍:不同類型的熱電偶有不同的測量范圍,例如 K 型為 -200°C 至 +1372°C,J 型為 -150°C 至 +1200°C 等。
- 高分辨率:分辨率為 ±0.0625 °C,但要注意 K 型熱電偶的精度約為 ±2°C 至 ±6°C。
- 內(nèi)部溫度讀取:可以讀取芯片內(nèi)部的溫度。
- 電源和邏輯電平兼容性:支持 3.3V 至 5V 的電源供應(yīng)和邏輯電平。
- I2C 數(shù)據(jù)連接:通過 I2C 接口進(jìn)行數(shù)據(jù)傳輸。
引腳說明
電源引腳
- Vin:電源引腳,芯片可處理 2.7V 至 5V 的電壓。建議使用與微控制器邏輯電平相同的電源,例如對于 5V 的 Arduino,使用 5V 電源。
- GND:電源和邏輯的公共接地引腳。
I2C 邏輯引腳
默認(rèn) I2C 地址為 0x67。
警報引腳
A1 - A4 為警報 1 - 4 輸出引腳。
地址引腳
ADDR:用于設(shè)置 I2C 地址。默認(rèn)情況下,ADDR 引腳連接到 Vin,將 I2C 地址設(shè)置為 0x67??梢允褂锰€或直接將 ADDR 引腳連接到 GND 來更改 I2C 地址。該 breakout 板支持總共五個 I2C 地址,這意味著可以在同一 I2C 總線上連接多達(dá)五個 MCP9600 breakout 板。
| 地址 | J1 | J2 |
|---|---|---|
| 0x67 | - | - |
| 0x66 | - | - |
| 0x65 | X | X |
| 0x64 | - | X |
| 0x60 | (ADDR 連接到 GND) | - |
不同平臺的使用方法
Arduino
接線
將 MCP9600 連接到 Feather 或 Metro / Arduino 非常簡單:
- 如果使用 Feather(3.3V),將 Feather 的 3V 連接到板的 VIN。
- 如果使用 5V 的 Arduino(如 Uno 等),將 Arduino 的 5V 連接到板的 VIN。
- 將 Feather 或 Arduino 的 GND 連接到板的 GND。
- 將 Feather 或 Arduino 的 SCL 連接到板的 SCL。
- 將 Feather 或 Arduino 的 SDA 連接到板的 SDA。
- 將熱電偶的 + 極連接到板的螺絲端子 +。
- 將熱電偶的 - 極連接到板的螺絲端子 -。
需要注意的是,即使沒有連接熱電偶,MCP9600 也會返回?zé)岫说臏囟戎?,并且不會報錯。
安裝
可以使用 Arduino IDE 中的庫管理器安裝 Adafruit MCP9600 庫。點擊“Manage Libraries...”菜單項,搜索“Adafruit MCP9600”,并選擇該庫進(jìn)行安裝。同時,還需要安裝 Adafruit BusIO 庫。
加載示例
打開“File -> Examples -> Adafruit MCP9600 -> mcp9600_test”,并將其上傳到連接了傳感器的 Arduino。上傳完成后,打開串口監(jiān)視器(“Tools -> Serial Monitor”),應(yīng)該可以看到熱端、冷端和 ADC 的值。
示例代碼
#include
#include
#include
#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");
/* 初始化驅(qū)動程序,使用 I2C_ADDRESS 和默認(rèn)的 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,溫度上升觸發(fā)
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);
}
Python & CircuitPython
接線
- CircuitPython 微控制器接線:與 Arduino 的接線方式相同,例如將 Feather M0 的 3V 連接到傳感器的 VIN,GND 連接到 GND,SCL 連接到 SCL,SDA 連接到 SDA。
- Python 計算機(jī)接線:以 Raspberry Pi 為例,將 Pi 的 3V3 連接到傳感器的 VIN,GND 連接到 GND,SCL 連接到 SCL,SDA 連接到 SDA。需要注意的是,較舊版本的 Raspberry Pi 固件可能不支持 I2C 時鐘拉伸,因此在使用前請確保將固件更新到最新版本,并適當(dāng)降低 I2C 頻率。
庫安裝
- CircuitPython 庫安裝:首先確保運行的是適用于您的電路板的最新版本的 Adafruit CircuitPython。然后從 Adafruit 的 CircuitPython 庫捆綁包中復(fù)制
adafruit_mcp9600.mpy和adafruit_bus_device到您的 CIRCUITPY 驅(qū)動器。 - Python 庫安裝:需要安裝 Adafruit_Blinka 庫以提供 Python 中的 CircuitPython 支持。這可能還需要在您的平臺上啟用 I2C 并確保運行的是 Python 3。安裝完成后,從命令行運行
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 板允許您在四個引腳上配置四個獨立的警報。將警報引腳連接到您的電路板或計算機(jī)的數(shù)字輸出引腳,并使用 MCP9600 庫中的警報配置功能進(jìn)行設(shè)置。具體的配置方法可以參考相關(guān)文檔。
總結(jié)
Adafruit MCP9600 I2C 熱電偶放大器是一款功能強(qiáng)大、使用方便的溫度測量解決方案。它具有廣泛的熱電偶兼容性、高分辨率和豐富的功能,適用于各種溫度測量應(yīng)用。無論是使用 Arduino 還是 Python/CircuitPython,都可以輕松地與 MCP9600 進(jìn)行集成,實現(xiàn)高精度的溫度測量和警報功能。
你在實際使用過程中是否遇到過類似的溫度測量問題?你對 Adafruit MCP9600 的性能有什么看法?歡迎在評論區(qū)分享你的經(jīng)驗和見解。
-
溫度測量
+關(guān)注
關(guān)注
0文章
233瀏覽量
29560 -
熱電偶放大器
+關(guān)注
關(guān)注
0文章
5瀏覽量
7100
發(fā)布評論請先 登錄
Adafruit MCP9600 I2C 熱電偶放大器:高精度溫度測量的理想之選
評論