サーミスタと555を使った温度測定回路の計算式
サーミスタを555タイマICの抵抗として用い、温度を抵抗値から周波数に変換して測定する場合の計算式について記録しておく。この回路の端緒は以下のツイートである。
以下、特段の注意書きがなければ温度はケルビン (K) を表すものとする。
サーミスタは温度が低いと抵抗値が上がり、高いと抵抗値は下がる。温度により変化するサーミスタの抵抗値の変化の割合を表す物性値は B定数 と呼ばれる。とある温度
実際の製品ではB定数を示す際に2点の温度が明示されていることがあり、その場合は
たとえば 103JT というサーミスタはデータシート上では
とデータシートの記載と同じB定数が求められる。
ある温度
となり、あるサーミスタの抵抗値が
となる。
サーミスタと555を使った下記の回路について考える。
このとき、抵抗器の抵抗値を
となる。ところで、
式 (3) をサーミスタの抵抗値
となる。
となる。これにより周波数
と置けば、式 (5) は
とより簡単に表記できる。
JavaScriptでこの計算を実装すると以下のようになる。ただし入力と出力の温度はセルシウス温度 (℃) である。
const K = 273.15;
function B(ta, ra, tb, rb) {
return (Math.log(ra) - Math.log(rb)) / (1 / (ta + K) - 1 / (tb + K));
}
function T(f, ta, ra, tb, rb, c1, r1) {
const b_const = B(ta, ra, tb, rb);
const alpha = -Math.log(2) - Math.log(ra);
return (b_const * (ta + K)) / ((ta + K) * (Math.log(Math.LOG2E / (f * c1) - r1) + alpha) + b_const) - K;
}
> T(1e3, 25, 10e3, 85, 1.451e3, 0.1e-6, 1e3)
< 35.679906541566424
と計算できる。