一覧へ   前へ<<  >>次へ


温度測定 (2022年05月06日更新)

温度測定
これから、何かを試作してみたり、現象を調べてみたり、と言う時には、温度測定が必要になる場面が多いはずです。

仕事では熱電対や測温抵抗体と言うセンサや必要な変換器を完成形で購入して使いますが、個人で使うには値段が高い。

なので、いざ測ろうとした時に、用途に応じて使えるツールが身の回りには揃っておらず、また安価なもの何が適しているのかも、良く分からない。



と言うことで、低価格で入手出来る温度計や測定装置を試し、使い勝手を調べてみたいと思います。
デジタル式の温度計


ボタン電池で動き(測れ)ます。

ケーブル(リード線)の先端にセンサ部があり、水中の温度も測ることが出来そうです。

1つで350円くらい。
楽天カードのポイントで、2個買いました。

ウチワで扇ぐと温度は微妙に変化しますが、2個の温度計はほぼ、近い温度を示していました。
サーミスタ

秋月電子で購入しました。

温度によって、抵抗値が変化するものです。
サーミスタにはNTCとPTCの二種類があり、NTCは温度上昇に伴って抵抗値が低くなり、PTCはある温度以上になると抵抗値が急激に高くなるのだそうです。温度測定にはNTCが適しているような雰囲気です。

PTCは温度上昇時の保護回路や、ヒーターである温度に保ちたい時に使われるようです。


NTCサーミスタ 10kΩ 5個入り 200円 (NXFT15XH103FA2B050)


NTCサーミスタ(温度検知・温度補償用)10kΩ(5個入)
[NXFT15XH103FA2B050]
通販コード P-05251
発売日 2011/11/04
メーカーカテゴリ 株式会社村田製作所(muRata)
温度検知用サーモストリングタイプ
当製品は、先端部が小さく、極細リード線を有する超小型フレキシブルリードNTCサーミスタです。

■特長
・小型、高精度NTCサーミスタにより高感度、高精度温度検知ができます。
・検知部が小さく極細リード線のため、狭い場所のセンシングが可能です。
・フレキシブルで、レイアウトが自由にできます。
・経時変化が少なく安定しています。

■主な仕様
・タイプ:温度検知用サーモストリングタイプ
・抵抗値(25℃):10kΩ±1%
・B定数(25−50℃):3380K±1%
・温度検知用動作電流(25℃):0.12mA
・定格電力(25℃):7.5mW
・熱放散定数(25℃):1.5mW/℃

← サーミスタによる温度の求め方



計算用のExcel











まず、リード線をハンダ付け。

熱収縮チューブに挿入。

水中で使いたいので、グルーガンで端部をシール。

グルーガンのスティックは溶解温度が85℃とのこと。

しまった、ちょっと足りないかも。
Aruduino への接続

サーミスタを利用した簡単な回路によって、Aruduinoで温度変化を調べてみたいと思います。

Aruduiono を使用するのは久しぶりで、なかなか、すっと思いだせないので、順を追って・・・。
抵抗(R1=5kΩ)とサーミスタ(Rt)を直接に繋ぐと抵抗の値はR=R1+Rt、
この両端にAruduinoから5Vの電圧を掛けます。

今回はプラス側に抵抗を、マイナス側にサーミスタを繋ぎました。

で、抵抗とサーミスタの間にリード線を設置し、これをAruduinoのAnalog INのA0に接続します。

つまり、抵抗(R1)とサーミスタ(Rt)の両端に5Vの電圧(V)を掛けて、サーミスタに掛かる電圧(Vt)を測ります。

ここで、

R=R1+Rt = 5000 + Rt

V = I * R
I = V / R

Vt = Rt * I = Rt * V / R
= Rt * V / (5000 + Rt)

Rt * Vt + 5000 * Vt = Rt * V
Rt * V - Rt * Vt = Vt * 5000
Rt * ( V - Vt ) = Vt *5000
Rt = Vt * 5000 / (V - Vt)
= Vt * 5000 / (5 - Vt)








Aruduinoのプログラム
ここではまだ温度は測れません。

サーミスタに掛かっている電圧を表示するところまでのプログラムです。

int analogPin = 0; // A0の抵抗
int val = 0;
float Vt;
float Rt;

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

void loop() {
// A0ピンより電圧の値を取得
val = analogRead(analogPin);
//5Vの電圧値に変換
Vt = val * 5 / 1023.0;
//サーミスタの抵抗値に換算
Rt = Vt * 5000 / ( 5.0 - Vt);

Serial.println(Rt);
delay(1000);
}

=以上、プログラム終わり=

電圧を5.0としているのは、計算結果を整数ではなく、小数点以下まで扱いたいためです。

これを起動して、シリアルモニタを表示させます。


起動して、サーミスタの検知部を手で握ると、こんな風になりました。
以下の単位はオーム(Ω)になります。

7007.04
6978.92
6950.93
6923.08
6895.35
6867.75
6867.75
6840.28
6812.93
6812.93
6785.72
6785.72
6785.72
6758.62

抵抗値 → 温度への変換
次にこの抵抗値を温度に変換すれば良いのですが・・・。

Excelでの計算を参照しながら、

T0=25;
R0=10000;
B=3380;
Temp = 1/(log(Rt / R0) / B + 1/(273+T0))-273 ;


となるかと。arduinoでは、log は 自然対数の ln の結果を返すそうです。
常用対数の場合はlog10と書くそうです。
温度測定プログラム

以下の内容で、計測できました。


int analogPin = 0; // A0の抵抗
int val = 0;
float Vt;
float Rt;
float T0;
float R0;
float B;
float Temp;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
// A0ピンより抵抗の値(アナログデータ)を取得
val = analogRead(analogPin);
Vt = val * 5 / 1023.0;
Rt = Vt * 5000 / ( 5.0 - Vt);

T0 = 25;
R0 = 10000;
B = 3380;
Temp = 1/(log(Rt / R0) / B + 1/(273+T0))-273 ;

Serial.println(Temp);
delay(1000);
}




今後の課題・・・

1)複数の温度を同時に測りたい

2)測定記録のログを残したい

3)ネットワークでその値を読めるようにしたい(これはオマケ)