RaspberryPi

RaspberryPi Pico 温度センサの使い方 【MicroPython Thonny】

はじめに

Raspberry Pi Pico に搭載されている温度センサの使い方について解説します。

~ この記事の内容 ~

こんなことに使える
  • 部屋などの環境温度を測れる。
  • 追加の部品の購入なしでセンサに触れる。
  • Pythonで組み込みプログラミングをさくっと体験できる。

以下の方は次の記事も合わせてご覧ください。

  • 買った後にどうやってセットアップするの?
  • Windows7だとPicoを認識しない。

環境

環境バージョンなど備考
開発PC Windows 7 手動のドライバインストールが必要です
開発環境thonny-3.3.11
ボードRaspberry Pi Pico  
ケーブルUSB2.0 TypeA - MicroB

実行結果

後述する、温度センサの値を取得するコードを実行結果は以下の通りです。

全体コード

Picoに搭載されている温度センサから、温度情報を読み取るコードです。
公式のGitHubの以下ページに掲載されています。

https://github.com/raspberrypi/pico-micropython-examples/blob/master/adc/temperature.py

import machine
import utime

# 温度センサが接続されている、
# 4つ目の ADC(アナログデジタルコンバータ) を取得します
sensor_temp = machine.ADC(4)

# ADCの最大電圧3.3Vを16bit(65535)で割って、
# 16bitの 1 目盛りのあたりの電圧(変換係数)を計算します( 約 0.00005V)
conversion_factor = 3.3 / (65535)

while True:

    # センサから取得した値(0~65535) を電圧に変換します。
    reading = sensor_temp.read_u16() * conversion_factor
   
    # 温度を計算します。センサは27度を基準にしているため、
    # 温度センサの数値を27度から引いて計算します。
    temperature = 27 - (reading - 0.706)/0.001721

    print(temperature)
    utime.sleep(2)

コードのポイント

変換係数の計算

センサから取得した16bitの値に変換係数をかけて、温度センサの値を電圧値に変換します。

    # センサから取得した値(0~65535) を電圧に変換します。
    reading = sensor_temp.read_u16() * conversion_factor

温度の計算

Picoに搭載されている温度センサは、27度(0.706V)を基準としているようで、
取得される電圧は、27度からの差分/傾き(どれだけ変化しているか?)の値として考える必要があります。

そのため、単純に取得した値をそのまま温度として積算するのではなく、
27度を基準とした際の変化量として計算することで、温度を算出することができます。

1度につき、0.001721V 変化するそうなので、以下の式で温度を計算します。
計算の流れは以下の通りです。

    # 温度を計算します。センサは27度を基準にしているため、
    # 温度センサの数値を27度から引いて計算します。
    temperature = 27 - (reading - 0.706)/0.001721

基準分を引き算して、基準からの変化量を求めます
reading(電圧値) - 0.706

基準からの変化量が、何度分であるかを計算します。
(reading - 0.706)/0.001721

基準の27度からの温度の変化量を引いて、現在の温度を計算します。
temperature = 27 - (reading - 0.706)/0.001721

まとめ

Raspberry Pi Pico に搭載されている温度センサの使い方について解説しました。
参考になればうれしいです。

応援・要望お待ちしてます

ブログを見ていて「この辺を詳しく知りたい」「このライブラリの使い方を知りたい」「こんなことで困ってる」...etc があれば、コメント・問い合わせ・Twitterで教えてください。質問・ご要望に合わせて解説記事を作ります。

ブログを気に入っていただけたり、「応援してもいいよ」という方がいたら、ブログやSNSでの紹介をお願いします。 あたたかい応援は、中の人の更新の大きな励みになります。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です