【CdSセルとSeeeduino xiao】MicroPythonでADCを使う方法まとめ

seeeduino-xiao-adc-top Seeeduino xiao

本記事の内容

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
公式ページより

「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セル、もしくはサーミスタ
created by Rinker
¥250 (2024/07/25 03:39:23時点 楽天市場調べ-詳細)

配線

Seeeduino-xiao-RP2040
公式ページより

配線は至ってシンプルです。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()のコードでアナログ値を取得できることが確認できました。

コメント