使用熱敏電阻是一種簡單而廉價的感測溫度的方法。為了用熱敏電阻測量精確的溫度,需要一個微控制器。因此,在這里我們使用帶有熱敏電阻的Arduino來讀取溫度,并使用LCD來顯示溫度。它可用于各種項(xiàng)目,例如遠(yuǎn)程氣象站,家庭自動化以及工業(yè)和電子設(shè)備的保護(hù)和控制。
在本教程中,我們將把熱敏電阻與Arduino接口,并在LCD上顯示溫度。
所需組件:
NTC熱敏電阻 10k
Arduino (任何版本)
10k 歐姆電阻器
連接線
電路圖
熱敏電阻根據(jù)其中電阻的變化提供溫度值。在該電路中,Arduino中的模擬引腳與熱敏電阻連接,只能提供ADC值,因此不直接計(jì)算熱敏電阻的電阻。因此,通過將已知的10k歐姆電阻與NTC串聯(lián),使電路類似于上圖所示的分壓器電路。使用此分壓器,我們可以獲得熱敏電阻兩端的電壓,使用該電壓我們可以得出熱敏電阻在該時刻的電阻。最后,我們可以通過將熱敏電阻的電阻放入斯坦-哈特方程中獲得溫度值,如下一節(jié)所述。
熱敏電阻
該電路中的關(guān)鍵元件是熱敏電阻,它已被用于檢測溫度升高。熱敏電阻是溫度敏感電阻,其電阻隨溫度變化。有兩種類型的熱敏電阻NTC(負(fù)溫度系數(shù))和PTC(正溫度系數(shù)),我們使用NTC型熱敏電阻。NTC熱敏電阻是一種電阻器,其電阻隨著溫度的升高而減小,而在PTC中,電阻會隨著溫度的升高而增加。
使用熱敏電阻計(jì)算溫度:
我們從分壓器電路中得知:
Vout= (Vin * Rt) / (R + Rt)
因此,Rt 的值將是:
Rt = R (Vin/Vout) – 1
這里,Rt將是熱敏電阻的電阻,R將是10k歐姆電阻。
該公式用于根據(jù)輸出電壓Vo的測量值計(jì)算熱敏電阻電阻。我們可以從 Arduino 引腳 A0 處的 ADC 值中獲取電壓輸出的值,如下所示的 Arduino 代碼。
根據(jù)熱敏電阻電阻計(jì)算溫度:
在數(shù)學(xué)上,熱敏電阻電阻只能借助斯坦-哈特方程計(jì)算。
T = 1 / (A + Bln(Rt) + Cln (Rt)3 )
其中,A、B 和 C 是常數(shù),Rt 是熱敏電阻電阻,ln 表示對數(shù)。
項(xiàng)目中使用的熱敏電阻的常量值為A = 1.009249522×10?3, B = 2.378405444×10?4, C = 2.019202697×10?7.這些常數(shù)值可以通過輸入熱敏電阻在三種不同溫度下的三個電阻值從計(jì)算器中獲得。您可以直接從熱敏電阻的數(shù)據(jù)表中獲取這些常數(shù)值,也可以獲得不同溫度下的三個電阻值,并使用給定的計(jì)算器獲取常數(shù)值。
因此,為了計(jì)算溫度,我們只需要熱敏電阻電阻的值。從上面給出的計(jì)算中獲得 Rt 的值后,將值放入斯坦-哈特方程中,我們將得到單位開爾文的溫度值。由于輸出電壓的微小變化會導(dǎo)致溫度變化。
阿杜伊諾熱敏電阻代碼
本文末尾給出了用于將熱敏電阻與Arduino接口的完整Arduino代碼。在這里,我們已經(jīng)解釋了其中的幾個部分。
為了執(zhí)行數(shù)學(xué)運(yùn)算,我們使用頭文件“#include ”,LCD頭文件是“#include ”。我們必須使用代碼分配LCD的引腳
LiquidCrystal lcd(44,46,40,52,50,48);
為了在啟動時設(shè)置LCD,我們必須在void設(shè)置部分編寫代碼
Void setup(){
lcd.begin(16,2);
lcd.clear();
}
為了使用熱敏電阻的電阻通過斯坦-哈特方程計(jì)算溫度,我們在代碼中執(zhí)行一些簡單的數(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測量溫度:
要為 Arduino 供電,您可以通過 USB 將其供電到筆記本電腦或連接 12v 適配器。LCD與Arduino接口以顯示溫度值,熱敏電阻根據(jù)電路圖連接。模擬引腳(A0)用于每時每刻檢查熱敏電阻引腳的電壓,在通過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文章
4438瀏覽量
168098 -
熱敏電阻
+關(guān)注
關(guān)注
14文章
1175瀏覽量
101622 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187571
發(fā)布評論請先 登錄
相關(guān)推薦
評論