簡介
本教程基于零知標(biāo)準(zhǔn)板(主控芯片STM32F103RBT6),演示如何通過MAX31865模塊讀取三線制PT100鉑電阻溫度,并通過I2C OLED實(shí)時(shí)顯示溫度值和電阻值。重點(diǎn)包含硬件接線配置、三線制PT100的特殊跳線修改,以及完整的代碼解析。文中還將解析PT100的溫度計(jì)算原理,并展示實(shí)際運(yùn)行效果。
一、硬件簡介
1.MAX31865模塊
MAX31865是專用于RTD(電阻溫度檢測器)的信號調(diào)理芯片,支持2/3/4線制PT100/PT1000傳感器。其內(nèi)置ADC可將鉑電阻的阻值變化轉(zhuǎn)換為數(shù)字信號,并通過SPI接口與主控通信。關(guān)鍵特性:
15位分辨率
支持自動誤差補(bǔ)償
可配置參考電阻(Rref)
2.PT100鉑電阻
PT100是一種基于鉑材料的溫度傳感器,0℃時(shí)阻值為100Ω,溫度系數(shù)為0.385Ω/℃。其阻值與溫度的關(guān)系可通過以下方式計(jì)算:
線性近似公式(適用于0~100℃):
其中R0=100Ω,α=0.00385,T為溫度(℃)。
精確計(jì)算(使用Callendar-Van Dusen方程):
(適用于-200℃~850℃)
MAX31865的溫度計(jì)算
芯片內(nèi)部通過測量RTD電阻與參考電阻(Rref)的比例,結(jié)合查表法或公式計(jì)算實(shí)際溫度值。本代碼中調(diào)用max.temperature()函數(shù)即自動完成此過程。
二、硬件準(zhǔn)備
1.所需材料
零知標(biāo)準(zhǔn)板(STM32F103RBT6)
MAX31865模塊(支持三線制PT100)
三線制PT100傳感器
0.96寸I2C OLED顯示屏(SSD1306驅(qū)動)
杜邦線若干
2.MAX31865跳線修改
三線制PT100必須修改模塊電路板跳線!
找到MAX31865模塊上的Rref電阻附近的兩個(gè)跳線(標(biāo)記為2和4的焊盤)。
切斷Rref正上方左側(cè)的跳線(即斷開焊盤2的連接,保留焊盤3并短接),模塊使用三線制模式。采用三線PT100,其接法如下
修改后示意圖:
接線時(shí),請根據(jù)線纜顏色進(jìn)行正確連接:對于兩紅一藍(lán)的線纜,將藍(lán)線接至RTD-,紅線分別接至RTD+和F+。請參照圖示,確保將觸點(diǎn)(2/3 Wire)焊接牢固。若遇到兩藍(lán)一紅的線纜,則需反向連接。
重要提示:若未斷開24號連接,通電測量時(shí)PT100的電阻值將僅為正常值的一半。未通電時(shí)測量值約為120Ω,但通電后可能降至60Ω左右。這是由于24號連接之間存在接地,且存在并聯(lián)電阻,導(dǎo)致整體電阻值降低。
3.硬件接線
MAX31865與零知標(biāo)準(zhǔn)板連接:
MAX31865引腳 | 零知標(biāo)準(zhǔn)板引腳 | 功能說明 |
---|---|---|
VCC | 5V | 電源正極 |
GND | GND | 電源地 |
CLK | D13 | SPI時(shí)鐘線 |
SDO | D12 | SPI數(shù)據(jù)輸出 |
SDI | D11 | SPI數(shù)據(jù)輸入 |
CS | D10 | 片選信號 |
OLED與零知標(biāo)準(zhǔn)板連接:
OLED引腳 | 零知標(biāo)準(zhǔn)板引腳 | 功能說明 |
---|---|---|
VCC | 3V3 | 電源正極 |
GND | GND | 電源地 |
SDA | A4 | I2C數(shù)據(jù)線 |
SCL | A5 | I2C時(shí)鐘線 |
硬件連接圖:
實(shí)物連接圖:
三、代碼解析
1. 庫文件引入
?#include ??Arduino.h???> #include ??U8g2lib.h???> // OLED顯示驅(qū)動庫 #include ??Adafruit_MAX31865.h???> // MAX31865驅(qū)動庫
2. 初始化OLED和MAX31865
?// OLED初始化(I2C模式) U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE); // MAX31865參數(shù)配置 #define RREF 430.0 // 參考電阻值(根據(jù)模塊實(shí)際Rref電阻填寫) #define RTD 100.0 // PT100標(biāo)稱阻值 Adafruit_MAX31865 max = Adafruit_MAX31865(10, 11, 12, 13); // CS=10, SDI=11, SDO=12, CLK=13
3. 主程序邏輯
setup()函數(shù),
初始化串口、OLED和MAX31865,設(shè)置三線制模式:
?void setup() { Serial.begin(115200); u8g2.begin(); // 啟動OLED max.begin(MAX31865_3WIRE); // 三線制模式 }
loop()函數(shù),
循環(huán)讀取溫度并顯示:
? void loop() { uint16_t rtd = max.readRTD(); // 讀取原始RTD值 float ratio = rtd / 32768.0; // 計(jì)算電阻比例(RTD阻值 = RREF × ratio) float temp = max.temperature(RTD, RREF); // 轉(zhuǎn)換為溫度值 // OLED顯示溫度、電阻及狀態(tài) u8g2.clearBuffer(); u8g2.setCursor(0, 0); u8g2.print("MAX31865 PT100 Sensor"); u8g2.setCursor(0, 15); u8g2.print("Temp: "); u8g2.print(temp); u8g2.print(" C"); u8g2.setCursor(0, 30); u8g2.print("Resistance: "); u8g2.print(RREF * ratio); u8g2.print(" Ω"); // 錯(cuò)誤檢測處理 uint8_t fault = max.readFault(); if (fault) { u8g2.setCursor(0, 45); u8g2.print("FAULT DETECTED:"); if (fault & MAX31865_FAULT_HIGHTHRESH) u8g2.print("RTD High"); if (fault & MAX31865_FAULT_LOWTHRESH) u8g2.print("RTD Low"); max.clearFault(); } else { u8g2.setCursor(0, 45); u8g2.print("Status: OK"); } u8g2.sendBuffer(); // 串口打印數(shù)據(jù)(調(diào)試用) Serial.print("RTD Raw: "); Serial.print(rtd); Serial.print(", Temp: "); Serial.print(temp); Serial.print(" C, Resistance: "); Serial.print(RREF * ratio); Serial.println(" Ω"); if (fault) Serial.println("Fault Code: 0x" + String(fault, HEX)); delay(1000); } ?
四、運(yùn)行結(jié)果
將完整代碼上傳到零知開源平臺 ,完整工程如下:
通過網(wǎng)盤分享的文件:MAX31865_PT100.zip
鏈接: https://pan.baidu.com/s/1Huuuh6DqjP7cz0hpwn0c8g?pwd=22pg 提取碼: 22pg
1.OLED顯示內(nèi)容
第1行:標(biāo)題 "MAX31865 PT100 Sensor"
第2行:實(shí)時(shí)溫度(如 "Temp: 25.3 C")
第3行:鉑電阻阻值(如 "Resistance: 110.5 Ω")
第4~5行:狀態(tài)信息(正常顯示 "Status: OK",異常顯示具體錯(cuò)誤)
2.串口輸出內(nèi)容
打開零知開源平臺的串口監(jiān)視器(波特率115200),將看到以下格式數(shù)據(jù)和檢測到的故障碼:
3.數(shù)據(jù)關(guān)聯(lián)說明
RTD Raw值:MAX31865直接讀取的16位ADC原始數(shù)據(jù)(范圍0~32768)。
Resistance:根據(jù)公式
計(jì)算得出。
Temperature:調(diào)用庫函數(shù)自動轉(zhuǎn)換的溫度值,內(nèi)部使用Callendar-Van Dusen方程計(jì)算。
4.演示視頻
【STM32F1驅(qū)動MAX31865讀取三線PT100溫度傳感器】 https://www.bilibili.com/video/BV1Q9J4zfEHn/?share_source=copy_web&vd_source=75d3b293c1933aa8dc6757ac429e12da
五、常見問題
1.OLED無顯示
檢查A4/A5接線是否接觸不良。
確認(rèn)OLED的I2C地址是否匹配(默認(rèn)0x3C)。
2.溫度讀數(shù)異常
檢查MAX31865的RREF電阻值是否與代碼中#define RREF一致。
確認(rèn)PT100接線正確(三線制需連接RTD+、RTD-、F+)。
3.持續(xù)報(bào)錯(cuò)
檢查MAX31865的24焊盤跳線是否已切斷左側(cè)焊盤、2/3 Wire焊盤和43焊盤焊錫短接。
用萬用表測量PT100阻值是否正常(0℃時(shí)約100Ω,室溫30℃時(shí)約120Ω)。
審核編輯 黃宇
-
溫度傳感器
+關(guān)注
關(guān)注
48文章
3037瀏覽量
158812 -
MAX31865
+關(guān)注
關(guān)注
1文章
8瀏覽量
9639 -
stm32f1
+關(guān)注
關(guān)注
1文章
60瀏覽量
12503
發(fā)布評論請先 登錄
零知開源——STM32F4驅(qū)動MAX31865實(shí)現(xiàn)PT100高精度測溫

零知開源——STM32F4驅(qū)動MAX31865實(shí)現(xiàn)PT100高精度測溫

零知開源——STM32F1驅(qū)動MAX31865讀取三線PT100溫度傳感器
max31865測溫跳變大
RK3562開發(fā)板使用SPI掛載RTD溫度傳感器
ADS1247使用三線制PT100,如何判定PT100是否接入?
PT100溫度采集模塊性能特點(diǎn)
PT100溫度采集模塊
ADS1220用于三線制PT100測溫,溫度波動較大是什么原因?qū)е碌模?/a>
ADS1220用于三線制PT100溫度采樣,溫度變化緩慢的原因?怎么解決?
ADS1120接的PT100三線,校準(zhǔn)應(yīng)該如何做?
具有低側(cè)基準(zhǔn)和一個(gè)IDAC電流源的三線PT100 RTD測量電路

具有低側(cè)基準(zhǔn)的三線PT100 RTD測量電路

評論