サーミスタのカーブの補償
温度を検出して何かを行いたい時に、センサとしてサーミスタの感度にかなうものは無いでしょう。

しかし、その抵抗値は温度によって非直線に変化し、検出後の回路をなんとかするか、DSP で変換するかしないと、何とも使いにくい素子になっています。
そこで、まあそこそこに補償できるかどうかやってみます。 目標は、「ある程度の温度範囲で、温度変化に対して直線的な出力電圧を得ること」、とします。
右のグラフは典型的なサーミスタの温度対抵抗特性です。 例えばキャパシタを購入するときは容量が指定項目です。 抵抗では抵抗値を指定して買います。 サーミスタを買うときは、25℃ (またはメーカ指定温度)における抵抗値 R0 と、β や B と呼ぶ係数値を指定します。 その他に、寸法も重要な項目です。
R0 (25℃) は 20 Ω 程度から 150kΩ程度まで、B は 2500 程度から 4500 程度まであり、2次元ですから選択範囲が広いのが特徴です。 使用目的によって形状もさまざまです。
さて、絶対温度 T (K) におけるその抵抗値は、R0 を 25℃ (298.15K) の時の抵抗値とすると、
R = R0 * exp { B * ( 1/T - 1/298.15 ) }

ですから、低い温度では変化が大きく、温度が高くなるとなかなか変化しなくなります。 これがサーミスタを使いにくくしている特徴です。
全く違う話題ですが、電圧を2本の抵抗で電圧分割すると、右のグラフのようになります。 電圧を上げるためには R1 の値の小さいものが要りますが、高い電圧の所では抵抗の変化が小さくなっていきます。 2つのグラフは Y 軸を抵抗にそろえていますのでカーブが同じなら補償することになりますが、もともと異なった式ですので一致はしません。 でも似ていますね。

残念なことに電圧分割のグラフは右下の方で X 軸に行き当たるのに対し、サーミスタのカーブは漸近するだけです。
まあやってみましょう。 なかほどではかなり近くなるでしょうから。
回路は単純なものです:
この状態で、 R1 と R2 の値は出力電圧にどう影響するでしょうか。
R0 を 220、B を 3000 としてみます。

上のグラフがそれを表したものです。
R1 に 100Ω と 10kΩ を当てはめ、 R2 に 56 Ωと 390Ω を選んで、4つの組み合わせを調べました。
高い温度では上に凸、低い温度では下に凸の特性になります。 R1
が大きくなると感度が高くなります。 R2 が大きくなると変曲点の温度が低い方にシフトします。この2つをうまく選べば、自分の目的の温度範囲で、ある程度妥協できる特性が得られそうです。 例えば、0 - 60℃ をねらいますと、右のような値になります。 赤の細線は直線です。 まあまあですね。
これを計算する EXCEL ファイルを添付しておきます。
これです ==>
(IE: 右クリックして「対象をファイルに保存」を選ぶ)
(FireFox: 左クリックし、保存する)
赤色のカラムに R0、 B、 R1、R2 の値を入れると Vout を計算し、グラフを出します。

[注意]
サーミスタの抵抗の式の中にある T は自己発熱による温度上昇を含んでいます。 周囲温度ではありませんので注意してください。
[参考]

EDN の 2005 年の記事に右のような回路が載っていました。 これは上で述べた補正の R1 を開放したときの回路のあと、オペアンプでバッファしてあるものです。 Vref をサーミスタのバイアスとオペアンプの参照とに共通で使って、誤差を少なくする工夫をしています。
サーミスタ抵抗が R4 と同じ程度になるところで傾斜が最大になります。
