Raspberry Pi Pico(d_03)LM61 温度センサー
LM61 温度センサー
LM61は単一電源温度センサーです。2.7V, SOT-23 or TO-92 Temperature Sensorです。
※micro:bitの記事e_05からRaspberry Pi Picoで使えるように追記、修正等をしました。
外観
LM61の外観です。
電源電圧は2.7~10VなのでRaspberry Pi Picoの電源が使えます。600mVのオフセットと摂氏温度にリニアに比例(+10mV/℃)します。次式で出力します。
Vo=10mv/℃ X T℃ + 600mV
したがって、周囲温度は T℃=(Vo-600mV)/10mV になります。詳細はデータシートを参照して下さい。
接続図
Raspberry Pi Picoとの接続は下図のようにしました。LM61のVoutをA/D変換するためADC0(GP26)に接続しました。
※Raspberry Pi Picoのピン機能図はhttps://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdfにあります。
スクリプト
LM61の温度測定を試して見ます。スクリプトは以下のようにしました。
※開発環境はThonnyです。ThonnyでMicroPythonをRaspberry Pi Pico with RP2040にインストールして使っています。
machineモジュールにあるclass ‘ADC’を使ってA/D変換します。read_u16メソッドを使って読みます。
>>> help(ADC)
object <class 'ADC'> is of type type
read_u16 --
CORE_TEMP -- 4
A/D変換をADC0(GP26)で行う場合に①②③のいづれかでオブジェクトを作成します。①が分かりやすいように思います。
※import machine
①adc = machine.ADC(0)
②adc = machine.ADC(26)
③adc = machine.ADC(machine.Pin(26))
デジタル値は以下で得られます。
d=adc.read_u16()
ADCの基準値が3.3Vならアナログ値は
a=d*(3.3/2**16)=d*(3.3/65536)
になります。
スクリプトは以下のようにしました。
from machine import ADC
##LM61 2.7V, SOT-23 or TO-92 Temperature Sensor
# Vo=(+10mV/C x temp)+600mV >> temp=(Vo-600mv)/10mV
# ADC(0) ADC(26) ADC(Pin(26)) GP26
vo=ADC(0).read_u16()*(3.3/2**16) #ADC_ref=3.3V
temp=(vo-0.6)/0.01
print('Temp=%6.2f℃' %temp)
測定結果
>>> %Run -c $EDITOR_CONTENT
Temp= 32.83℃
CORE_TEMP
ちなみclass ‘ADC’にある定数CORE_TEMPは
>>> ADC.CORE_TEMP
4
ADC(4)と同じです。内部で接続されているのでGPIO番号はありません。
ダイオードの電圧Vbe’をADC(4)で調べます。
27℃でVbe = 0.706Vです。-1.721mv/℃で変化します。そのためコア温度は
core_temp =27-(Vbe’-0.706)/1.721mV
で得られます。
core_temp =27-((ADC(4).read_u16()*(3.3/2**16))-0.706)/0.001721
print('coreTemp=%6.2f℃' %core_temp)
測定結果
>>> %Run -c $EDITOR_CONTENT
coreTemp= 34.07℃
まとめ
Raspberry Pi PicoでMicroPythonを使ってLM61での温度測定が出来ました。
class ‘ADC’の使い方が分かりました。コア温度を測定できました。