はじめに
Raspberry Pi Pico は アナログ入力(ADC) を持っており、ポテンショメータ(可変抵抗)を使って電圧を読み取ることができます。ポテンショメータ活用すると、ボリューム調整やロボットの制御など、さまざまな電子工作が可能になります!今回は、ポテンショメータの基本的な動作原理を解説しながら、Pico でアナログ値を読み取る方法を紹介します。
ポテンショメータとは?
ポテンショメータ(Potentiometer)とは、回転によって抵抗値が変化する電子部品 です。主に以下のような用途で使われます。
・音量調整(ボリューム)
・サーボモーターやLEDの制御
・ジョイスティックやロボット操作
ポテンショメータの内部構造と動作原理
ポテンショメータは、内部にカーボンや金属でできた 抵抗体 と 可動接点(スライダー) を持つ 可変抵抗器 です。
ポテンショメータは、電圧を 分圧 することで、任意の電圧を出力します。
Vout = Vin × R2/(R1+R2)
Vout : 出力電圧。PicoのADCピンで読み取る値
Vin : 入力電圧。3.3V
R1,R2 : 抵抗値。スライダーの位置で変化する
10kΩのポテンショメータでスライダーを中央(50%)にすると
Vout = 3.3(V) × 5kΩ / (5kΩ + 5kΩ) = 1.65(V)
スライダーを動かすとVoutが0~3.3Vの間で変化する
ラズベリーパイ Pico の ADC の仕組み
アナログ信号とデジタル信号
アナログ信号
連続的な値(電圧など)を持つ信号。ポテンショメータの出力はアナログ信号です。
デジタル信号
離散的な値を持つ信号(例: 0~65535)。コンピュータが処理できる形式に変換する必要があります。
ADC(アナログ-デジタルコンバータ)
ラズベリーパイ Pico には、アナログ信号をデジタル信号に変換するための ADC(アナログ-デジタルコンバータ) が内蔵されています。
入力範囲
Pico の ADC は、0V ~ 3.3V のアナログ電圧を取り込むことができます。
分解能
ADC は 16 ビットの分解能を持っています。つまり、入力電圧が 0V ~ 3.3V の範囲を 0 ~ 65535 の整数値に変換します。
デジタル値 = 入力電源 / 基準電源(3.3V) × 65535
変換時間
picoのADCは非常に高速。およそ500kサンプル/秒つまり、2マイクロ秒に1回サンプリングできる能力があります。
配線
PicoのADCは3.3Vまでしか計測できないので、ご注意ください。
RaspberryPi Pico | ポテンショメータ |
VBUS(40番) | VCC |
GND(38番) | GND |
GP26(20番) | OUT |

ポテンショメータを使う
ポテンショメータの値を取得する
from machine import ADC, Pin
from time import sleep
# ポテンショメータを GP26(ADC0)に接続
pot = ADC(Pin(26))
while True:
value = pot.read_u16() # 0 〜 65535 の範囲
voltage = (value / 65535) * 3.3 # 0〜3.3V に変換
print("ADC Value:", value, "Voltage:", voltage, "V")
sleep(0.1) # 0.1秒ごとに測定
ポテンショメータで LED の明るさを調整してみます。
LEDのアノードをGP15(PWM)に接続します。
from machine import Pin, ADC, PWM
from time import sleep
# ポテンショメータ(GP26)
pot = ADC(Pin(26))
# LED(GP15, PWM制御)
led = PWM(Pin(15))
led.freq(1000) # PWM周波数を1kHzに設定
while True:
value = pot.read_u16() # 0〜65535
duty = int((value / 65535) * 65535) # PWMデューティ比に変換
led.duty_u16(duty)
sleep(0.1)
まとめ
ポテンショメーターは非常に多くの場面で登場します。仕組みを理解すれば、アナログ入力を活用した電子工作の幅がぐっと広がります。ぜひチャレンジしてみてください。
コメント