Arduinoの基礎 - 赤外線LEDとフォトダイオード

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

フォトダイオードは、光のエネルギーを電流に変換することができる半導体である。
したがって、フォトダイオードに光を当てることでダイオードを通り電流が流れる。

フォトダイオードも通常のダイオードと同じく、アノードとカソードがあり、足の長い方がアノード、短い方がカソードである。
なお、光が当たっていない(反応の弱い波長の光しか当たっていない)場合でも、僅かながら電流は流れており、それを暗電流(ダークカレント)という。


赤外線LEDとフォトダイオードの使用

ここでは、Arduinoと赤外線LEDおよびフォトダイオードを組み合わせて、障害物の検出を行う。
Arduinoとの配線を下図に示す。

Arduino LED PhotoDiode 1.png


フォトダイオードの種類において、最も感度の良い波長は異なる。
ここでは、940[nm]の波長の赤外線への感度の高いフォトダイオードと940[nm]の赤外線LED(IR LED)を組み合わせて使用する。

Arduinoにおいて、digitalRead関数で入力を読み取った場合、3[V]が閾値となり、それより低い電圧の場合はLow、それより高い電圧ではHighとなる。

上図において、電流が流れている場合、フォトダイオードのVFは1.2[V]程度である。
このため、電流が流れている場合(つまり、障害物がなく、赤外線LEDの光が当たっている場合)は、digitalRead関数はLowを返す。
逆に、電流が流れていない場合(つまり、障害物があり、赤外線LEDの光が当たっていない場合)は、digitalRead関数はHighを返す。

これらの特徴を活かして、ブザーを鳴らしたり止めたりする。

 const int PIN_PD = 3;
 const int PIN_BZ = 4;
 
 void setup()
 {
    pinMode( PIN_PD, INPUT );
    pinMode( PIN_BZ, OUTPUT );
    digitalWrite( PIN_BZ, LOW );
 }
 
 void loop()
 {
    int pd = digitalRead( PIN_PD );
 
    if( pd == HIGH )
    {
       digitalWrite( PIN_BZ, HIGH );
       delay( 100 );
    }
    else
    {
       digitalWrite( PIN_BZ, LOW );
    }
 
    delay( 50 );
 }