Adafruit MAX31856 通用熱電偶放大器:設(shè)計(jì)與應(yīng)用全解析
一、概述
在電子工程領(lǐng)域,熱電偶是一種常用的溫度測(cè)量元件,但它非常敏感,需要一個(gè)優(yōu)秀的放大器以及冷補(bǔ)償參考,同時(shí)還需要處理非線性問題的計(jì)算。此前,我們常推薦 MAX31855K 開發(fā)板,不過它僅適用于 K 型熱電偶。現(xiàn)在,Adafruit 推出了一款出色的新型熱電偶放大器/轉(zhuǎn)換器——MAX31856,它幾乎可以處理任何類型的熱電偶,甚至能在溫度超出范圍或出現(xiàn)故障時(shí)發(fā)出通知。
文件下載:3263.pdf
這款轉(zhuǎn)換器通過 4 線 SPI 進(jìn)行通信,可與 K、J、N、R、S、T、E 或 B 型熱電偶接口。開發(fā)板集成了芯片、3.3V 穩(wěn)壓器和電平轉(zhuǎn)換電路,經(jīng)過組裝和測(cè)試。它還配備了 2 針端子塊(用于連接熱電偶)和引腳頭(可插入面包板或穿孔板),并且按照 Maxim 的建議,板上添加了串聯(lián)電阻和濾波電容以提高穩(wěn)定性。
其主要特性如下:
- 廣泛的熱電偶兼容性:適用于 K、J、N、R、S、T、E 或 B 型熱電偶。
- 寬溫度范圍和高分辨率:輸出范圍為 -210°C 至 +1800°C,分辨率為 0.0078125°。不過要注意,許多熱電偶的精度約為 ±2°C 至 ±6°C,具體取決于溫度和類型,所以分辨率比精度要高很多。
- 內(nèi)部溫度讀取:可以讀取芯片內(nèi)部的溫度。
- 電源和邏輯電平兼容性:支持 3.3 至 5V 電源和邏輯電平。
- SPI 數(shù)據(jù)接口:只需要 4 個(gè)數(shù)字 I/O 引腳。
二、引腳說明
1. 電源引腳
- Vin:這是電源引腳。由于傳感器芯片使用 3VDC,板上集成了一個(gè)穩(wěn)壓器,可將 3 - 5VDC 安全轉(zhuǎn)換。為開發(fā)板供電時(shí),應(yīng)使用與微控制器邏輯電平相同的電源,例如對(duì)于 5V 的 Arduino 微控制器,使用 5V 電源。
- 3Vo:這是穩(wěn)壓器的 3.3V 輸出,可從中獲取高達(dá) 100mA 的電流。
- GND:電源和邏輯的公共接地端。
2. SPI 邏輯引腳
所有進(jìn)入開發(fā)板的引腳都有電平轉(zhuǎn)換電路,使其在 3 - 5V 邏輯電平下安全。使用 Vin 上的邏輯電平即可。
- SCK:SPI 時(shí)鐘引腳,是芯片的輸入。
- SDO:串行數(shù)據(jù)輸出/微控制器輸入、傳感器輸出引腳,用于從 MAX31856 向處理器發(fā)送數(shù)據(jù)。
- SDI:串行數(shù)據(jù)輸入/微控制器輸出、傳感器輸入引腳,用于從處理器向 MAX31856 發(fā)送數(shù)據(jù)。
- CS:芯片選擇引腳,將其拉低可開始 SPI 事務(wù),是芯片的輸入。如果要將多個(gè) MAX31856 連接到一個(gè)微控制器,可以讓它們共享 SDI、SDO 和 SCK 引腳,然后為每個(gè)芯片分配一個(gè)唯一的 CS 引腳。
3. 額外引腳
- FLT:故障輸出引腳。如果使用 MAX31856 的閾值通知功能,可以監(jiān)控此引腳,當(dāng)它變?yōu)榈碗娖綍r(shí)表示有故障。
- DRDY:用于高級(jí)應(yīng)用,可讓傳感器開始讀數(shù),然后等待此引腳變?yōu)榈碗娖?。在庫代碼中,為了簡(jiǎn)單起見使用了延遲/等待方式,不過如果需要也可以使用此引腳。
三、組裝步驟
1. 準(zhǔn)備引腳排
必要時(shí)將引腳排裁剪到合適的長度。將其插入面包板(長引腳朝下),這樣焊接會(huì)更容易。
2. 添加開發(fā)板
將開發(fā)板放在引腳上,使短引腳穿過開發(fā)板的焊盤。
3. 焊接
確保焊接所有 5 個(gè)引腳,以實(shí)現(xiàn)可靠的電氣連接。如果需要焊接技巧,可以查看 Adafruit 優(yōu)秀焊接指南。接下來安裝端子塊,這是用于連接熱電偶的,因?yàn)椴荒苤苯雍附訜犭娕?。端子塊安裝在頂部,開口端朝外,然后像焊接普通引腳排一樣焊接兩個(gè)焊盤,由于焊盤較大,需要較多的焊料。最后插入熱電偶線,用小的 Phillips 或平頭螺絲刀擰緊夾子。
四、接線與測(cè)試
1. SPI 接線
可以使用硬件或“軟件”SPI 進(jìn)行接線。為了使所有 Arduino 的接線相同,先使用“軟件”SPI。接線如下:
- 將 Vin 連接到電源,3V 或 5V 均可,使用與微控制器邏輯電平相同的電壓。對(duì)于大多數(shù) Arduino,是 5V。
- 將 GND 連接到公共電源/數(shù)據(jù)接地端。
- 將 SCK 引腳連接到數(shù)字引腳 #13(后續(xù)可以使用任何引腳)。
- 將 SDO 引腳連接到數(shù)字引腳 #12(后續(xù)可以使用任何引腳)。
- 將 SDI 引腳連接到數(shù)字引腳 #11(后續(xù)可以使用任何引腳)。
- 將 CS 引腳連接到數(shù)字引腳 #10(后續(xù)可以使用任何引腳)。
2. 下載 Adafruit_MAX31856 庫
要開始讀取傳感器數(shù)據(jù),需要從 Arduino 庫管理器中安裝 Adafruit MAX31856 庫。打開 Arduino 庫管理器,搜索 Adafruit MAX31856 庫并安裝。也可以查看 Arduino 庫安裝教程。
3. 連接熱電偶
需要連接一個(gè)熱電偶,本演示使用 K 型熱電偶,如果沒有 K 型熱電偶,可以調(diào)整演示代碼。
4. 加載演示
打開 File -> Examples -> Adafruit_MAX31856 -> max31856,將代碼上傳到連接了傳感器的 Arduino。如有必要,調(diào)整 max.setThermocoupleType(MAX31856_TCTYPE_K) 行。上傳代碼后,打開串口監(jiān)視器,波特率設(shè)置為 115200,即可看到冷端溫度(微控制器芯片的溫度)和熱電偶溫度(熱電偶探頭末端檢測(cè)到的溫度)的輸出。還可以通過斷開一個(gè)引腳來檢測(cè)一些可檢測(cè)的故障。
5. 庫參考
- 創(chuàng)建對(duì)象:可以使用軟件 SPI 創(chuàng)建 MAX31856 對(duì)象,所有四個(gè)引腳可以是任何 I/O 引腳:
// 使用軟件 SPI: CS, DI, DO, CLK Adafruit_MAX31856 max = Adafruit_MAX31856(10, 11, 12, 13);也可以使用硬件 SPI,但必須使用 Arduino 的硬件 SPI 引腳(每種 Arduino 類型的引腳不同),可以查看 SPI 參考。在這種情況下,可以使用任何 CS 引腳,其他三個(gè)引腳是固定的:
// 使用硬件 SPI,只需傳入 CS 引腳 Adafruit_MAX31856 max = Adafruit_MAX31856(10); - 初始化傳感器:使用
max.begin()初始化傳感器。 - 設(shè)置熱電偶類型:使用
max.setThermocoupleType(MAX31856_TCTYPE_xxx)設(shè)置熱電偶類型,可選類型有:- MAX31856_TCTYPE_B
- MAX31856_TCTYPE_E
- MAX31856_TCTYPE_J
- MAX31856_TCTYPE_K
- MAX31856_TCTYPE_N
- MAX31856_TCTYPE_R
- MAX31856_TCTYPE_S
- MAX31856_TCTYPE_T
- MAX31856_VMODE_G8
- MAX31856_VMODE_G32
最后兩個(gè)不是熱電偶類型,是“普通”電壓讀數(shù)模式(更多細(xì)節(jié)可查看數(shù)據(jù)手冊(cè),庫中未使用這些模式)。如果不確定當(dāng)前模式,可以使用
max.getThermocoupleType()查詢。
- 讀取溫度:可以讀取冷端溫度(返回浮點(diǎn)型攝氏度讀數(shù),即 MAX31856 芯片內(nèi)部檢測(cè)到的溫度):
max.readCJTemperature();也可以讀取熱電偶末端的溫度:max.readThermocoupleTemperature()。 - 故障檢測(cè):MAX31856 有廣泛的故障檢測(cè)機(jī)制,可以通過引腳或函數(shù)在出現(xiàn)問題時(shí)發(fā)出警報(bào)。使用
max.readFault()讀取故障,它將返回一個(gè) uint8_t 類型,每個(gè)位代表 8 種不同的故障類型之一。可以使用以下代碼測(cè)試每種故障類型: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"); }對(duì)于冷端溫度和熱電偶溫度的高低閾值,可以使用以下函數(shù)設(shè)置:
// 冷端溫度閾值 max.setColdJunctionFaultThreshholds(lowtemp, hightemp); // 熱電偶溫度閾值 setTempFaultThreshholds(lowtemp, hightemp);其中,冷端溫度閾值范圍為 -127 至 +127 攝氏度,熱電偶溫度閾值是浮點(diǎn)型數(shù)字,范圍為 -4096 至 +4096,分辨率為 0.0625 攝氏度。
五、Python 與 CircuitPython 的使用
1. 接線
- CircuitPython 微控制器接線:將 MAX31856 按照前面 Arduino 的接線方式連接到開發(fā)板。例如,將 Feather M0 連接到傳感器:
- 開發(fā)板 3V 連接到傳感器 VIN
- 開發(fā)板 GND 連接到傳感器 GND
- 開發(fā)板 SCK 連接到傳感器 SCK
- 開發(fā)板 MISO 連接到傳感器 SDO
- 開發(fā)板 MOSI 連接到傳感器 SDI
- 開發(fā)板 D5 連接到傳感器 CS(或任何其他空閑數(shù)字 I/O 引腳) 連接到微控制器后,確保將熱電偶連接到開發(fā)板的端子上。
- Python 計(jì)算機(jī)接線:以 Raspberry Pi 為例,接線如下:
- Pi 3V 連接到傳感器 VIN
- Pi GND 連接到傳感器 GND
- Pi SCK 連接到傳感器 SCK
- Pi MISO 連接到傳感器 SDO
- Pi MOSI 連接到傳感器 SDI
- Pi D5 連接到傳感器 CS(或任何其他空閑數(shù)字 I/O 引腳) 連接到 Raspberry Pi 后,同樣要將熱電偶連接到開發(fā)板的端子上。
2. 庫安裝
- CircuitPython 安裝 MAX31856 庫:首先確保運(yùn)行的是適用于開發(fā)板的最新版本的 Adafruit CircuitPython。然后從 Adafruit 的 CircuitPython 庫包中安裝必要的庫,例如對(duì)于非 Express 開發(fā)板(如 Trinket M0、Gemma M0 和 Feather/Metro M0 basic),需要手動(dòng)從庫包中安裝以下文件:
- adafruit_max31856.mpy
- adafruit_bus_device 在繼續(xù)之前,確保開發(fā)板的 lib 文件夾中已經(jīng)復(fù)制了 adafruit_max31856.mpy 和 adafruit_bus_device 文件和文件夾。最后連接到開發(fā)板的串行 REPL,進(jìn)入 CircuitPython >>> 提示符。
- Python 安裝 MAX31856 庫:需要安裝提供 Python 中 CircuitPython 支持的 Adafruit_Blinka 庫,這可能還需要在平臺(tái)上啟用 I2C 并驗(yàn)證運(yùn)行的是 Python 3。由于每個(gè)平臺(tái)有所不同,且 Linux 經(jīng)常變化,請(qǐng)查看 CircuitPython on Linux 指南 準(zhǔn)備好計(jì)算機(jī)。完成后,從命令行運(yùn)行以下命令:
sudo pip3 install adafruit-circuitpython-max31856如果默認(rèn) Python 是版本 3,可能需要運(yùn)行 'pip' 而不是 'pip3',但要確保不使用 Python 2.x,因?yàn)椴恢С帧?/p>
3. 使用示例
以下是使用 CircuitPython 讀取溫度的示例代碼:
import board
import digitalio
import adafruit_max31856
# 創(chuàng)建 SPI 連接
spi = board.SPI()
# 分配 CS 引腳并設(shè)置方向
cs = digitalio.DigitalInOut(board.D5)
cs.direction = digitalio.Direction.OUTPUT
# 創(chuàng)建熱電偶對(duì)象
thermocouple = adafruit_max31856.MAX31856(spi, cs)
# 讀取溫度
print(thermocouple.temperature)
六、下載資源
- Fritzing 對(duì)象:Adafruit Fritzing 庫中的 Fritzing 對(duì)象
- EagleCAD PCB 文件:GitHub 上的 EagleCAD PCB 文件
- 庫文件:GitHub 上的庫
- MAX31856 數(shù)據(jù)手冊(cè):MAX31856 數(shù)據(jù)手冊(cè)
通過以上介紹,你應(yīng)該對(duì) Adafruit MAX31856 通用熱電偶放大器有了全面的了解。在實(shí)際應(yīng)用中,你可以根據(jù)自己的需求選擇合適的接線方式和編程語言,利用其強(qiáng)大的功能進(jìn)行溫度測(cè)量和故障檢測(cè)。你在使用過程中遇到過哪些問題呢?歡迎在評(píng)論區(qū)分享。
-
溫度測(cè)量
+關(guān)注
關(guān)注
0文章
233瀏覽量
29561 -
熱電偶放大器
+關(guān)注
關(guān)注
0文章
5瀏覽量
7100
發(fā)布評(píng)論請(qǐng)先 登錄
Adafruit MCP9600 I2C 熱電偶放大器:高精度溫度測(cè)量的理想之選
Thermocouple Amplifier MAX31855 Breakout Board:替代MAX6675的理想之選
MAX31856 SPI的各個(gè)腳需要上拉和下拉嗎?
Adafruit 1-Wire Thermocouple Amplifier - MAX31850K:高效溫度測(cè)量解決方案
MAX31856:高精度熱電偶數(shù)字轉(zhuǎn)換器的深度解析
電子工程師設(shè)計(jì)秘籍:AD594/AD595單芯片熱電偶放大器解析
關(guān)于功率器件的熱電偶測(cè)量位置指南
常用熱電偶(TC)測(cè)溫原理
探索MAX2630 - MAX2633:VHF到微波通用放大器
Adafruit MAX31856 通用熱電偶放大器:設(shè)計(jì)與應(yīng)用全解析
評(píng)論