Raspberry Pi Pico 2とサーミスタで始める!アナログ入力温度測定入門
※ 当ページには【広告/PR】を含む場合があります。
2025/08/19

前回の記事では、Raspberry Pi Pico 2の基本的な概要についてご紹介しました。 今回はそのPico 2をさらに活用し、身近な電子部品であるサーミスタを使った「温度計」の作製にチャレンジしてみましょう。 アナログ入力の基本を学びながら、実際に温度を測るデバイスを動かす楽しさを体験できます。
また、この記事では省略していますが、Pico2の具体的な利用方法などの基本操作に関しては以下の記事の内容をご覧ください。
サーミスタ抵抗ってどんなもの?
まずは、温度計の主役となる「サーミスタ抵抗」について、その基本的な仕組みから見ていきましょう。
サーミスタの基本的な特性と温度検出の仕組み
サーミスタは「thermally sensitive resistor」(熱に敏感な抵抗体)という言葉から来ており、その名の通り、温度変化によって電気抵抗が大きく変わる性質を持つ抵抗体です。
一般的に、金属は温度が上がると抵抗値も増えますが、サーミスタは半導体の特性を利用しており、温度が上がると抵抗値が減少する「NTCサーミスタ(Negative Temperature Coefficient Thermistor)」が最も一般的です。 マンガン、ニッケル、コバルトなどのセラミックスに電極を形成することで、わずかな温度変化でも抵抗値が大きく変動するように作られています。
Arduinoのようなマイコンでサーミスタの抵抗値を直接測ることはできないため、通常は固定抵抗と組み合わせて「分圧回路」を構成し、その中間点の電圧を測定します。 NTCサーミスタの場合、グラウンド側に固定抵抗を接続すると、温度が高いほど測定電圧も高くなるため、直感的に分かりやすくなります。
測定した電圧値からサーミスタの抵抗値を計算し、さらにその抵抗値から温度を算出します。 この温度変換には、サーミスタの特性を示す「B定数」を用いた近似式がよく使われます。
サーミスタの主な用途
サーミスタは、その小型さ、安価さ、そして高い感度から、私たちの身の回りの様々な製品で活躍しています。
温度測定・検出 : 家庭用電化製品(エアコン、冷蔵庫など)の温度制御 医療機器(体温計など) 自動車のエンジン温度監視 簡易的な温度計として、室内の気温やペットの飼育ケージ内の温度測定など
回路保護素子・加熱検知・ヒーター : PTCサーミスタ(Positive Temperature Coefficient Thermistor)は、ある温度を超えると急激に抵抗値が増大する特性を持ち、過電流保護や自己発熱ヒーターなどに利用
B定数
B定数(B-constant)は、サーミスタの「温度と電気抵抗値の関係」を示す非常に重要な特性値です。 サーミスタのデータシートには必ず記載されています。
B定数が大きいほど、温度変化に対する抵抗値の変化が大きくなるため、
NTCサーミスタの抵抗値から温度を求める簡易式は以下の通りです。
Eq. ()
: 計測時の周辺温度(ケルビン) : B定数(サーミスタの仕様による) : 計測時のサーミスタの抵抗値 : 基準の絶対温度(通常25℃)でのサーミスタの抵抗値 : 基準の絶対温度(通常25℃、298.15 K) : 自然対数
この式で計算された温度はケルビン単位なので、摂氏温度に変換するには、結果から273.15を引く必要があります。
Pico 2でサーミスタ温度計を作ってみよう!
それでは、実際にRaspberry Pi Pico 2を使ってサーミスタ温度計を作製する手順を順を追って説明していきます。
主な材料部品
今回使用する主な材料部品は以下の通りです。
Raspberry Pi Pico 2 : 今回の主役となるマイコンボードです。 NTC サーミスタ : Amazonなどで手軽に入手できる製品を使用します。 仕様: 25℃における抵抗値: 10kΩ, B値: 3950, 測定精度: 5%, 動作温度: -55℃~315℃
抵抗 : 室温程度の温度を計測する場合、サーミスタと同じ10kΩの抵抗を1つ用意します。 より広い温度範囲を測りたい場合は、測定したい温度域に合わせて1kΩ~50kΩ程度の抵抗も検討すると良いでしょう。
ブレッドボード、ジャンパーワイヤー : 回路の組み立てに使用します。
Picoのアナログ入力について
Raspberry Pi Pico 2には、アナログ入力が可能なGPIOピンがいくつかあります。
ArduinoIDEで利用する場合、
GPIO26、27、28
#define ADC_PIN_0 (26)
#define ADC_PIN_1 (27)
#define ADC_PIN_2 (28)
//...
ブレッドボードを使ったテスト回路の配線
今回はサーミスタと抵抗を直列に接続し、その中間点をPicoのアナログ入力ピンに接続するシンプルな分圧回路を構成します。
今回、サーミスタの抵抗電圧の読み取りにはアナログ入力の
GPIO26
外部電源からセンサーへ電圧供給する場合には、何かしら定電圧源が必要となります。 センサへの入力電圧として、Pico2側から
3V3
配線のイメージとしては以下のような模式図となります。

