稼働中

Raspberry Pi Pico(d_18)GP2Y0A21YK 赤外線距離センサ

GP2Y0A21YK 距離センサ

GP2Y0A21YKはシャープ製のPSD赤外距離センサです。10~80cm間の距離を測定できます。
距離測定やタッチレススイッチなどの用途に使えるようです。
※micro:bitの記事e_06からRaspberry Pi Picoで使えるように追記、修正等をしました。

外観

GP2Y0A21YKの外観写真です。(以後はGP2Y0A21YKと記載します)
赤外線距離センサ外観

接続例

GP2Y0A21YKの電源電圧は4.5V~5.5Vなので外部電源が必要です。
Raspberry Pi Picoで測定するために、GP2Y0A21YKの出力端子をRaspberry Pi PicoのADC0(GP26)に接続しています。
GP2Y0A21YK 接続図

GP2Y0A21YKの説明

データシートから抜粋してGP2Y0A21YKの説明します。
GP2Y0A21YKは下図のように、赤外線LED (infrared emitting
diode)、PSD(position sensitive detector)、信号処理回路を集積した小型高性能測距センサです。
LIGHT EMITTER :赤外線LED
LIGHT DETECTOR:PSD
GP2Y0A21YK 外形図
※ GP2Y0A21YKのデータシートから抜粋

原理的にはPSDに反射物体が A 点と B 点では、PSD 上の光スポット位置が変化します。
この位置を電気的に信号処理することにより、反射物体の位置(距離)を検出することができるそうです。
GP2Y0A21YK 原理図
※ GP2Y0A21YKのデータシートから抜粋

GP2Y0A21YKのデータシートには反射物体との距離とGP2Y0A21YKのアナログ出力値のグラフがあります。
測定距離は10~80cmです。
このグラフの近似式を用いて距離を算出します。何かの資料では
距離 = 27.22×電圧 Vo^(-1.2027)
とありました。今回はこの値を使います。
GP2Y0A21YK 出力と距離
※ GP2Y0A21YKのデータシートから抜粋

ちなみに記事e_06ではVoと距離のグラフを読みとってエクセルなどの表計算でグラフ化して近似式を求め、
距離L(cm)=26.8995*出力電圧Vo^-1.3003 を使って計算しました。
GP2Y0A21YK 近似式

スクリプト

GP2Y0A21YKのスクリプトは以下のようにしました。class ‘ADC’を使います。
Raspberry Pi PicoにあるADC(アナログ-デジタル変換)を使います。
5秒ごとにセンサと白い画用紙との距離を変えて測定できるようにしました。
※開発環境はThonnyです。ThonnyでMicroPythonをRaspberry Pi Pico with RP2040にインストールして使っています。
※Raspberry Pi Pico単独で動作させるには’main.py’としてRaspberry Pi Picoにuploadして使います。


pico_gp2y0a21yk_01b.py
#!/usr/bin/env python
# -*- coding: utf-8 -*
from machine import Pin,ADC
import time
res=3.3/(2**16)      #16bit ADC   3.3V/65536 
for i in range(15):
    adc=ADC(0)       # or ADC(Pin(26)), ADC(26)
    vo=adc.read_u16()*res
    dist=27.22*vo**(-1.2027)
    print('%3d' %i,'%6.4f' %vo,'%6.1f' %dist)
    time.sleep(5)

実行結果

結果は以下のようになりました。※Thonnyのshellに表示されます。
10-80cmの距離では、ほぼ正確に距離測定出来ているようです。


>>> %Run -c $EDITOR_CONTENT
  0 0.3989   82.2       # 80cm
  1 0.4553   70.1       # 70cm
  2 0.5189   59.9       # 60cm
  3 0.6035   50.0       # 50cm
  4 0.7301   39.7       # 40cm
  5 0.7881   36.2       # 35cm
  6 0.8921   31.2       # 30cm
  7 1.0798   24.8       # 25cm
  8 1.3385   19.2       # 20cm
  9 1.6891   14.5       # 15cm
 10 2.4208    9.4       # 10cm
 11 2.9212    7.5       #  8cm
 12 3.1469    6.9       #  6cm
 13 2.9913    7.3       #  4cm
 14 1.3425   19.1       #  2cm
>>> 

まとめ

Raspberry Pi PicoでGP2Y0A21YKを使って距離測定ができました。距離測定や非接触スイッチなどに使えそうです。