Adafruit MAX31865 RTD PT100/PT1000放大器:高精度溫度傳感解決方案
一、概述
在精密溫度傳感領(lǐng)域,鉑電阻溫度探測器(RTD)是無可比擬的選擇。RTD是一種溫度傳感器,其內(nèi)部電阻會隨溫度變化而改變,本質(zhì)上類似于熱敏電阻。在這類傳感器中,電阻是一小條鉑,在0°C時電阻值為100或1000歐姆,因此被稱為PT100/PT1000。與大多數(shù)NTC/PTC熱敏電阻相比,PT類型的RTD更加穩(wěn)定和精確,但價格也更高。多年來,PT RTD一直用于實驗室和工業(yè)過程中的溫度測量,以其高精度、可重復性和穩(wěn)定性而聞名。
文件下載:3328.pdf
要充分發(fā)揮PT100x RTD的精度,需要使用專門設(shè)計的放大器來讀取低電阻,甚至能自動調(diào)整和補償連接線的電阻。Adafruit推出的帶有MAX31865傳感器的RTD傳感器放大器就是這樣一款出色的產(chǎn)品。它能滿足各種RTD需求,甚至可以補償3線或4線RTD以提高精度。通過SPI與任何微控制器連接,即可讀取內(nèi)部ADC的電阻比。
二、引腳說明
1. 電源引腳
- Vin:電源引腳。芯片使用3VDC,板上有電壓調(diào)節(jié)器,可將3 - 5VDC安全轉(zhuǎn)換。為板子供電時,使用與微控制器邏輯電平相同的電源,如Arduino等5V微控制器,就用5V供電。
- 3Vo:電壓調(diào)節(jié)器輸出的3.3V,可從中獲取高達100mA的電流。
- GND:電源和邏輯的公共接地。
2. SPI邏輯引腳
所有進入擴展板的引腳都有電平轉(zhuǎn)換電路,確保3 - 5V邏輯電平安全。可使用Vin上的任何邏輯電平。
- SCK:SPI時鐘引腳,是芯片的輸入。
- SDO:串行數(shù)據(jù)輸出/微控制器輸入、傳感器輸出引腳,用于從MAX31865向處理器發(fā)送數(shù)據(jù)。
- SDI:串行數(shù)據(jù)輸入/微控制器輸出、傳感器輸入引腳,用于從處理器向MAX31865發(fā)送數(shù)據(jù)。
- CS:芯片選擇引腳,拉低該引腳可啟動SPI事務(wù),是芯片的輸入。若要將多個MAX31865連接到一個微控制器,可讓它們共享SDI、SDO和SCK引腳,為每個芯片分配一個唯一的CS引腳。
- RDY(就緒):數(shù)據(jù)就緒指示引腳,若自行編寫驅(qū)動程序,可使用該引腳加快讀取速度。Adafruit的Arduino驅(qū)動程序為節(jié)省引腳未使用該引腳。
3. 傳感器端子塊
用于連接RTD傳感器,有四個觸點,可使用2線、3線或4線傳感器。根據(jù)使用的線數(shù),可能需要焊接或跳線某些焊盤。也可將3線或4線傳感器當作3線或2線傳感器使用(不連接多余的線)。
4. 配置跳線
默認情況下,傳感器為4線RTD使用方式,但可輕松設(shè)置為2線或3線。
- 4線使用:無需對跳線進行操作。
- 3線使用:焊接閉合標記為2/3 Wire的跳線,切斷Rref上方2路跳線左側(cè)的連接線,然后焊接閉合標記為3的右側(cè)跳線。
- 2線使用:焊接閉合端子塊下方的兩個三角形跳線,或在兩側(cè)的兩個端子塊之間放置短跳線(本質(zhì)上是將右側(cè)的兩個端子孔連接在一起,左側(cè)同理)。
三、組裝步驟
1. 準備排針
如有必要,將排針剪至合適長度。將其插入面包板,長引腳朝下,這樣焊接會更方便。
2. 焊接
確保焊接所有引腳,以實現(xiàn)可靠的電氣連接。若需要焊接技巧,可查看Adafruit的《優(yōu)秀焊接指南》(https://adafru.it/aTk)。
3. 焊接端子塊
將用于連接電源和電機的兩個3.5mm端子塊焊接到擴展板上。確保端子的開口部分朝外,以便輕松連接電線??墒褂媚z帶或粘性粘土固定端子塊,焊接完成后移除膠帶。
四、RTD接線與配置
1. 4線RTD
4線RTD是最復雜的一種。對于低電阻電阻器的精確測量,需要考慮連接線的電阻。4線RTD的每一側(cè)都有兩根線連接,放大器會測量RTD兩端的電壓以及線對兩端的電壓,通過計算消除連接線電阻的影響。例如,在0°C時,4線PT100 RTD的中間電阻為102Ω(PT1000為1002Ω),連接線電阻約為2Ω。放大器測量時,會分別測量一組紅、藍線之間的電阻,以及紅、藍線之間的電阻,然后將這些電阻值除以2,最終得到準確的RTD電阻值。
2. 3線RTD
與4線RTD類似,但只有一對連接線。由于RTD的電線規(guī)格和長度基本相同,放大器只需讀取一對線的電阻,并將其作為兩根線的電阻。
3. 2線RTD
最簡單的接線方式,每側(cè)只有一根線。可能需要將傳感器放入冰浴中進行校準,以確定0°C時的電阻(如102Ω),然后減去100Ω,得到連接線的總電阻。
4. 接線方法
- 4線傳感器:將四根線連接到相應(yīng)的焊盤。使用萬用表確定哪些線直接相連(它們之間的電阻約為2歐姆),哪些線通過RTD相連。通常,相連的線顏色相同。將相連的線對連接到左右兩側(cè)匹配的端子塊,線對的內(nèi)外順序和左右位置無關(guān)緊要,無需焊接或切斷跳線。
- 3線傳感器:將三根線連接到最右側(cè)的三個觸點。使用萬用表確定哪些線直接相連,哪些線通過RTD相連。相連的兩根線應(yīng)連接到最右側(cè)的端子塊(標記為F+和RTD+),線對的內(nèi)外順序無關(guān)緊要。RTD另一側(cè)的第三根線連接到左側(cè)(標記為F - 或RTD - ),插槽位置無關(guān)緊要。需要切斷板右側(cè)2路跳線之間的細跡線,然后焊接閉合右側(cè)的焊點,同時焊接閉合左側(cè)端子塊旁邊的跳線,也可在端子塊中插入一根線將它們“短路”。
- 2線傳感器:最簡單的接線方式,可將每根線使用兩側(cè)的任意一個端子塊插槽。然后焊接閉合RTD端子塊旁邊的跳線,或在左右端子塊中插入小電線將它們短路。
五、Arduino代碼實現(xiàn)
1. SPI接線
使用“軟件”SPI進行接線,以下引腳可用于連接:
- 將Vin連接到電源,3V或5V均可,使用與微控制器邏輯電平相同的電壓,大多數(shù)Arduino使用5V。
- 將GND連接到公共電源/數(shù)據(jù)接地。
- 將CLK引腳連接到數(shù)字引腳#13,后續(xù)也可使用其他引腳。
- 將SDO引腳連接到數(shù)字引腳#12,后續(xù)也可使用其他引腳。
- 將SDI引腳連接到數(shù)字引腳#11,后續(xù)也可使用其他引腳。
- 將CS引腳連接到數(shù)字引腳#10,后續(xù)也可使用其他引腳。
2. 下載Adafruit_MAX31865庫
從Arduino庫管理器中搜索并安裝Adafruit MAX31865庫。也可參考Adafruit的Arduino庫安裝教程(http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use )。
3. 連接PT100或PT1000 RTD
連接RTD傳感器,根據(jù)實際情況調(diào)整跳線和接線。
4. 加載示例代碼
打開File -> Examples -> Adafruit_MAX31865 -> max31865,上傳到連接了傳感器的Arduino。必要時調(diào)整max.begin(MAX31865_3WIRE) 行。上傳后,以115200波特率打開串行控制臺,查看傳感器數(shù)據(jù)。MAX31865返回的是測量電阻與Rref參考電阻的比值,可據(jù)此計算電阻和溫度。
5. 提高精度
Adafruit的庫使用算法計算溫度,雖效果良好,但并非最精確??蓞⒖糄rHaney的符合ITS - 90標準的庫(https://adafru.it/Cbo),該庫使用查找表以提高精度。
6. 庫參考
可使用軟件SPI創(chuàng)建MAX31865對象:
// 使用軟件SPI: CS, DI, DO, CLK
Adafruit_MAX31865 max = Adafruit_MAX31865(10, 11, 12, 13);
也可使用硬件SPI,但需使用Arduino的硬件SPI引腳:
// 使用硬件SPI,只需傳入CS引腳
Adafruit_MAX31865 max = Adafruit_MAX31865(10);
根據(jù)連接的RTD類型初始化傳感器:
max.begin(MAX31865_2WIRE);
max.begin(MAX31865_3WIRE);
max.begin(MAX31865_4WIRE);
7. 讀取電阻
使用max.readRTD()讀取原始的16位無符號值,將其轉(zhuǎn)換為電阻的代碼示例如下:
Serial.print("RTD value: ");
Serial.println(rtd);
float ratio = rtd;
ratio /= 32768;
Serial.print("Ratio = ");
Serial.println(ratio, 8);
Serial.print("Resistance = ");
Serial.println(RREF * ratio, 8);
需定義RREF,PT100為430.0,PT1000為4300.0。
8. 計算溫度
可使用max.temperature(100, RREF)函數(shù)計算溫度,第一個參數(shù)是RTD在0°C時的電阻(PT100為100),第二個參數(shù)是參考電阻值,該函數(shù)返回溫度值(單位:°C)。
9. 故障檢測
使用max.readFault()讀取故障信息,返回一個uint8_t類型的值,每個位表示一種故障類型。可使用以下代碼檢測并打印故障信息:
// 檢查并打印任何故障
uint8_t fault = max.readFault();
if (fault) {
Serial.print("Fault 0x");
Serial.println(fault, HEX);
if (fault & MAX31865_FAULT_HIGHTHRESH) {
Serial.println("RTD High Threshold");
}
if (fault & MAX31865_FAULT_LOWTHRESH) {
Serial.println("RTD Low Threshold");
}
if (fault & MAX31865_FAULT_REFINLOW) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (fault & MAX31865_FAULT_REFINHIGH) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (fault & MAX31865_FAULT_RTDINLOW) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (fault & MAX31865_FAULT_OVUV) {
Serial.println("Under/Over voltage");
}
max.clearFault();
}
六、Python與CircuitPython使用
1. 接線
- CircuitPython微控制器接線:按照Arduino的接線方式將MAX31865連接到電路板。例如,將Feather M0與傳感器通過SPI連接:將板的3V連接到傳感器的VIN,板的GND連接到傳感器的GND,板的SCK連接到傳感器的CLK,板的MOSI連接到傳感器的SDI,板的MISO連接到傳感器的SDO,板的D5連接到傳感器的CS(或其他數(shù)字I/O引腳)。
- Python計算機接線:以樹莓派為例,將Pi的3V3連接到傳感器的VIN,Pi的GND連接到傳感器的GND,Pi的MOSI連接到傳感器的SDI,Pi的MISO連接到傳感器的SDO,Pi的SCLK連接到傳感器的CLK,Pi的GPIO5連接到傳感器的CS(或其他空閑的GPIO引腳)。
2. 庫安裝
- CircuitPython庫安裝:確保運行最新版本的Adafruit CircuitPython,然后從Adafruit的CircuitPython庫包中安裝必要的庫,如adafruit_max31865.mpy和adafruit_bus_device。將這些文件復制到板的lib文件夾或根文件系統(tǒng)中。連接到板的串行REPL,進入CircuitPython >>> 提示符。
- Python庫安裝:安裝Adafruit_Blinka庫以提供Python中的CircuitPython支持,可能需要在平臺上啟用I2C并確保運行Python 3。從命令行運行
sudo pip3 install adafruit - circuitpython - max31865(若默認Python為版本3,可能只需運行pip)。
3. 使用示例
import board
import adafruit_max31865
import digitalio
spi = board.SPI()
cs = digitalio.DigitalInOut(board.D5) # MAX31865板的芯片選擇
sensor = adafruit_max31865.MAX31865(spi, cs)
# 可設(shè)置傳感器的線數(shù)、標稱電阻和參考電阻
# sensor = adafruit_max31865.MAX31865(spi, cs, wires=3, rtd_nominal=1000.0, ref_resistor=4300.0)
print('Temperature: {0:0.3f}C'.format(sensor.temperature))
print('Resistance: {0:0.3f} Ohms'.format(sensor.resistance))
七、常見問題解答
如何判斷是100ohm還是1kohm的RTD擴展板?
Adafruit的擴展板有兩種版本,分別使用不同的參考電阻。PID 3328(https://adafru.it/Scm)使用430Ω參考電阻,適用于100ohm RTD;PID 3648(https://adafru.it/Scn)使用4.3kΩ參考電阻,適用于1kohm RTD??赏ㄟ^讀取參考電阻的標簽來確定,標記為4300或431是PT100,標記為4301或432是PT1000。同時,需在代碼中更改RREF的值以匹配。
八、下載資源
- Fritzing對象:Adafruit Fritzing庫(https://adafru.it/c7M)
- EagleCAD PCB文件:GitHub(https://adafru.it/swF)
- 庫文件:GitHub(https://adafru.it/swA)
- MAX31865數(shù)據(jù)手冊:(https://adafru.it/sxa)
- 基于查找表的高精度庫(適用于高級用戶):(https://adafru.it/uBo)
總之,Adafruit MAX31865 RTD PT100/PT1000放大器為電子工程師提供了一個高精度、易于使用的溫度傳感解決方案。無論是在實驗室還是工業(yè)應(yīng)用中,都能幫助工程師準確測量溫度。你在使用過程中遇到過哪些問題呢?歡迎分享交流。
-
溫度傳感
+關(guān)注
關(guān)注
3文章
61瀏覽量
28108
發(fā)布評論請先 登錄
Adafruit MCP9600 I2C 熱電偶放大器:高精度溫度測量的理想之選
MAX31865讀取出錯是什么原因?qū)е碌??如何解決?
基于STM32F103C8T6驅(qū)動MAX31865鉑電阻溫度模塊溫度采集PT100_PT1000溫度信號
深入解析MAX31865:RTD到數(shù)字轉(zhuǎn)換器的卓越之選
基于 LES30-PT100-RS485 的水務(wù)水廠管道防凍測溫智能監(jiān)控解決方案
Lesminer LES30-PT100-RS485 PT100 溫度采集模塊:工業(yè)寬溫高精度測溫的硬核之選
高精度運算放大器MAX4237:設(shè)計中的得力助手
工業(yè)測溫選PT100還是PT1000?
STM32F407ZGT6驅(qū)動MAX31865獲取PT100溫度數(shù)據(jù)
零知開源——STM32F4驅(qū)動MAX31865實現(xiàn)PT100高精度測溫
零知開源——STM32F4驅(qū)動MAX31865實現(xiàn)PT100高精度測溫
零知開源——STM32F1驅(qū)動MAX31865讀取三線PT100溫度傳感器
零知開源——STM32F1驅(qū)動MAX31865讀取三線PT100溫度傳感器
Adafruit MAX31865 RTD PT100/PT1000放大器:高精度溫度傳感解決方案
評論