内蔵温度センサーの値を取得してみた。(RP2040チップADC内蔵センサ)(Raspberry Pi Pico)

つぶやき

Raspberry Pi Pico 搭載の温度センサーの値を読み取ってRP2040チップの温度を測定してみます。

import machine
import utime

# 内蔵温度センサー(ADCチャンネル4)を設定
sensor_temp = machine.ADC(4)

# 16ビットADCの変換係数(3.3Vスケール)
conversion_factor = 3.3 / (65535)

while True:
    # ADCの読み取り値(0〜65535)を電圧(0〜3.3V)に変換
    reading = sensor_temp.read_u16() * conversion_factor

    # 温度換算:27°C時に0.706V、以降1°Cあたり1.721mVずつ変化
    temperature = 27 - (reading - 0.706)/0.001721

    print(f"{temperature:.1f}°C")
    utime.sleep(2)

なお、ADC(4) は内蔵温度センサー専用のため、「温度を測る」以外の用途には使えません。

OLEDディスプレイに表示させてみた

from machine import I2C, Pin, ADC
from ssd1306 import SSD1306_I2C
from utime import sleep

# I2C通信の初期化(SCL: GP17, SDA: GP16)
i2c = I2C(0, scl=Pin(17), sda=Pin(16))

# OLEDディスプレイの初期化(解像度 128x64)
oled = SSD1306_I2C(128, 64, i2c)

# 内蔵温度センサー(ADCチャンネル4)を設定
t = ADC(4)

# ADC値を電圧に変換するための係数(3.3V / 65535)
f = 3.3 / 65535

while True:
    # 温度センサーからADC値を取得して電圧に変換
    v = t.read_u16() * f

    # 電圧から摂氏温度を計算(公式に基づく)
    temp = 27 - (v - 0.706) / 0.001721

    # OLED画面をクリアして、温度を表示
    oled.fill(0)
    oled.text("Temp:", 0, 0)
    oled.text(f"{temp:.1f} C", 0, 16)
    oled.show()

    # 2秒待って次の更新へ
    sleep(2)

コメント