1. 程式人生 > >用arduino和熱敏電阻做電子體溫計

用arduino和熱敏電阻做電子體溫計


因此又買了專門測體溫的熱敏電阻,某寶上有,型號是MEB-503E-3950 具體引數的解釋可以參考這篇文章: http://blog.sina.com.cn/s/blog_6182b82201012ii1.html 熱敏電阻計算公式 Rt = R *EXP(B*(1/T1-1/T2)) 對上式解釋如下:  (具體可以參考百度,很多的)

1.        Rt 是熱敏電阻在T1溫度下的阻值; 

2.        R是熱敏電阻在T2常溫下的標稱阻值; 

3.        B值是熱敏電阻的重要引數; 

4.        EXP是e的n次方; 

5.        這裡T1和T2指的是K度即開爾文溫度,K度=273.15(絕對溫度)+攝氏度; 

例如我手頭有一個 MF58502F327型號的熱敏電阻 

MF58—— 型號玻璃封裝 

502 —— 常溫25度的標稱阻值為5K 

F —— 允許偏差為±1% 

327 —— B值為3270K的NTC熱敏電阻 

而我買的型號是MEB-503E-3950因此它的

常溫下阻值R1=50*10^3=50k歐;

常溫T12=273.15+25=298.15;

引數B=3950;

       這時候代入T1溫度就可以求出相應溫度下熱敏電阻的阻值,注意溫度單位的轉換,攝氏度與開爾文。

至於熱敏電阻的用法,其實就是串聯一個阻值和它差不多(最好)的電阻,從而通過分壓比確定熱敏電阻的阻值,從而確定測量溫度(詳情可百度,很多的),下面只給出電路和程式碼: 我是用的arduino UNO
的開發板,電路接法如下:
程式碼如下:
/*
 * 熱敏電阻的型號是MEB-503E-3950
 * 常溫25攝氏度(298.15K)下阻值為50k歐
*/
#include<math.h>

const float voltagePower=3.3;
const float Rs=21.5;//取樣電阻為21.5千歐
const int B=3950;
const double T1=273.15+25;//常溫
const double R1=50;//常溫對應的阻值,注意單位是千歐


void setup() {
  Serial.begin(9600);
}

void loop() {
  
  //獲得A1處的電壓值
  double digitalValue=analogRead(1);
  double voltageValue=(digitalValue/1023)*5;
  Serial.print("Current voltage value=");
  Serial.println(voltageValue);
  
  //通過分壓比獲得熱敏電阻的阻值
  double Rt=((voltagePower-voltageValue)*Rs)/voltageValue;
  Serial.print("Current registor value=");
  Serial.println(Rt);

  //換算得到溫度值
  Serial.print("Current temperature value=");
  Serial.println(((T1*B)/(B+T1*log(Rt/R1)))-273.15);//
  Serial.println();
  
  //每3秒輸出,更改此處修改頻率
  delay(3000);
  
}


可看到輸出如下