【Raspberry Pi Pico入門 – 16】ADコンバータを使ってみる
概要
今回はADコンバータを使ってみます。ADのAはアナログ、Dはデジタルの略で、ADコンバータはアナログ信号をデジタル信号に変換する機能です。コンバータも略してADCと呼ばれることも多いです。
もっと大ざっぱに説明するなら、電圧を読み取って数値化する電圧計のような機能です。可変抵抗でマイコン内の変数を微調整したり、センサーから出てきた電圧を数値化したりと使用頻度はかなり高いです。
実行環境
IDE:Arduino IDE 2.2.1
MCU:Raspberry Pi Pico
回路
以下のように配線します。可変抵抗(ボリューム)で3.3Vを分圧し、GPIOに接続します。詳細は解説にて説明します。
コーディング
新しくスケッチを作成し、以下の内容をコピペしてください。
const int VOLUME_PIN = 26; void setup() { Serial.begin(115200); analogReadResolution(12); pinMode(VOLUME_PIN, INPUT); } void loop() { int volt = analogRead(VOLUME_PIN); Serial.println(volt); delay(500); }
動作確認
Arduino IDEのシリアルコンソールを開くと数字が1秒毎に出力されていると思います。可変抵抗のつまみを回したときに数字が変われば成功です。
解説
回路
今回の回路は以下のような回路図になっています。可変抵抗は抵抗値を自由に変えられる電子部品で、抵抗の途中に線が一本追加されたような記号になっています。
可変抵抗を等価回路で表すと下図のような感じになります。
「10kΩ」というのはR1+R2の抵抗値です。可変抵抗のつまみを回すとR1とR2の値が変わりますが、R1+R2=10kΩであることは変わりません。結果的にSIGNALからは3.3VをR1とR2で分圧した電圧が出力されます。(要するにこの回路だと0~3.3Vの電圧が出てきます)
可変抵抗でSIGNALの電圧が変わる様子をシミュレーションしてみました。3.3V側とGND側の抵抗が変わることでTPの電圧が変動しています。
ADコンバータの使い方
ADCで重要なパラメータは「基準電圧」と「レンジ」です。
基準電圧はADCが何Vまで測れるか、というパラメータです。Raspberry Pi Pico内蔵のADコンバータの基準電圧は3.3Vです。
レンジは0Vから基準電圧をどれだけ細かく表すかという数字です。レンジの最大値=基準電圧となり、レンジが4095だと3.3Vを4096分割して数値化するということになります。(0も一段階として数えるので、最大値は4095です)
レンジは通常、「bit」という単位で表し、最大値が「2の(bit)乗-1」となります。(12bitだと、2^12-1=4095)
例えば基準電圧3.3V、レンジ12bitのADコンバータに2.0Vを入力した場合、
$$ 2.0[V] \times 2^{12} \div 3.3[V] = 2482.4242… \simeq 2482$$
となります。
逆にADCの値を読み取った結果が3000だった場合、
$$ 3000 \times 3.3[V] \div 2^{12} \simeq 2.42[V]$$
がGPIO26に印加されているということになります。
コードの解説
- analogReadResolution(12);
ADCのレンジを設定します。この関数はRaspberry Pi Pico専用の関数で、他のArduinoでは使用できません。
設定できるMAX値は12bitなので、最も精度が高くなる12bitに設定することが多いです。 - analogRead(VOLUME_PIN);
引数で指定したピンのアナログ値を戻り値として返します。
ADCはマイコン内部の回路を使用している関係で、使えるピンが限られています。Raspberry Pi PicoではGP26、GP27、GP28がADCとして使用できます。
ディスカッション
コメント一覧
まだ、コメントがありません