昨日、いしかわきょーすけさんが日記の中で、LEDを光センサとして使えないか?との実験をやっているのを目撃。なかなか面白そうな試みなので、私もブースターに点火して電光石火で追実験してみることにします。LED流用の元ネタは、ELECTRONICS SHELVESの実験記事から来ているようです。
まず、シリコンフォトダイオードの等価回路を右の図に示します。同様にPN接合を持つLEDも基本的な動作はこれと同じと考えられます。PN接合に光が入射すると、光量に比例した光電流Ilが流れます。Idはダイオード電流、Cjは接合容量(逆バイアス電圧で変化)、Rshは並列抵抗(極めて大きい)、Rsは直列抵抗(小さい)です。ほとんどの場合、負荷を短絡またはそれに近い状態にした電流モードで使用されます。各項目の関係式など具体的なところは、浜松ホトニクスのサイトにあるフォトダイオードの技術資料を参照してください。
LEDの順方向電圧はシリコンより高いので、端子電圧も高くなると思われます。赤の高輝度LEDに光を当てて解放電圧を実測したところ、1.2V程出ていました。シリコンの倍以上の値です。このため、LEDの出力を測るため、電圧モードで使用してみることにします。等価回路から分かるように出力電圧は光量に対してlog特性となり、温度に大きく影響されます(だから使われない)。
ということで、テキトーにでっち上げた実験回路を示します。マイコンに内蔵されているアナログコンパレータで出力電圧を基準値と比較して、入射光の有無を判断します。また、計測動作とLEDの駆動を時分割で行い、1個のLEDを受光素子と発光素子として使用します。プログラムの動作は、次のような流れになります。
比較電圧を超えるまでの時間がアナログ的な光量(短いほど明るい)を示しています。計測中はPB2に"H"を出力しているので、オシロで当たれば光量による充電時間の変化を直接観測することができます。銅鉄バラストのランプなどリプル分の多い光源の場合、スレッショルド付近でパルス幅が大きくふらつくのが分かります。白熱灯や電子バラストのランプの場合は安定しています。今回はマイコンに50円のATtiny11を使いましたが、ADCが10チャネルあるATtiny26なら、10個のLEDを同時に制御できると思います。
