サーミスタ温度⇔抵抗変換ツール

NTCサーミスタのB定数・Steinhart-Hart方程式で温度⇔抵抗値を相互変換。ADC分圧回路の設計補助とルックアップテーブル自動生成

NTCサーミスタのB定数・Steinhart-Hart方程式で温度⇔抵抗値を双方向変換。ADC分圧回路の設計補助とルックアップテーブル自動生成。

サーミスタパラメータ

データシートに記載。一般的なNTCは3000〜4500K

変換入力

変換結果

温度
25.00℃
抵抗値
10.00 kΩ

10,000.0 Ω

温度-抵抗特性曲線

1.00 kΩ10.00 kΩ100.00 kΩ-20020406080100温度 (℃)抵抗値 (対数)
特性曲線 現在値

ルックアップテーブル生成

25
温度 (℃)抵抗値 (Ω)
-20105,384.7
-1577,898.1
-1058,245.7
-544,026.0
033,620.6
525,924.6
1020,174.6
1515,837.1
2012,535.3
2510,000.0
308,037.1
356,505.5
405,301.5
454,348.1
503,588.2
552,978.4
602,486.2
652,086.4
701,759.8
751,491.7
801,270.3
851,086.7
90933.6
95805.4
100697.5

本ツールの計算結果は概算です。実際のサーミスタ特性はロット差・自己発熱・経年劣化の影響を受けます。重要な温度制御にはデータシートの保証値と校正を使用してください。

不具合・ご要望はお気軽に@MahiroMemoまで

PR

📘 サーミスタ・温度計測の関連書籍

マイコンで温度を測りたい、でもサーミスタの変換が面倒すぎる

ArduinoやESP32で温度を測ろうとして、サーミスタを買ってきた。接続してanalogRead()で値を取得するところまでは順調だった。しかし、そこから先が問題だ。ADCの生値を温度に変換するには、B定数やSteinhart-Hart方程式の知識が必要になる。データシートの表を見ながら電卓を叩く作業は、正直かなりしんどい。

このツールは、NTCサーミスタの温度⇔抵抗値の相互変換をブラウザ上で即座に行える。B定数方式とSteinhart-Hart方程式の両方に対応し、ADC分圧回路の変換やルックアップテーブルの自動生成までカバーしている。

なぜサーミスタ温度⇔抵抗変換ツールを作ったのか

毎回データシートを引っ張り出す手間

サーミスタを使うたびに、データシートの温度-抵抗対応表を探し、必要な温度範囲の値を手動で拾う作業を繰り返していた。10kΩ NTCなら情報は豊富だが、100kΩや4.7kΩのサーミスタになると、対応表がPDFの奥深くに埋もれていて探すだけで時間がかかる。

さらに厄介なのがADC値からの温度変換だ。analogRead()の値を温度に変換するコードをArduinoスケッチに書くとき、B定数方式の式を毎回調べ直す。符号を間違えて摂氏マイナス200度とかの異常値が出て、30分デバッグした経験は一度や二度ではない。

こだわった設計判断

B定数とSteinhart-Hartの切り替えを最初から搭載した。ホビーユースならB定数で十分だが、3Dプリンタのヘッド温度制御や工業用途では±0.15℃の精度が求められることがある。1つのツールで両方試せれば、精度の違いを実感できる。

ルックアップテーブルの自動生成にもこだわった。マイコンのFlashにテーブルを焼き込む実装は、浮動小数点演算を省略できるため高速で省メモリだ。CSVコピー機能で、そのままスプレッドシートやCコードに貼り付けられるようにした。

NTCサーミスタとは何か — 温度で抵抗値が変わる素子

NTCサーミスタの基本原理

サーミスタ(thermistor)は「thermal resistor」の略で、温度によって抵抗値が大きく変化する半導体素子だ。NTC(Negative Temperature Coefficient)サーミスタは温度が上がると抵抗値が下がる特性を持つ。身近な例でいえば、冬の朝にエンジンをかけたとき、水温計がゆっくり上がっていくあの動き。エンジン冷却水の温度センサにもNTCサーミスタが使われている。

対照的にPTC(Positive Temperature Coefficient)サーミスタは温度上昇で抵抗値が上がる。こちらは過電流保護のヒューズ代わりに使われることが多い。

B定数方程式とは

B定数(Beta定数)方程式は、NTCサーミスタの温度-抵抗関係を2つのパラメータで近似する簡易式だ。

R(T) = R25 × exp(B × (1/T − 1/298.15))
T(R) = 1 / (1/298.15 + ln(R/R25)/B) − 273.15
  • R25: 25℃における抵抗値(公称値。10kΩが最も一般的)
  • B: B定数(ケルビン単位。一般的なNTCでは3000〜4500K)
  • T: 絶対温度(ケルビン)