回路図的に書き直すと以下の図になります。

実際のブレッドボード上に配線した写真です。

サーミスタと抵抗が小さくて見にくいかもしれませんが、まぁいいでしょう。
プログラムの実装
次にPico2からシリアル通信で温度の概算値を求めてみます。
ArduinoIDEで以下のCコードをコンパイルし、Pico2に書き込みます。
/** アナログ入力ピン...GPIO26番 */
#define TempPin (26)
/** 製品のB定数 */
float Bval = 3950;
/** 雰囲気温度[K](=25℃) */
float T0 = 298.15;
/** 25℃のサーミスタ標準抵抗[Ω] */
float R0 = 10000;
/** 分圧測定用抵抗の値[Ω] */
float R1 = 10000;
/** アナログ入力の読取り用変数 */
int ReadVal = 0;
void setup() {
Serial.begin(115200);
pinMode(TempPin, INPUT);
}
void loop() {
//アナログ入力2でデータ読み取り
int ReadVal = analogRead(TempPin);
//出力電圧
float vout = (float) ReadVal / 1024.0f * 3.3f;
//サーミスタ抵抗へ換算
float rth = ( 3.3f / vout -1 ) * R1;
//温度[K]を計算
float tempK = 1 / ( 1/Bval * log( rth / R0 ) + ( 1/T0 ));
//摂氏[℃]へ変換
float tempC = tempK - 273.15;
//測定温度をシリアルへ表示
Serial.println(tempC);
//500ms待機
delay(500);
}
このプログラムでは、まず
setup()
loop()
500ミリ秒ごとに測定を繰り返すシンプルな構成です。
動作確認
プログラムの書き込みが完了し、ArduinoIDEのシリアルモニタから標準出力を確認すると、以下のようなレスポンスが得られます。

表示される温度がだいたい室温と同じであれば、正しく動作しています。 サーミスタを指で触ってみて、体温程度の温度に変化することでもおおよその動作確認ができます。
まとめ
今回はRaspberry Pi Pico 2とサーミスタを使って、簡単な温度計を作成しました。
サーミスタは温度によって抵抗値が変化する電子部品で、NTCサーミスタが温度センサーとして広く使われています。 Pico 2のアナログ入力機能と分圧回路を組み合わせることで、サーミスタの抵抗値変化を電圧として読み取ることができます。 B定数を用いた計算式をプログラムに組み込むことで、読み取った電圧値から正確な温度を算出できます。 シンプルな回路とコードで、身の回りの温度を測定するIoTデバイスの基礎を学ぶことができました。
皆さんの電子工作やIoTデバイス開発の次なるステップに繋がれば幸いです。