Raspberry Pi PicoにはADCが3つ利用できる(31のGP26、32のGP27,34のGP28の各ピン)。ここではアナログ温度センサーLM61CIZで測定した温度をOLEDで表示してみる。
使用する部品
秋月電子通商の高精度IC温度センサーLM61CIZを使用する。この温度センサーは測定した温度に応じた電圧を出力する。部品自体はトランジスタと同じ形状をしている。
LM61の出力電圧$V_O$と温度$T$との関係はデータシートには次の式で示されている。
$V_O=100mV/^\circ C\times T + 600mV$
この式から温度$T$は次の式で得られる。
$T = 100\times(V_O - 0.6)[^\circ C]$
配線
LM61との接続
Raspberry Pi PicoとLM61CIZとの接続を次の表に示す。
LM61CIZのピン | Picoのピン(物理ピン) |
---|---|
+VS(1) | 3v3(5) |
VOUT(2) | GP26(31) |
GND(3) | GND(33) |
OLEDとの接続
Raspberry Pi PicoとOLEDの接続を次の表に示す。
OLEDのピン | Picoのピン(物理ピン) |
---|---|
VDD | 3V3(36) |
GND | GND(3) |
SDA | GP14(19) |
SCL | GPD15(20) |
配線図
配線図を以下に示す。
プログラム
MMBasicでADCを利用するに下記の手順を踏む。
-
SETPIN
コマンドで3つあるADCのピン(GP26、GP27、GP28)のいずれかをアナログ入力ピン(AIN
)として設定する -
PIN
関数でそのピンの値(電圧)を読み取る - 読み取った値から温度を算出する
これはコマンドプロンプトでも確認できる。
> SETPIN GP26, AIN
> PRINT PIN(GP26)
0.8601221001
次に、GP26ピンをアナログ入力(AIN)に設定し、5秒ごとにそのピンの電圧を読み取り、上記の変換式で温度を計算し、電圧と温度をOLEDに表示するプログラムを以下に示す。
CLS ' Clear OLED screen
Dim V!, temp!, stemp$ ' Define variables
SetPin GP26, AIN ' Set GP26 pin to analog input
Do
V! = Pin(GP26) ' Get LM61 output voltage
temp! = 100 * (V! - 0.6) ' Convert voltage to temperature
stemp$ = Str$(temp!, 2, 1) + Chr$(&H60) + "C" ' Make string of temperature
Text 0, 0, Str$(V!) + "V" ' Display LM61 voltage
Text 0, 15, stemp$,,3 ' Display temperature string at font #3
Pause 5000 ' wait 5 sec
Loop
End
参考:定義済み読み取り専用変数
定義済み読み取り専用変数はPicoMiteの稼働しているRaspberry Pi Picoのさまざまな情報を保持している。この変数の内容はMM.INFO
関数で参照できる。
接続されているLCDパネルとGP26ピンの状態を
接続されているLCDパネルを表示
> PRINT MM.INFO(LCDPANEL)
SSD1306I2C
GP26(物理ピン31)の状態を表示
> PRINT MM.INFO(PIN GP26)
AIN