サーミスタ(103JT-050)
今回は理論通りに温度が測定可能か実際に回路を作って実験してみました!
1.サーミスタとは
サーミスタ(英:Thermistor)とは、Thermally Sensitive Resistor(熱に敏感な抵抗体)の総称で、 負の温度係数を有するNTC※1サーミスタを一般にサーミスタと呼ばれています。
NTCサーミスタは温度に対する抵抗値変化が大きいことから、温度センサとして広く使用されています。
※以下補足です
※1:温度の上昇で抵抗が大きくなるものを PTC、減少するものを NTC、特定の温度で抵抗が急変するものをCTRと言う。
1.1 103JT-050とは
電気絶縁性も優れており、電極に接触し易い場所にも使用可能です。
今回の使用目的にピッタリな薄型なのでチョイスしました。
温度T(℃) | 抵抗値R1(kΩ) |
-50 | 367.7 |
-40 | 204.7 |
-30 | 118.5 |
-20 | 71.02 |
-10 | 43.67 |
0 | 27.70 |
10 | 18.07 |
20 | 12.11 |
25 | 10.00 |
30 | 8.301 |
40 | 5.811 |
50 | 4.147 |
60 | 3.011 |
70 | 2.224 |
80 | 1.668 |
85 | 1.451 |
90 | 1.267 |
100 | 0.9753 |
110 | 0.759 |
120 | 0.5981 |
125 | 0.5331 |
※「103JT-050」のSDSより引用させて頂きました
1.3 回路
図2:サーミスタの直線化回路例
1.4 サーミスタ回路の出力電圧から温度に変換
図2サーミスタ回路の出力電圧から温度に変換する式を以下①~④に示します。
最初に固定抵抗値R2を①の式1で求め回路を作ります。
作った回路で測定した出力電圧(Vout)から、サーミスタ温度(T)を求める為には、②~④に示す式3,6,7を順に計算すればOK!
①:固定抵抗値(R2,単位:kΩ)を選定する
②:出力電圧(Vout,単位:V)と電源電圧(Vcc,単位:V)から、サーミスタ抵抗値(R1,単位:kΩ)に換算
③:表1の「定数B」を「変数B」として最適化(単位:K)
④:サーミスタ抵抗値(R1,単位:kΩ)から温度(T,単位:K)に換算
※計算の詳細は前回記事をご覧下さい
/*NOBのArduino日記! Thermistorの使い方 20180826*/
#include <math.h>
double Vout; //出力電圧(Vout)
double R1; //サーミスタ抵抗値(R1)
double B; //補正係数(B)
double T; //サーミスタ温度(T)
void setup() {
Serial.begin(9600); //9600bpsでシリアルポートを開く
pinMode(A0, INPUT); //A0番ピンを入力用に設定する
}
void loop() {
Vout = analogRead(0) * 5.0 / 1024.0; //出力電圧(Vout)を測定
R1 = (5.0 * 4.7) / Vout - 4.7; //サーミスタ抵抗値(R1)を計算
B = 3452.9 * pow(R1,-0.012329); //補正係数(B)を計算
T = B / log(R1*exp(B/(25+273.15))/10)-273.15; //サーミスタ温度(T)を計算
Serial.print("Vout:");Serial.print(Vout); //温度をシリアル出力
Serial.print(",R1:");Serial.print(R1); //温度をシリアル出力
Serial.print(" B:");Serial.print(B); //温度をシリアル出力
Serial.print(" T:");Serial.println(T); //温度をシリアル出力
delay(1000);
}
#include <math.h>
double Vout; //出力電圧(Vout)
double R1; //サーミスタ抵抗値(R1)
double B; //補正係数(B)
double T; //サーミスタ温度(T)
void setup() {
Serial.begin(9600); //9600bpsでシリアルポートを開く
pinMode(A0, INPUT); //A0番ピンを入力用に設定する
}
void loop() {
Vout = analogRead(0) * 5.0 / 1024.0; //出力電圧(Vout)を測定
R1 = (5.0 * 4.7) / Vout - 4.7; //サーミスタ抵抗値(R1)を計算
B = 3452.9 * pow(R1,-0.012329); //補正係数(B)を計算
T = B / log(R1*exp(B/(25+273.15))/10)-273.15; //サーミスタ温度(T)を計算
Serial.print("Vout:");Serial.print(Vout); //温度をシリアル出力
Serial.print(",R1:");Serial.print(R1); //温度をシリアル出力
Serial.print(" B:");Serial.print(B); //温度をシリアル出力
Serial.print(" T:");Serial.println(T); //温度をシリアル出力
delay(1000);
}
図5:プログラムの内容
2.3 実験!
図4の回路で図5のプログラムを実行した結果を図6に示します。
〇エアコン25℃設定の室温
室温で測定した結果(図6上半分)、24.71~25.19℃とかなりいい感じの温度が出て来ました!
〇センサーを指で触る
指先の温度は体温(36℃位)より若干低く出るので、こんなものじゃないでしょうか
3. まとめ
なんともザックリした基準温度での確認結果ですが、サーミスタでちゃんと温度を測れました
これで一個¥140の温度計が作れます!