B定数方式は25℃付近では高精度だが、広い温度範囲(50℃以上の幅)では誤差が±1〜3℃に拡大する。

Steinhart-Hart方程式とは

Steinhart-Hart方程式は1968年にJohn SteinhartとStanley Hartが発表した、より高精度な温度-抵抗変換式だ(Wikipedia: Steinhart-Hart equation)。

1/T = A + B × ln(R) + C × (ln(R))³

3つの係数(A, B, C)を使うことで、-50℃〜+300℃の広範囲で±0.15℃の精度を実現する。係数はデータシートに記載されていることもあるし、3点の温度-抵抗データから連立方程式を解いて算出することもできる。

なぜNTCが選ばれるのか

NTCサーミスタが広く使われる理由は、コストの安さ感度の高さだ。1個数十円で入手でき、温度変化に対する抵抗変化率が熱電対やRTD(白金測温抵抗体)より大きいため、マイコンのADCで直接読み取りやすい。

温度変換の精度が設計品質を左右する

誤差が招く実害

サーミスタの温度変換を間違えると、具体的にどんな問題が起きるか。

3Dプリンタのノズル温度制御: PLAフィラメントの適正温度は190〜220℃。温度読みが5℃ずれるだけで、フィラメントが溶け残って詰まったり、逆に過加熱で糸引きが悪化する。温度制御が不安定になると印刷物の層間接着強度にも影響し、機械部品として使えなくなる。

食品安全: HACCP管理で冷蔵庫の温度を監視するセンサにサーミスタを使う場合、2℃の誤差は致命的だ。食品衛生法では冷蔵は10℃以下、冷凍は-15℃以下が規定されている。センサの誤差が基準超過を見逃せば、食中毒のリスクに直結する。

工業プロセス: 半導体製造の温度管理では±0.5℃の制御が求められる工程がある。B定数方式の±1〜3℃では不十分で、Steinhart-Hart方程式か、そもそもRTDを使うべきだ。

B定数とSteinhart-Hartの精度差を理解する

25℃付近(±15℃程度)の狭い範囲では両者の差はほぼない。しかし-40℃〜+125℃のフルレンジでは、B定数方式は特に低温域で誤差が拡大する。データシートのB定数は通常25-50℃間または25-85℃間で測定されており、この範囲外では近似精度が保証されない。

ADC値から温度を出したい場面で使える

マイコン温度計の設計

ArduinoやESP32でサーミスタ温度計を作るとき、ADC値→温度の変換式を組み込む必要がある。このツールでADC値モードを使えば、回路定数(プルアップ抵抗、基準電圧、ADC分解能)を入力するだけで変換結果を確認できる。

3Dプリンタのファームウェアカスタマイズ

MarlinやKlipperのサーミスタテーブルをカスタム品に差し替えたいとき、ルックアップテーブル生成が役立つ。温度範囲と刻み幅を指定してCSVを出力し、ファームウェアの設定ファイルに貼り付けるだけでよい。

IoTセンサノードの校正確認

量産前のプロトタイプで、サーミスタの読み値が期待通りかを検証する場面。既知の温度環境(氷水0℃、沸騰水100℃)で実測したADC値をこのツールに入力し、計算値と比較すれば校正の妥当性を確認できる。

HVAC(空調)制御の設計検証

空調制御システムで室温センサにNTCサーミスタを使う場合、分圧回路の設計段階で感度(1℃あたりのADC変化量)を確認したい。ルックアップテーブルで温度範囲全体のADC値分布を見れば、分解能が十分かを判断できる。

基本の使い方

3ステップで温度⇔抵抗値を変換できる。

Step 1: 変換モードを選択する

「温度→抵抗」「抵抗→温度」「ADC値→温度」の3モードから選ぶ。Arduino等でanalogRead()の値を温度に変えたいなら「ADC値→温度」を選択してみて。

Step 2: サーミスタのパラメータを入力する

プリセットから選ぶか、手持ちのサーミスタのR25・B定数を入力する。より高精度が必要ならSteinhart-Hart方程式に切り替えて係数を入力すればOK。

Step 3: 結果を確認してテーブルを出力する

変換結果がリアルタイムで表示される。温度-抵抗特性曲線のグラフで全体像を把握し、必要ならルックアップテーブルをCSVでコピーしてファームウェアやスプレッドシートに貼り付ける。

具体的な使用例 — 6つのケースで検証

ケース1: Arduino温度計の基本変換

10kΩ NTC (B=3950) をArduino (5V/10bit) に接続。プルアップ抵抗10kΩ。

入力値:

  • モード: ADC値 → 温度
  • ADC読み値: 512
  • プラットフォーム: Arduino (5V / 10bit)

計算結果:

  • 抵抗値: 10,058.7 Ω
  • 温度: 24.85℃

