概述
熱電偶是一種溫度傳感器。
與TMP36等半導(dǎo)體溫度傳感器不同,熱電偶內(nèi)部沒有電子器件,它們只需將兩條金屬線焊接在一起即可。由于兩種連接金屬的物理作用,導(dǎo)線兩端的電壓會隨著溫度的升高而輕微但可測量。使用的金屬類型會影響電壓范圍,成本和靈敏度,這就是為什么我們有幾種不同類型的熱電偶的原因。在半導(dǎo)體傳感器或熱敏電阻上使用熱電偶的主要改進是溫度范圍大大增加。例如,TMP36的溫度可從-50升至150°C,之后芯片本身可能會損壞。另一方面,普通的熱電偶的溫度范圍可以從-200°C到1350°C(K型),有些可以超過2300°C!
熱電偶通常用于HVAC系統(tǒng),加熱器和鍋爐,窯爐等。有幾種不同的類型,但是本教程將討論K類型,這是非常常見的,并且更易于與之交互。
使用它們的一個困難是被測電壓很小,并且變化很大。每°C約50 uV(uV為1/1000000伏)。雖然可以使用干凈的電源和良好的運算放大器來讀取這些電壓,但還有其他復(fù)雜性,例如非線性響應(yīng)(并非總是50uV/°C)和冷溫度補償(僅測量到的影響)差分,并且必須有一個參考,就像接地是電壓的參考一樣)。因此,我們建議僅使用可以為您完成繁重工作的接口芯片,讓您輕松集成傳感器而不會帶來太多麻煩。在本教程中,我們將使用一個甚至不需要ADC的MAX6675 K熱電偶接口芯片,吐出一個很好的溫度數(shù)字數(shù)據(jù)信號。
一些基本統(tǒng)計信息
這是用于帶有玻璃編織層的K型熱電偶
尺寸: 24米長1米(
價格:在adafruit商店中的價格為10美元
溫度范圍: -100°C到500°C/-150到900°F(此后可能會損壞玻璃編織層)
輸出范圍: -6至+ 20mV
精度: +-2°C
需要一個放大器,例如MAX31855
接口: MAX6675(已停產(chǎn))或AD595(模擬)
K熱電偶數(shù)據(jù)表
MAX6675數(shù)據(jù)表
MAX31855數(shù)據(jù)表
接線熱電偶
正如我們之前提到的那樣,對于大多數(shù)人來說,嘗試實際測量導(dǎo)線上的電壓將非常困難,因此我們強烈建議使用熱電偶接口芯片。到目前為止,我們所見過的最好的是MAX6675(及其替代版本稱為MAX31855),不幸的是,僅提供SOIC封裝。盡管焊接起來不太困難,但我們在商店中仍準備好可以使用的分線板。
首先要確定哪根電線是哪根。您還記得,熱電偶是通過將兩根導(dǎo)線焊接在一起制成的,芯片讀取兩者之間的電壓差。一個是負極(對于K型由Alumel制成),另一個是正極(同上,Chromel)。幸運的是,電線采用了顏色編碼,幾乎所有時間您都會發(fā)現(xiàn)Alumel為紅色,Chromel為黃色。
根據(jù)需要將導(dǎo)線連接到放大器:
MAX6675和MAX31855熱電偶放大器與接地的熱電偶不兼容。
我們已經(jīng)看到一些K型熱電偶,其引線標(biāo)記不正確,因此如果您發(fā)現(xiàn)熱電偶溫度下降而不是加熱時上升,嘗試交換紅色和黃色電線
Arduino代碼
如果您使用的是AD595接口芯片,則只需將電壓輸出連接到微控制器上的模擬輸入,然后進行一些基本數(shù)學(xué)運算即可將將10 mV/°C輸入到數(shù)字輸出中。
如果您打算使用MAX6675/MAX31855,還有更多工作要做。首先,Vin和GND必須連接到3-5V電源。然后,三個數(shù)據(jù)引腳必須連接到數(shù)字IO引腳:
CLK (時鐘)是MAX6675/MAX31855的輸入(微控制器的輸出),指示何時顯示另一位數(shù)據(jù)
DO (數(shù)據(jù)輸出)是MAX6675/MAX31855的輸出(微控制器的輸入),帶有數(shù)據(jù)的每一位
CS (片選)是MAX6675/MAX31855的輸入(微控制器的輸出),它告訴芯片何時是時候讀取熱電偶并輸出更多數(shù)據(jù)了。
在我們的草圖的開頭,我們定義了這些引腳。對于我們的示例, DO 連接到數(shù)字3 , CS 連接到數(shù)字4, CLK 連接到引腳5
在嘈雜的環(huán)境中,MAX31855 v1.0可能需要在熱電偶引線之間添加一個0.01uF電容器。
MAX31855不支持接地的熱電偶-如果傳感器接地,芯片將返回錯誤
Arduino庫
如果您有較舊的MAX6675分支,請從Arduino庫管理器中下載 Adafruit MAX6675 庫。
如果您具有較新的MAX31855分支,請從以下位置下載 Adafruit MAX31855 庫:
打開Arduino庫管理器:
如果有MAX6675分組,請搜索 MAX6 675 庫并安裝
如果有MAX31855分組,請搜索 Adafruit MAX31855 庫并安裝它
打開文件 -》 示例-》 MAX6675/Adafruit_MAX31855 -》 serialthermocouple 草圖并將其上傳到Arduino。上傳后,打開串行端口監(jiān)視器以顯示攝氏溫度和華氏溫度的當(dāng)前溫度。
我們還提供了有關(guān)Arduino庫安裝的出色教程,網(wǎng)址為:
http ://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
readCelsius()或 readFahrenheit()以獲取浮點結(jié)果。
添加顯示 通常的要求是將溫度輸出到本教程中的“經(jīng)典”字符LCD上。
為此接線,我們將 CLK 連接到數(shù)字 3 , CS 轉(zhuǎn)換為數(shù)字 4 和 DO 轉(zhuǎn)換為數(shù)字 5。一旦工作,就可以更改草圖中的引腳連接
我們也有一個示例草圖。首先按照我們的教程使LCD工作。現(xiàn)在加載新草圖文件-》示例 -》 MAX31855 》 lcd熱電偶并像在串行熱電偶測試中一樣插入熱電偶模塊,您會看到內(nèi)部溫度和熱電偶溫度以攝氏度顯示。
Python和CircuitPython
將MAX31855傳感器與Python和CircuitPython以及Adafruit CircuitPython MAX31855模塊一起使用很容易。此模塊使您可以輕松編寫可從熱電偶讀取溫度的Python代碼。
您可以將此傳感器與任何CircuitPython微控制器板或具有GPIO和Python的計算機一起使用,這要歸功于我們的CircuitPython支持的Adafruit_Blinka -Python兼容性庫。
CircuitPython微控制器接線
首先,按照與Arduino前幾頁完全相同的方式將aMAX31855連接到您的電路板上。下面是將Feather M0連接到傳感器的示例:
板3V 至 sensorVdd
板GND 至傳感器GND
板卡SCK 到 sensorCLK
板卡MISO sensorDO
D5板到傳感器CS (或任何其他免費的數(shù)字I/O引腳)
Python計算機接線
由于您可以使用數(shù)十種Linux計算機/主板,因此我們將顯示Raspberry Pi的接線。對于其他平臺,請訪問Linux上的CircuitPython指南,以了解您的平臺是否受支持。
以下是連接SPI的Raspberry Pi:
Pi 3.3V 到傳感器 Vin
Pi GND 到傳感器 GND
Pi SCLK 到傳感器 CLK
Pi MISO 到傳感器 DO
Pi GPIO 5 至傳感器 CS
MAX31855庫的CircuitPython安裝
接下來您需要在電路Python板上安裝Adafruit CircuitPython MAX31855庫
首先請確保您正在為板運行最新版本的Adafruit CircuitPython。
下一步,您需要安裝必要的庫才能使用硬件-認真按照以下步驟從Adafruit的CircuitPython庫捆綁包中查找和安裝這些庫。例如,Circuit Playground Express指南上有一個很棒的頁面,說明如何為快速和非表達板安裝庫包。
記住非表達板,例如Trinket M0,Gemma M0和Feather/Metro M0 basic,您需要從捆綁包中手動安裝必要的庫:
adafruit_max31855.mpy
adafruit_bus_device 》
在繼續(xù)之前,請確保您開發(fā)板的lib文件夾或根文件系統(tǒng)具有 adafruit_max31855.mpy,和 adafruit_bus_device 。
下一步連接到開發(fā)板的串行REPL,這樣您就可以在CircuitPython上得到》》》 提示。
MAX31855庫的Python安裝
您需要安裝Adafruit_Blinka庫,該庫在Python中提供了CircuitPython支持。這可能還需要在您的平臺上啟用I2C并驗證您正在運行Python3。由于每個平臺都略有不同,并且Linux經(jīng)常更改,請訪問Linux上的CircuitPython指南以準備好您的計算機!
完成后,從命令行運行以下命令:
sudo pip3 install adafruit-circuitpython-max31855
如果您的默認Python是版本3,則可能需要改為運行“ pip”。只要確保您不嘗試在Python 2.x上使用CircuitPython,就不支持它!
CircuitPython和Python的用法
為演示傳感器的用法,我們將對其進行初始化并讀取溫度。首先通過運行以下命令初始化SPI連接和庫:
下載:文件
復(fù)制代碼
import board
import busio
import digitalio
import adafruit_max31855
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
cs = digitalio.DigitalInOut(board.D5)
max31855 = adafruit_max31855.MAX31855(spi, cs) import board
import busio
import digitalio
import adafruit_max31855
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
cs = digitalio.DigitalInOut(board.D5)
max31855 = adafruit_max31855.MAX31855(spi, cs)
現(xiàn)在,您可以讀取溫度屬性,以從攝氏度中檢索傳感器的溫度:
下載:文件
復(fù)制代碼
print(‘Temperature: {} degrees C’.format(max31855.temperature)) print(‘Temperature: {} degrees C’.format(max31855.temperature))
使用MAX31855和CircuitPython代碼讀取溫度就是全部!
完整示例代碼
下載:Project Zip 或 max31855_simpletest.py | 在Github上查看
復(fù)制代碼
import time
import board
import busio
import digitalio
import adafruit_max31855
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
cs = digitalio.DigitalInOut(board.D5)
max31855 = adafruit_max31855.MAX31855(spi, cs)
while True:
tempC = max31855.temperature
tempF = tempC * 9 / 5 + 32
print(‘Temperature: {} C {} F ’.format(tempC, tempF))
time.sleep(2.0)
import time
import board
import busio
import digitalio
import adafruit_max31855
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
cs = digitalio.DigitalInOut(board.D5)
max31855 = adafruit_max31855.MAX31855(spi, cs)
while True:
tempC = max31855.temperature
tempF = tempC * 9 / 5 + 32
print(‘Temperature: {} C {} F ’.format(tempC, tempF))
time.sleep(2.0)
常見問題解答
我的熱電偶的溫度似乎向后!如果我加熱探頭,則報告的溫度會降低
由于熱電偶線的標(biāo)簽不正確。嘗試交換兩條熱電偶引線,即使黃色和紅色的導(dǎo)線在正確的插槽中-我們也看到一些熱電偶的導(dǎo)線顏色錯誤。
》
我的MAX31855輸出確實不穩(wěn)定且嘈雜-如果我觸摸或移動探頭,溫度輸出會發(fā)瘋
MAX31855具有令人驚訝的靈敏性,我們發(fā)現(xiàn)一種解決此問題的好方法是在熱電偶引線上放置一個0.01uF至0.1uF的電容器(即,將電容器放入藍色接線盒中,或焊接到底部,如下所示。
我的熱電偶輸出有一個偏移量/我有多個熱電偶,但它們在溫度上“不同意”
K熱電偶不是精確的溫度測量設(shè)備!熱電偶之間會有偏移和差異。我們建議,大多數(shù)熱電偶溫度計都通過軟件校正了偏移量。有關(guān)校準的提示,請參見本指南:
傳感器校準
對于精確的溫度測量,我們建議使用1%的熱敏電阻。
如何連接多個熱電偶?
您最多可以連接MAX31855你有別針。只需共享所有分支的CLK和DO引腳,并且每個引腳都有一個唯一的CS引腳即可。然后,您可以使用以下樣式創(chuàng)建新的熱電偶:
Adafruit_MAX31855熱電偶1(thermoCLK,thermoCS1, thermoDO);
Adafruit_MAX31855熱電偶2(thermoCLK,thermoCS2,thermoDO);
Adafruit_MAX31855熱電偶3(thermoCLK,thermoCS3,thermoDO);
您也可以嘗試使用相同的CS和CLK引腳,但使用所有不同的DO引腳
Adafruit_MAX31855熱電偶1(thermoCLK,thermoCS,thermoDO1);
Adafruit_MAX31855熱電偶2 (thermoCLK,thermoCS,thermoDO2);
Adafruit_MAX31855熱電偶3(thermoCLK,thermoCS,thermoDO3);
在極高或極低的溫度下,測量結(jié)果不正確
熱電偶線性化
項目示例
需要想法嗎?看看這些項目!
Jeelabs詳細介紹了回流控制器(使用AD595型芯片)
Terran的PI控制的咖啡烘焙機
RocketNumberNine的回流焊機項目
下載
數(shù)據(jù)表和文件 strong》
MAX31855數(shù)據(jù)表
MAX6675原理圖和布局文件位于GitHub
MAX31855原理圖和布局文件位于GitHub
在Adafruit Fritzing庫中為兩個對象都打褶
示意圖
點擊以嵌入
Fabric Print
責(zé)任編輯:wv
-
熱電偶
+關(guān)注
關(guān)注
5文章
970瀏覽量
76662 -
MAX31855
+關(guān)注
關(guān)注
2文章
7瀏覽量
16430
發(fā)布評論請先 登錄
相關(guān)推薦
熱電偶如何選型
無線測溫熱電偶工作原理
鎧裝熱電偶的結(jié)構(gòu)原理
熱電偶的溫度范圍
【熱電偶測溫】何為熱電偶?

評論