Raspberry Pi Pico には 4端子のアナログ入力を持っています.今回はこの機能を使って、端子のアナログ入力電圧の測定と、内部温度の測定を行なってみます.
Raspberry Pi Pico の ADC
RP2040 は内部に A/D コンバータを持ち、下の図のように GPIO[26] ~ GPIO[29] の外部入力ピンと、チップ内部の温度センサに接続されています. A/D コンバータは 12bit SAR 型、サンプリングは 48MHz のクロックを使用時で 500kS/s になります.外部入力アナログ電圧を A/D 変換する
ハードウェア接続
下に Raspberry Pi Pico の I/O 端子接続を示します.3.3V の電源電圧を可変抵抗で分圧し、タップ – GND 間の電圧を ADC0 端子に入力しています.ソフトウェア(Micro Python コード)
これまでと同様、Micro Python を使用します. MicroPython ライブラリのドキュメントを参照し、アナログ-デジタルコンバーターへのインターフェイスに使う ADC クラスの使用例を確認しながらコーディングしていきます.# 指定のピン(ADC0)の ADC オブジェクトを作成 ad = machine.ADC(0) # アナログ値を読み込み voltage = ad.read_u16() * 3.3 / (65535)
from machine import ADC, Pin import time, math ad = machine.ADC(0) while True: voltage = ad.read_u16() * 3.3 / (65535) print(voltage) time.sleep(0.1)
内部温度センサを使用して温度を測定する
ハードウェア接続
RP2040 内蔵の温度センサを利用するため、追加回路は必要ありません.ソフトウェア(Micro Python コード)
温度センサは RP2040 内部で ADC(4) に接続されているのでこれを使い電圧値を読み取ります. 電圧値から温度への換算はデータシートの記述に従っています.from machine import ADC, Pin import time, math # 温度センサは ADC(4) に接続 ad = machine.ADC(4) while True: voltage = ad.read_u16() * 3.3 / (65535) temp = 27 - (voltage - 0.706)/0.001721 # Vbe=[0.706V], Slope= 1.721[mV/degree] print(temp) time.sleep(0.1)