解釈: ADC値512(ちょうど中点)はプルアップ抵抗とサーミスタがほぼ等しい、つまり25℃付近ということ。R25=10kΩのサーミスタなので理にかなっている。

ケース2: ESP32で高温測定

100kΩ NTC (B=3950) をESP32 (3.3V/12bit) に接続。プルアップ100kΩ。

入力値:

  • モード: 温度 → 抵抗
  • 温度: 150℃

計算結果:

  • 抵抗値: 約 674.6 Ω

解釈: 150℃では抵抗値が公称値の約1/148に急落する。NTCの指数関数的な特性が顕著に表れるケース。この温度域ではSteinhart-Hart方程式を使うべきだ。

ケース3: 3Dプリンタのホットエンド温度

10kΩ NTC (B=3950)、Steinhart-Hart方程式で230℃を変換。

入力値:

  • モード: 温度 → 抵抗
  • 方程式: Steinhart-Hart(デフォルト係数)
  • 温度: 230℃

計算結果:

  • 抵抗値: 約 83.8 Ω

解釈: 230℃はPETGやABSの印刷温度。抵抗値が100Ω以下まで下がるため、配線抵抗やコネクタ接触抵抗の影響が無視できなくなる。4線式測定の検討が必要。

ケース4: 冷凍庫の温度監視

10kΩ NTC (B=3950) で-20℃を測定。

入力値:

  • モード: 温度 → 抵抗
  • 温度: -20℃

計算結果:

  • 抵抗値: 約 97,070 Ω(約97kΩ)

解釈: -20℃ではR25の約10倍の抵抗値になる。プルアップ抵抗が10kΩだと分圧回路のダイナミックレンジが狭くなるため、プルアップ抵抗を47kΩ〜100kΩに変更するとADCの分解能を改善できる。

ケース5: 抵抗値から温度を逆算

テスターで4.7kΩを測定した場合。

入力値:

  • モード: 抵抗 → 温度
  • 抵抗値: 4700 Ω
  • R25: 10000 Ω, B: 3950

計算結果:

  • 温度: 約 42.4℃

解釈: R25の半分以下まで下がっているので、室温よりかなり高い。人体の体温付近の値だ。

ケース6: ルックアップテーブル生成

Arduino用に-20℃〜80℃を5℃刻みでテーブル生成。

入力値:

  • 開始: -20℃, 終了: 80℃, 刻み: 5℃
  • ADC値含める: ON

結果:

  • 21行のテーブルが生成される
  • CSVコピーでそのままArduinoのPROGMEM配列に変換可能

解釈: テーブル補間方式なら浮動小数点演算なしで温度を求められる。ATmega328のような8bitマイコンでは処理速度とFlash容量の両面で有利。

仕組み・アルゴリズム — B定数 vs Steinhart-Hart

2つの手法の比較

項目B定数方式Steinhart-Hart
パラメータ数2(R25, B)3(A, B, C)
精度±1〜3℃(広範囲)±0.15℃
計算コストexp + 除算ln + 3乗 + 除算
逆変換解析解ありニュートン法(数値解)
用途ホビー、簡易測定精密制御、工業用

ADC分圧回路の変換フロー

サーミスタとプルアップ抵抗の分圧回路では、以下の順序で変換する:

1. ADC値 → サーミスタ抵抗値
   Rtherm = Rpullup × ADC / (ADCmax − ADC)
   ※ ADCmax = 2^bits − 1(10bitなら1023)

2. サーミスタ抵抗値 → 温度
   B定数: T = 1/(1/298.15 + ln(R/R25)/B) − 273.15
   S-H:   T = 1/(A + B×ln(R) + C×(ln(R))³) − 273.15

具体的な計算例

10kΩ NTC (B=3950)、Arduino (5V/10bit)、プルアップ10kΩ、ADC値=350の場合:

Step 1: Rtherm = 10000 × 350 / (1023 − 350) = 5,200.6 Ω
Step 2: T = 1/(1/298.15 + ln(5200.6/10000)/3950) − 273.15
       = 1/(0.003354 + (-0.6539)/3950) − 273.15
       = 1/(0.003354 − 0.0001656) − 273.15
       = 1/0.003188 − 273.15
       = 313.66 − 273.15
       = 40.5℃

なぜSteinhart-Hartの逆変換にニュートン法を使うか

Steinhart-Hart方程式の逆関数(温度→抵抗値)は解析的に解けない。3次方程式の解の公式を使う方法もあるが、実装が複雑で数値安定性に欠ける。ニュートン法なら初期値をB定数方式から得られるため、通常5〜10回の反復で10桁以上の精度に収束する。

Excel関数やメーカーツールとの違い

ワンストップの変換環境

多くのサーミスタメーカー(村田製作所、TDK、Vishay)はExcelベースの計算シートを提供している。しかし自社製品専用で、他社品のB定数を入れて使うことは想定されていない。このツールは任意のパラメータに対応する。

