サーミスター測定から温度値を取得する方法
私がこれまでのキャリアで設計したすべての製品には、何らかの温度回路が組み込まれています。 最も単純でコスト効率の高い回路は、負の温度係数 (NTC) または正の温度係数 (PTC) サーミスタを使用して温度を測定します。 最も基本的な回路は、アナログ/デジタル コンバーター (ADC) を備えた低コストのマイクロコントローラー (MCU) に接続された抵抗分割器に基づいています。 この記事では、NTC または PTC サーミスタを ADC で使用する方法と、ADC の測定結果を使用可能な温度値に変換するためのさまざまなプロセス手法について説明します。
一般的なサーミスタ回路は、ADC 入力に印加される電圧 (VSense) を提供します。 次に、ADC はこの電圧を入力電圧に比例する LSB (最下位ビット) デジタル値に変換します。 多くの低コスト MCU の一般的な ADC 分解能は 12 ビットであるため、この記事の式では 12 ビット分解能を使用します。 図 1 に、分圧回路と定電流回路の両方を示します。
式 1 を使用して、測定された 12 ビット ADC LSB 値を電圧に変換できます。
ここで、ADC 分解能 (12 ビット ADC (212)) は合計 4,096 ビット、VREF は 3.3 V、測定された ADC LSB 値は 2,024 (Texas Instruments (TI) TMP61 サーミスタ ファミリ テスト ボードからの ADC LSB 値の例) です。
例えば:
式 2 は、分圧器の VSense から抵抗を計算します。
例えば:
式 3 は、定電流 Ibias から抵抗を計算します。
ここで、Ibias は 200 µA (TMP61 ファミリ製品のデフォルトの標準電流)、VSense は 1.63 V です。
例えば:
電圧を ADC 表現に変換したら、サーミスタの VSense 電圧から実際の温度を取得する方法がいくつかあります。 最も一般的な方法は、抵抗テーブルとも呼ばれるルックアップ テーブル (LUT) を使用するもので、通常はサーミスタの製造元によって提供されます。 1°C LUT テーブルには 166 個の要素があり、コントローラに保存する必要がありますが、これによりコントローラのメモリが消費されます。 要素の数を減らすには、5°C LUT を使用できますが、計算に線形誤差が生じる可能性があります。 5°C の LUT には 33 個の要素が必要ですが、5°C の解像度を見たい人はいないため、5°C または 1°C よりも優れた解像度を得るには、LUT をさらに処理する必要があります。 これについては、「線形補間」セクションでさらに詳しく説明します。
もう 1 つの方法は、3 次多項式曲線フィットに基づく Steinhart-Hart 方程式を使用することです。 完了するには自然対数演算が必要であり、計算を実行するには浮動小数点コントローラーまたは浮動小数点演算ライブラリが必要です。 Steinhart-Hart 方程式は、LUT よりも正確です。
PTC は、デバイスの線形出力を考慮して、多項式を使用できます。 多項式は、サーミスターから温度を取得する最も正確な方法です。 多項式は、加算、減算、乗算、および非負の整数の演算のみを含む変数の数学的表現です。 多項式を記述するもう 1 つの方法は、多項式が傾きの曲線適合方程式を提供することです。 多項式フィットを自分で適用し、回帰関数 (曲線フィットに基づく温度) を解いて温度を取得する必要があります。 ほとんどの PTC は多項式に基づいています。
心配しないでください。 多項式のコツを掴めば、精度が向上します。 さらに、コントローラーに LUT は必要ありません。 これらは、補間を使用した LUT よりも高速に処理できる単純な数学関数です。 TI は、LUT または 4 次多項式と回帰関数を提供できる設計ツールを提供しており、これらの数学関数を C コードで適用してコントローラーにサーミスターから最も正確な温度を取得する方法の例を示しています。
通常、LUT の範囲は -40 °C ~ 125 °C ですが、サーミスターの熱制限によって異なります。 LUT には 1°C と 5°C の 2 種類があります。 例については、図 2 を参照してください。
LUT メソッドは次のように機能します。