本記事の内容
Seeeduino xiao RP2040でMicroPythonを使って、ADC(アナログデジタル変換)を行う方法について解説します。
アナログ入力センサの代表格である光センサ(CdSセル)と温度センサ(サーミスタ)を使用して、実際のプログラムコードも紹介しながら、照度と温度のデジタル値を取得してみました。
ADC(アナログデジタル変換)とは
今回解説するのは、MicroPythonでADC(アナログデジタル変換)を行う方法についてです。実は、Seeeduino xiao RP2040のWikiを確認しても、ADCに関しては一言も記載されていません。
ちなみに、Raspberry Pi Picoにはアナログ電圧を読み取って、デジタル値を取得できるピンが3本あります。GP26からGP28であり、それぞれADC0からADC2というようにピン配置図にも記載されています。
「Raspberry Pi Picoと同じRP2040プロセッサを搭載しているのであれば、Seeeduino xiao RP2040でもADCは可能なのでは?」と思ったのは、私だけではないはずです。
前回の記事でも記載していますが、Seeeduino xiao RP2040ではGPIOピンがP0~P7(P5は除く)+P26~P29というように不自然に飛んでいながらも、ちゃんと26~28は残してあります。
実際に試してところ、、、P26~P28でアナログデジタル変換は可能でした!これは助かりました。
ということで、以下にSeeeduino xiao RP2040でADCを行うにあたっての配線とプログラムコードを解説していきます。
必要なもの
- Seeeduino xiao RP2040
- 10kΩ抵抗
- CdSセル、もしくはサーミスタ
配線
配線は至ってシンプルです。3V3からの出力をCdSセル、もしくはサーミスタを介して、Seeeduino xiao RP2040のP26~28のいずれかに繋ぐだけです。
CdSセル、サーミスタを使用した際の、P26の入力電圧の期待値は以下の通りです。
CdSセル | 抵抗値 | P26の入力電圧 |
明るい | ↓(下がる) | ↑(上がる) |
暗い | ↑(上がる) | ↓(下がる) |
サーミスタ | 抵抗値 | P26の入力電圧 |
熱い | ↓(下がる) | ↑(上がる) |
冷たい | ↑(上がる) | ↓(下がる) |
プログラムコード
Seeeduino xiao RP2040でADCを利用して、P26の入力電圧の値を算出させるコードになります。CdSセルとサーミスタのどちらでも、コードに変わりはありません。
import machine
import time
cds = machine.ADC(0)
coeff = 3.3/65535
for i in range(100):
v = cds.read_u16()*coeff
print("V:" + str(v))
time.sleep(1)
実行結果
CdSセル
明るい環境:CdSセルの抵抗値が下がり、P26の入力電圧が上がる
暗い環境:CdSセルの抵抗値が上がり、P26の入力電圧が下がる
ことが確かに確かめられました。
サーミスタ
こちらもCdSセルと同様の配線、コードで実行しています。同じく以下の事象が確認できました。
熱い環境:CdSセルの抵抗値が下がり、P26の入力電圧が上がる
冷たい環境:CdSセルの抵抗値が上がり、P26の入力電圧が下がる
まとめ
Seeeduino xiao RP2040でADCが使用できるのは、ピンP26からP28になります。Raspberry Pi Picoと同様に、machine.ADC()のコードでアナログ値を取得できることが確認できました。
コメント