注釈
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Raspberry Pi、Arduino、ESP32をさらに深く学び、仲間とともに楽しんでください。
なぜ参加するのか?
専門的なサポート:販売後の問題や技術的な課題をコミュニティやチームのサポートで解決できます。
学びと共有:スキルを向上させるためにヒントやチュートリアルを交換しましょう。
限定プレビュー:新製品の発表や先行情報をいち早く手に入れましょう。
特別割引:最新の製品に対して限定割引を享受できます。
イベント・プレゼントキャンペーン:プレゼント企画や特別プロモーションに参加できます。
👉 一緒に探索し、創造していきませんか? [こちら] をクリックして今すぐ参加しましょう!
2.13 温度計
このレッスンでは、Raspberry Pi Pico 2を使用して、 サーミスター を使った温度測定方法を学びます。サーミスターは、温度に応じて抵抗が大きく変化する種類の抵抗器です。特に、負の温度係数(NTC)サーミスターを使用し、温度が上がると抵抗が減少します。
必要なもの
このプロジェクトには、以下のコンポーネントが必要です。
一式で購入するのが便利です。こちらからリンクをご覧ください:
名前 |
キット内アイテム |
リンク |
|---|---|---|
Newton Lab Kit |
450以上 |
個別に購入したい場合は、以下のリンクから購入できます。
SN |
コンポーネント |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1(10KΩ) |
||
6 |
1 |
サーミスターの理解
NTCサーミスターは温度感知型の抵抗器で、温度が上昇するにつれてその抵抗が減少します。これを電圧分割回路に組み込むことで、温度に応じて変化する電圧を測定できます。Raspberry Pi Pico 2のアナログ・デジタル変換器(ADC)を使って、この電圧を読み取り、対応する温度を計算します。
回路図

この回路では、10KΩの抵抗とNTCサーミスターが電圧分割回路を形成し、GP28がサーミスターにかかる電圧を読み取ります。10KΩの抵抗は、電流を制限することで保護作用も果たします。
高温:サーミスターの抵抗が減少し、電圧が下がり、GP28の読み取り値も低くなります。高温になると、抵抗はゼロに近づき、GP28の値は0に近づきます。
低温:サーミスターの抵抗が増加し、電圧が上昇し、GP28の値も高くなります。極端に冷たい場合、抵抗はほぼ無限大になり、GP28の値は65535に近づきます。
10KΩの抵抗は、3.3VとGNDが直接接続されないようにして、ショートを防ぎます。
配線図

コードを書く
サーミスターからアナログ値を読み取り、摂氏および華氏で温度を計算して表示するMicroPythonプログラムを作成します。
注釈
2.13_thermometer.pyをnewton-lab-kit/micropythonから開くか、コードをThonnyにコピーして、「実行」ボタンを押すか、F5キーを押して実行してください。適切なインタープリターが選択されていることを確認してください:MicroPython(Raspberry Pi Pico)。COMxx。
import machine
import utime
import math
# 定数
BETA = 3950 # サーミスターのベータ係数
T0 = 298.15 # 基準温度(25°Cをケルビンに変換)
R0 = 10000 # T0での抵抗(10 kΩ)
# GP28でADCを初期化
thermistor = machine.ADC(28)
while True:
# アナログ値(0-65535)を読み取る
analog_value = thermistor.read_u16()
# アナログ値を電圧に変換
voltage = analog_value * 3.3 / 65535
# サーミスターの抵抗を計算
Rt = (voltage * R0) / (3.3 - voltage)
# ベータ式を使ってケルビンで温度を計算
tempK = 1 / ( (1 / T0) + (1 / BETA) * math.log(Rt / R0) )
# ケルビンから摂氏に変換
tempC = tempK - 273.15
# 摂氏から華氏に変換
tempF = tempC * 9 / 5 + 32
# 結果を表示
print('Temperature: {:.2f}°C {:.2f}°F'.format(tempC, tempF))
# 次の読み取りまで待機
utime.sleep(2)
コードを実行すると、コンソールに摂氏と華氏の温度が表示されます。
サーミスターに触れて温度が上昇するのを確認してみましょう。
氷や冷たい物体を使って温度が下がるのを観察しましょう。
コードの理解
モジュールのインポート:
machine: ハードウェア関連の機能にアクセスします。utime: 時間関連の関数(例えばスリープ)を使用できます。math: 数学関数(例えば対数)を提供します。
定数:
BETA: サーミスターのベータ係数(データシートに記載されており、通常3950付近)。T0: 基準温度(ケルビンで25°Cは298.15K)。R0: T0でのサーミスターの抵抗(10 kΩ)。
ADCピンの初期化:
thermistor = machine.ADC(28): GP28をアナログ入力として設定します。
メインループ:
analog_value = thermistor.read_u16(): 生のアナログ値を読み取ります。voltage = analog_value * 3.3 / 65535: 生の値を電圧に変換します。Rt = (voltage * R0) / (3.3 - voltage): 電圧分割回路の公式を使ってサーミスターの抵抗を計算します。tempK = 1 / ( (1 / T0) + (1 / BETA) * math.log(Rt / R0) ): ベータ式を使ってケルビン温度を計算します。摂氏と華氏に変換:
tempC = tempK - 273.15 tempF = tempC * 9 / 5 + 32
print('Temperature: {:.2f}°C {:.2f}°F'.format(tempC, tempF)): 結果を表示utime.sleep(2): 次の読み取りまで2秒待機。
温度計算の理解
スティーンハート・ハート式:
サーミスターの抵抗と温度の関係を示す式です:
Tはサーミスターの温度(ケルビン)。T0は基準温度、通常は25°C(ケルビンでは273.15 + 25)。Bは材料のベータ係数で、NTCサーミスターのこのキットでは3950。Rは測定した抵抗。R0は基準温度T0での抵抗値で、このキットのNTCサーミスターは25°Cで10キロオームです。
安全上の注意
サーミスターに熱を加える際は注意してください。過剰な温度にさらすと、サーミスターやRaspberry Pi Pico 2が損傷する恐れがあります。
さらに実験してみよう
データロギング:コードを修正して、温度データをPicoのファイルに記録するようにしましょう。
温度閾値:温度が一定の値を超えたり、下回ったりした場合にアクションをトリガーする条件を追加しましょう(例:LEDを点灯させる、ブザーを鳴らす)。
表示出力:LCDやOLEDディスプレイを接続して、温度データを表示しましょう。
結論
Raspberry Pi Pico 2を使ってサーミスターで温度変化を測定できる基本的な温度計を作成しました。このプロジェクトでは、アナログ入力の読み取り、計算、センサーのデータを解釈して有意義な情報を得る方法を示しました。
