使用熱敏電阻是一種簡(jiǎn)單而廉價(jià)的感測(cè)溫度的方法。為了用熱敏電阻測(cè)量精確的溫度,需要一個(gè)微控制器。因此,在這里我們使用帶有熱敏電阻的Arduino來讀取溫度,并使用LCD來顯示溫度。它可用于各種項(xiàng)目,例如遠(yuǎn)程氣象站,家庭自動(dòng)化以及工業(yè)和電子設(shè)備的保護(hù)和控制。
在本教程中,我們將把熱敏電阻與Arduino接口,并在LCD上顯示溫度。
所需組件:
NTC熱敏電阻 10k
Arduino (任何版本)
10k 歐姆電阻器
連接線
電路圖
熱敏電阻根據(jù)其中電阻的變化提供溫度值。在該電路中,Arduino中的模擬引腳與熱敏電阻連接,只能提供ADC值,因此不直接計(jì)算熱敏電阻的電阻。因此,通過將已知的10k歐姆電阻與NTC串聯(lián),使電路類似于上圖所示的分壓器電路。使用此分壓器,我們可以獲得熱敏電阻兩端的電壓,使用該電壓我們可以得出熱敏電阻在該時(shí)刻的電阻。最后,我們可以通過將熱敏電阻的電阻放入斯坦-哈特方程中獲得溫度值,如下一節(jié)所述。
熱敏電阻
該電路中的關(guān)鍵元件是熱敏電阻,它已被用于檢測(cè)溫度升高。熱敏電阻是溫度敏感電阻,其電阻隨溫度變化。有兩種類型的熱敏電阻NTC(負(fù)溫度系數(shù))和PTC(正溫度系數(shù)),我們使用NTC型熱敏電阻。NTC熱敏電阻是一種電阻器,其電阻隨著溫度的升高而減小,而在PTC中,電阻會(huì)隨著溫度的升高而增加。
使用熱敏電阻計(jì)算溫度:
我們從分壓器電路中得知:
Vout= (Vin * Rt) / (R + Rt)
因此,Rt 的值將是:
Rt = R (Vin/Vout) – 1
這里,Rt將是熱敏電阻的電阻,R將是10k歐姆電阻。
該公式用于根據(jù)輸出電壓Vo的測(cè)量值計(jì)算熱敏電阻電阻。我們可以從 Arduino 引腳 A0 處的 ADC 值中獲取電壓輸出的值,如下所示的 Arduino 代碼。
根據(jù)熱敏電阻電阻計(jì)算溫度:
在數(shù)學(xué)上,熱敏電阻電阻只能借助斯坦-哈特方程計(jì)算。
T = 1 / (A + Bln(Rt) + Cln (Rt)3 )
其中,A、B 和 C 是常數(shù),Rt 是熱敏電阻電阻,ln 表示對(duì)數(shù)。
項(xiàng)目中使用的熱敏電阻的常量值為A = 1.009249522×10?3, B = 2.378405444×10?4, C = 2.019202697×10?7.這些常數(shù)值可以通過輸入熱敏電阻在三種不同溫度下的三個(gè)電阻值從計(jì)算器中獲得。您可以直接從熱敏電阻的數(shù)據(jù)表中獲取這些常數(shù)值,也可以獲得不同溫度下的三個(gè)電阻值,并使用給定的計(jì)算器獲取常數(shù)值。
因此,為了計(jì)算溫度,我們只需要熱敏電阻電阻的值。從上面給出的計(jì)算中獲得 Rt 的值后,將值放入斯坦-哈特方程中,我們將得到單位開爾文的溫度值。由于輸出電壓的微小變化會(huì)導(dǎo)致溫度變化。
阿杜伊諾熱敏電阻代碼
本文末尾給出了用于將熱敏電阻與Arduino接口的完整Arduino代碼。在這里,我們已經(jīng)解釋了其中的幾個(gè)部分。
為了執(zhí)行數(shù)學(xué)運(yùn)算,我們使用頭文件“#include ”,LCD頭文件是“#include ”。我們必須使用代碼分配LCD的引腳
LiquidCrystal lcd(44,46,40,52,50,48);
為了在啟動(dòng)時(shí)設(shè)置LCD,我們必須在void設(shè)置部分編寫代碼
Void setup(){
lcd.begin(16,2);
lcd.clear();
}
為了使用熱敏電阻的電阻通過斯坦-哈特方程計(jì)算溫度,我們?cè)诖a中執(zhí)行一些簡(jiǎn)單的數(shù)學(xué)方程,如上面的計(jì)算中所述:
float a = 1.009249522e-03, b = 2.378405444e-04, c = 2.019202697e-07;
float T,logRt,Tf,Tc;
float Thermistor(int Vo) {
logRt = log(10000.0*((1024.0/Vo-1)));
T = (1.0 / (A + B*logRt + C*logRt*logRt*logRt));// We get the temperature value in Kelvin from this Stein-Hart equation
Tc = T - 273.15; // Convert Kelvin to Celsius
Tf = (Tc * 1.8) + 32.0; // Convert Kelvin to Fahrenheit
return T;
}
在下面的代碼中,功能熱敏電阻從Arduino的模擬引腳讀取值,
lcd.print((Thermistor(analogRead(0))));
并在下面的代碼中獲取該值,然后開始打印計(jì)算
float Thermistor(int Vo)
使用熱敏電阻和Arduino測(cè)量溫度:
要為 Arduino 供電,您可以通過 USB 將其供電到筆記本電腦或連接 12v 適配器。LCD與Arduino接口以顯示溫度值,熱敏電阻根據(jù)電路圖連接。模擬引腳(A0)用于每時(shí)每刻檢查熱敏電阻引腳的電壓,在通過Arduino代碼使用Stein-Hart方程進(jìn)行計(jì)算后,我們能夠獲得溫度并將其以攝氏度和華氏度顯示在LCD上。
#include
#include "LiquidCrystal.h"
LiquidCrystal lcd(44,46,40,52,50,48);
float A = 1.009249522e-03, B = 2.378405444e-04, C = 2.019202697e-07;
float T,logRt,Tf,Tc;
float Thermistor(int Vo) {
logRt = log(10000.0*((1024.0/Vo-1)));
T = (1.0 / (A + B*logRt + C*logRt*logRt*logRt)); // We get the temperature value in Kelvin from this Stein-Hart equation
Tc = T - 273.15; // Convert Kelvin to Celcius
Tf = (Tc * 1.8) + 32.0; // Convert Kelvin to Fahrenheit
return T;
}
void setup(){
lcd.begin(16,2);
lcd.clear();
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Temp:");
lcd.print((Thermistor(analogRead(0))));
lcd.print("k ");
lcd.setCursor(0,1);
lcd.print((Tc));
lcd.print(" C ;");
lcd.setCursor(9,1);
lcd.print((Tf));
lcd.print(" F");
delay(800);
}
-
lcd
+關(guān)注
關(guān)注
34文章
4520瀏覽量
171517 -
熱敏電阻
+關(guān)注
關(guān)注
14文章
1196瀏覽量
102892 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192127
發(fā)布評(píng)論請(qǐng)先 登錄
轉(zhuǎn):Arduino讀取熱敏電阻溫度
通過NTC熱敏電阻讀取STM8單片機(jī)溫度值
通過NTC熱敏電阻讀取STM8單片機(jī)溫度值
熱敏電阻如何測(cè)溫度

熱敏電阻負(fù)溫度系數(shù)詳解
如何使用Arduino設(shè)置熱敏電阻來創(chuàng)建溫度計(jì)

評(píng)論