ADC変換まで一気通貫

温度⇔抵抗の変換だけでなく、ADC分圧回路の設計補助まで含めている。プルアップ抵抗値やADC分解能を入力すれば、マイコンのanalogRead()値と温度の関係を直接確認できる。Excelで分圧の式を別セルに書く手間がない。

ルックアップテーブルの即時出力

ファームウェアに組み込むテーブルデータを、温度範囲と刻み幅を指定するだけで生成できる。CSVコピーでそのままコードに貼り付けられるのは、メーカーツールにはない利点だ。

サーミスタにまつわる豆知識

サーミスタの発明は1930年代

NTCサーミスタの商用化は1930年代にさかのぼる。ベル研究所のSamuel Rubinが金属酸化物セラミックスの温度-抵抗特性を研究し、温度センサとしての応用を開拓した。当初は電話交換機の温度補償に使われていた(Wikipedia: Thermistor)。

宇宙開発でもサーミスタは現役

NASAの火星探査機や国際宇宙ステーション(ISS)でも、NTCサーミスタは温度モニタリングに使われている。極端な温度環境(-150℃〜+150℃)でも動作するガラス封止型サーミスタは、放射線耐性と長寿命の面で他のセンサより有利な場面がある。

自己発熱効果に注意

サーミスタに電流を流すと、素子自体がジュール熱で発熱する(自己発熱効果)。測定電流が大きいと実際の環境温度より高い値を示してしまう。一般的には測定電流を100μA以下に抑えるか、パルス駆動で自己発熱を低減する。プルアップ抵抗を大きくすれば電流を減らせるが、ノイズ耐性とのトレードオフになる。

サーミスタ活用のコツ

B定数のスペック温度範囲を確認する

データシートに「B25/50」と記載されていれば、25℃と50℃の2点で測定されたB定数だ。「B25/85」なら25〜85℃の範囲。使用温度がこの範囲外に出る場合、精度が保証されないためSteinhart-Hartを検討しよう。

プルアップ抵抗はR25と同値を基本にする

サーミスタの分圧回路でADCの分解能を最大化するには、プルアップ抵抗をR25と同じ値にするのが定石だ。25℃のとき分圧がVref/2になり、ADCレンジの中央に来る。ただし、測定したい温度範囲が25℃から大きくずれる場合は、その中心温度での抵抗値に合わせるとよい。

校正は2点以上で行う

B定数方式を使う場合、最低2点の既知温度で実測値と比較する。氷水(0℃)と沸騰水(100℃)が手軽で信頼性が高い。実測値と計算値のズレが大きければ、B定数の微調整やSteinhart-Hartへの切り替えを検討しよう。

よくある質問

Q: PTCサーミスタには対応している?

現時点ではNTCサーミスタ専用だ。PTCは温度-抵抗特性が非線形で急峻な変化点を持つため、B定数やSteinhart-Hart方程式では近似できない。PTCは主に過電流保護やヒーター用途に使われ、温度計測には不向きなため、需要を見ながら対応を検討する。

Q: Steinhart-Hart係数はどこで確認できる?

一部のメーカー(Vishay、Amphenol等)はデータシートにA/B/C係数を直接記載している。記載がない場合は、3点の温度-抵抗データ(例: 0℃、25℃、50℃)から連立方程式を解いて算出する。このツールのデフォルト値は10kΩ NTC (B=3950) の近似係数を設定してある。

Q: 計算結果のデータはサーバーに送信される?

入力値・計算結果は一切サーバーに送信されない。すべてブラウザ内で計算が完結するため、設計中の回路パラメータが外部に漏れる心配はない。

Q: B定数方式とSteinhart-Hartのどちらを使うべき?

25℃付近(±25℃程度)の測定ならB定数で十分だ。精度差は0.1℃未満に収まる。-40℃〜+125℃のフルレンジや、食品管理・工業制御のように高精度が求められる場面ではSteinhart-Hart方程式を推奨する。迷ったら両方で計算して結果を比較してみるとよい。

まとめ

サーミスタの温度⇔抵抗変換は、B定数方式で手軽に始めてSteinhart-Hart方程式で精度を追い込める。ADC分圧回路の設計からルックアップテーブル生成まで、マイコン温度計の開発に必要な計算をこのツール1つでカバーした。

電子回路の設計に興味があるなら、プルアップ抵抗計算ツール抵抗カラーコード判別ツールも試してみて。


不具合や要望があれば、X (@MahiroMemo)から気軽に教えて。

M

Mahiro

Mahiro Appの開発者。Arduinoでサーミスタ温度計を作ったとき、B定数の符号を間違えて-200℃を表示させた経験から、このツールを作った。

運営者情報を見る

© 2026 サーミスタ温度⇔抵抗変換ツール