サーミスタ(103JT-050)
その前にペルチェ素子の表と裏の温度差から、どの程度発電するか見てみようかと思います。
ホームセンターに温度計を買いに行ったら1台¥3,000~7,000位で売られていました?・・・。高い(´;ω;`)
困った時は迷わず電子部品屋さん!と言う事で、温度センサーの定番サーミスタを一個¥140で買って来ました!安い!
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:サーミスタの直線化回路例
2. サーミスタ回路の出力電圧から温度に変換!
使用温度範囲が0~100℃など決まっていれば、その範囲の測定に特化した固定抵抗値(R2)を選ぶことで測定精度を高める事が出来ます。
①-1 目的変数
測定に最適な固定抵抗(R2)の値は、以下式1から求めます。
式1の目的変数(R2)を求めるための説明変数は以下の通りです。
私の想定している使用温度範囲は、ペルチェ素子の冷却部(実験ではマイナス数十℃を想定)~ロケットストーブの底(百℃以上?)迄なので目一杯の-50~125℃!・・・(;'∀')非線形をキレイに近似すればプログラムの方で何とかなるはず。
と言う事で、使用温度範囲から以下3点の温度を求めます。
①-3 計算
式1に説明変数を代入し、実際に計算した結果を下記に示します。
計算の結果、固定抵抗(R2)には4.7kΩを選定しました。
R2=(2*𝑅110*𝑅190-𝑅150*(𝑅110+𝑅150))/(2*𝑅150-𝑅110-𝑅150)
=(2*118.5*0.759-5.811*(118.5+5.811))/(2*5.811-118.5-5.811)=4.8kΩ
≒4.7kΩ(抵抗のE系列ラインナップから近いものを選定)
②. 出力電圧(Vout) → サーミスタ抵抗値(R1) 換算
②-1 目的変数
図2回路における出力電圧(Vout)と、電源電圧(Vcc)・サーミスタ抵抗値(R1)・固定抵抗値(R2)の間には、以下式2に示す関係が有ることが分かっています。
式2の目的変数は出力電圧(Vout)なので、これをサーミスタ抵抗値(R1)について変形すると式3になります。
②-2 説明変数
目的変数(R1)を求めるために必要な説明変数は以下の通りです。
ArduinoUNOの動作電圧と同じ電源電圧(V):Vcc=5
図2回路で測定された出力電圧(V):Vout=0~5
②-3 計算(参考)
R1=(5*4.7)/2.5-4.7=4.7kΩ
③:B定数を最適化
③-1 定数B
この定数Bの“定数”と言う言葉が曲者で、素直にこの定数B(K)=3435を式4に入れて計算すると図3(上)の様に結構ズレます。
図3(下)に計算抵抗値と実測抵抗値とのズレ(%)をグラフ化したものを示します。
図3(下)を見ると、25~85℃から離れるほど近似抵抗値が実測抵抗値からズレて行く事が分かります測定温度が25~85℃であればこの定数Bでも良さそうですね
図3:定数(B=3435K)で式4を計算(上:計算結果、下:実測抵抗値とのズレ)
と言う事は当然25~85℃の範囲から外れるほどズレてくと言う事ですね仕様書を良く見てませんでした
因みにB定数を求める式を探した所、以下式5の様に表されるそうですなんだか定数と言うか変数ですね
※参考に、「25℃、85℃におけるゼロ負荷抵抗値」定数Bを表2の値を使って式5で計算すると、ちゃんと仕様書の3435Kとなります。
B=(LOG(1.451,EXP(1))-LOG(10,EXP(1)))/(1/(85+273.15)-1/(25+273.15))
=3435.426≒3435K
③-2 変数B
折角「定数B」の式5が有るので、全区間で計算し、それを元に関数化した「変数B」を作ってしまえば良さそうです。
各温度T(℃)におけるサーミスタ抵抗値R1(kΩ)は表2から分かるので、式5に代入して定数B(K)を求めます。
求めた定数B(K)と実測抵抗値R1(kΩ)で図4の通りグラフ化します。
作ったグラフに対してEXCELで近似曲線(累乗)を求め数式化します。
これで「定数B(K)」であったものが式6の「変数B(K)」成りました!
図4:各温度T(℃)における定数B(K)
④-1 目的変数
測定したサーミスタの抵抗値R1(kΩ)から温度T(℃)を求める式を作ります。
探し方が下手なのかNETで探してもなかなか見つからなかったので、式4を温度T(℃)について変形した式7を作りました出来た。
④-2 説明変数
式7を使って温度T(℃)を求めるために必要な目的変数は以下の通りです。
〇R1
※ArduinoUNOの動作電圧と同じ電源電圧(V):Vcc=5
※図2回路で測定された出力電圧(V):Vout=0~5
※式1より、固定抵抗値(kΩ):R2=4.7
〇B
式6より、変数B(K):B=3,452.9*R1^(-0.012329)
〇R10
〇T0
表1より、基準温度(℃):T0=25
④-3 計算
表3:表4セルの内容及び計算式
A4 = 表2「温度T(℃)」実測値を入力B4 = 表2「抵抗値R1(kΩ)」実測値を入力C4~C24セルにオートフィル = 5/(B4+4.7)*4.7D4~D24セルにオートフィル = (5*4.7)/C4-4.7E4~E24セルにオートフィル = 3452.9*D4^-0.012329F4~F24セルにオートフィル = D4/LOG(E4*EXP(D4/(25+273.15))/10,EXP(1))-273.15G4~G24セルにオートフィル = F4-A4
表4:「出力電圧」から「サーミスタ温度」に換算
④-4:結果
表4では、「変数B」を使って出力電圧(Vout)からサーミスタ温度(T)に換算しています。
「変数B」「定数B」による温度換算値を図6に、換算値と実測値とのズレを図7に、比較結果をまとめたものを表5に示します。
青色線は、実測値ですので、当然実測値との誤差はゼロとなっています。
表5の結果より、通常使う「定数B」を「変数B」に変えることで、特に気になっていた-50℃における最大誤差が1/16.8と大幅に減少しました
また-50~+125℃の全区間において±0.25℃未満の高精度測定が可能になりました理論上ですがオレンジの線がいい感じです!
表5:図7より、「変数B」と「定数B」による換算誤差比較結果 単位:℃
3. まとめ
サーミスタ・・・。
最初見たときは、そのシンプルな回路構成と見た目から、ちょっと調べればサクッと使えるでしょアハハハ!くらいに考えて買って来ましたが、結果はご覧の通りなかなか奥深い物でした
折角なので、実験しやすいようにサーミスタとArduinoUNOのアナログ入力端子6個を使った、6chの温度(or電圧)測定シールドを作ります!