Raspberry Pi Pico を使ってみた [4] – Micro Python で A/D 変換


Raspberry Pi Pico には 4端子のアナログ入力を持っています.今回はこの機能を使って、端子のアナログ入力電圧の測定と、内部温度の測定を行なってみます.
Raspberry Pi Pico の ADC
RP2040 は内部に A/D コンバータを持ち、下の図のように GPIO[26] ~ GPIO[29] の外部入力ピンと、チップ内部の温度センサに接続されています. A/D コンバータは 12bit SAR 型、サンプリングは 48MHz のクロックを使用時で 500kS/s になります.
Raspberry Pi Pico の PWM

外部入力アナログ電圧を 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)

参考

MicroPython ライブラリのドキュメント

返信を残す

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