注釈

こんにちは!FacebookのSunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!仲間たちと一緒にRaspberry Pi、Arduino、ESP32についてさらに深く学びましょう。

参加する理由は?

  • 専門的なサポート: 当コミュニティとチームの助けを借りて、販売後の問題や技術的な課題を解決できます。

  • 学び・共有: スキルを向上させるためのヒントやチュートリアルを交換しましょう。

  • 特別なプレビュー: 新製品の発表やプレビューに早期アクセスできます。

  • 特別割引: 最新製品の独占的な割引を楽しめます。

  • フェスティブなプロモーションとプレゼント企画: プレゼント企画やホリデープロモーションに参加できます。

👉 私たちと一緒に探索し、創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!

2.13 サーモメーター

このレッスンでは、 サーモスター を使用してRaspberry Pi Pico 2 Wで温度を測定する方法を学びます。サーモスターは温度に応じて抵抗が大きく変化する抵抗器の一種です。具体的には、温度が上昇すると抵抗が減少する負の温度係数(NTC)サーモスターを使用します。

必要な部品

このプロジェクトでは、以下の部品が必要です。

キット一式を購入するのが便利です。こちらがリンクです:

名称

このキットに含まれる部品

リンク

Pico 2 Wスターターキット

450+

Pico 2 W Kit

また、以下のリンクから個別に購入することもできます。

SN

部品

数量

リンク

1

Pico 2 Wの概要

1

2

Micro USBケーブル

1

3

ブレッドボード

1

買う

4

ジャンパーワイヤー

数本

買う

5

抵抗器

1(10KΩ)

買う

6

サーミスター

1

買う

サーモスターの理解

NTCサーモスターは、温度に敏感な抵抗器です。温度が上昇するとその抵抗が減少します。これを電圧分割回路に組み込むことで、温度に応じて変化する電圧を測定することができます。Raspberry Pi Pico 2 Wのアナログ-デジタル変換器(ADC)を使用して、この電圧を読み取り、対応する温度を計算します。

回路図

sch_temp

この回路では、10KΩの抵抗器とNTCサーモスターが電圧分割回路を形成し、GP28がサーモスターにかかる電圧を読み取ります。10KΩの抵抗器は、電流を制限することで保護も提供します。

  • 高温: サーモスターの抵抗が減少し、その電圧も低下します。GP28は低い値を読み取ります。高温になると、抵抗はゼロに近づき、GP28は0に近い値を読み取ります。

  • 低温: サーモスターの抵抗が増加し、その電圧も上昇します。極端に冷たい場合、抵抗はほぼ無限大となり、GP28は65535に近い値を読み取ります。

10KΩの抵抗器は、3.3VとGNDが直接接続されるのを防ぎ、ショート回路を防止します。

配線図

wiring_temp

注釈

  • サーモスターは黒色で「103」のマークがあります。

  • 10KΩの抵抗器のカラーリングは赤、黒、黒、赤、茶色です。

コードの作成

アナログ値をサーモスターから読み取り、摂氏および華氏で温度を計算し、表示するMicroPythonプログラムを作成します。

注釈

  • 2.13_thermometer.pypico-2w-kit-main/micropython から開くか、このコードをThonnyにコピーして「Run」をクリックするか、F5キーを押して実行します。

  • 正しいインタープリターが選択されていることを確認してください:MicroPython(Raspberry Pi Pico)。COMxx。

import machine
import utime
import math

# 定数
BETA = 3950  # サーモスターのベータ係数
T0 = 298.15  # 基準温度(25°Cをケルビンに変換した値)
R0 = 10000   # 基準温度でのサーモスターの抵抗(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)

コードが実行されると、コンソールに摂氏および華氏での温度が表示されます。

  • サーモスターに触れて温度が上昇するのを確認します。

  • 氷や冷たい物を使って温度が低下するのを観察します。

コードの理解

  1. モジュールのインポート:

    • machine: ハードウェア関連の機能にアクセスします。

    • utime: sleepなどの時間関連の関数を使用します。

    • math: logなどの数学的関数を使用します。

  2. 定数:

    • BETA: サーモスターのベータ係数(データシートに記載されており、通常は約3950)。

    • T0: 基準温度(ケルビンで、25°C + 273.15)。

    • R0: 基準温度でのサーモスターの抵抗(10 kΩ)。

  3. ADCピンの初期化:

    • thermistor = machine.ADC(28): GP28をアナログ入力として設定します。

  4. メインループ:

    • 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秒の遅延を加えます。

温度計算の理解

  • スタインハート・ハートの方程式:

スタインハート・ハートの方程式は、温度に対するサーモスターの抵抗のモデルを提供します:

temp_format

  • T はサーモスターの温度(ケルビン)。

  • T0 は基準温度(通常25°C、ケルビンで273.15 + 25)。

  • B は材料のベータパラメータで、このキットに使われているNTCサーモスターのベータ係数は3950。

  • R は測定された抵抗。

  • R0 は基準温度T0での抵抗、25°CでのNTCサーモスターの抵抗は10kΩ。

安全上の注意

サーモスターに熱を加える際は注意してください。高温にさらすと、サーモスターやRaspberry Pi Pico 2が損傷する恐れがあります。

さらに実験する

  • データログ: 温度読み取り値をPicoのファイルにログとして保存するようにコードを修正します。

  • 温度閾値: 温度が特定の値を超えたときや下回ったときにアクションをトリガーする条件を追加します(例:LEDをオンにする、ブザーを鳴らす)。

  • 表示出力: LCDやOLEDディスプレイを接続して、温度の読み取り値を表示します。

結論

Raspberry Pi Pico 2 Wを使ってサーモスターを使用し、温度変化を測定する基本的なサーモメーターを作成しました。このプロジェクトは、アナログ入力を読み取り、計算を行い、センサーのデータを解釈して有用な情報を得る方法を示しています。