Arduino

反射型フォトインタラプタを使ってみる

今回は、反射型フォトインタラプタを使ってLEDの点灯をさせる回路を作成していこうと思います。反射型フォトインタラプタはあまり見慣れたものではありませんが、ラインとレースカーなどでも使われる素子であるため、知っておいていいものかと思います。

フォトインタラプタとは

まず、フォトインタラプタについて説明します。フォトインタラプタとは発光素子と受光素子で構成されており、前者には赤外線LEDを設置し、後者にはフォトトランジスタを配置して両者間の入光・遮断を利用して制御信号を検知する素子です。

フォトインタラプタには大きく分けて透過型フォトインタラプタと反射型フォトインタラプタの2つに大別されます。

透過型フォトインタラプタ

発光素子と受光素子を対極に設置し、その間に光を発光します。その間に物体が光を遮ることにより、物体の有無を検出する仕組みです。

反射型フォトインタラプタ

発光素子と受光素子を同一な面に設置し、赤外線LEDの反射の有無によって物体を検知する仕組みです。赤外線は白色は反射し、黒色は吸収する特性があるため、ライントレースカーによく使われています。この内部には赤外線LEDとフォトトランジスタが設置されており、赤外線LEDが反射し、受光素子のトランジスタへ入光すると電流が流れる仕組みです。

EE-SY110

反射型フォトインタラプタは多種多様なものがありますが、今回はローム社の「EE-SY110」を使います。反射型フォトインタラプタは赤外線LED(ダイオード)とフォトトランジスタで構成されており、下図のようにダイオード側にはアノードとカソード、トランジスタ側にはコレクタとエミッタがあります。アノード端子に四角い切込みがありますので、それを基準にどの端子がカソード、コレクタ、エミッタなのかを判断してもらえればと思います。

反射する被体との距離は下図のグラフを見て頂くとわかる通り、6mmのが最適となっています。実際のところ、抵抗値を都度変更することでいくらでも調整することは可能です。

反射型フォトインタラプタを使ってLEDを光らせる

今回は、反射型フォトインタラプタで物体を検知したら、LEDが光るという単純な回路を作成します。

回路を組む

今回使う機器・端子は以下の通りです。

ブレッドボード抵抗・ジャンパー線などを使って回路を作る基板
抵抗1kΩ電圧を下げる端子
抵抗2kΩ電圧を下げる端子
抵抗290Ω電圧を下げる端子
反射型フォトインタラプタ
光の反射で物体の有無を検出
ジャンパー線電気を中継する線
電池ケース(単三4本)6v用電源
可変抵抗10kΩ可変に電圧を下げる端子
LED順方向に電圧を加えると発光する半導体

実際に組んだ回路はこちらになります。

配線図は以下を参考にしてください。

赤外線LED側の抵抗値

データシートをみると30mAの電流を赤外線LEDに流した時は最大で1.5Vの順電圧がかかります。今回もArduinoに流れても大丈夫な電流(30mAでも問題ないですが)を想定した20mAとすると最大で1.0vの順電圧となります。順電圧は線形となりますので、1.5v×20mA/30mA =1.0vで計算しました。 そのため、設置する抵抗には電源6Vから1.0v降下した電圧がかかります。今回は20mAの電流を流すとして抵抗値はオームの法則より、(6v – 1.0V)÷20mA= 250Ωの抵抗が必要となりますので、手元にあった290Ωを使用しています。

フォトトランジスタ側の抵抗値

データシートを見ると赤外線LED側に電流(順電流)に20mAを流した時、フォトトランジスタ側の電流(光電流)は0.6mAとなることがわかります。そのため、オームの法則より6v÷0.6mA=10kΩとなります。ただし、今回は検知の精度を調整するために可変抵抗10kΩを用いますが、可変抵抗が0Ωでも大電流が流れるのを防ぐために固定値の抵抗2kΩも設置します。(2kΩ+10kΩ)なお、可変抵抗を設置するときは最大値にしておき、徐々に抵抗値を低くして検知制度を調整してください。

可変抵抗

ここでは3362Pの可変抵抗を使いました。可変抵抗は下図のように3つのピンが裏側に設置されており、表面の溝をドライバで回すことにより抵抗値が変わります。①と②をつないでいる場合は、反時計回りに回すと最大値、②と③をつないでいるときは時計回りに回すと最大値となります。

実行結果

実行結果は以下のようになります。

まとめ

光の反射を利用して制御する反射型フォトインタラプタを使った回路を作成しました。白色を部品にかざすと光が反射するためLEDが点灯しました。

この実行結果の動画を見て気づくかもしれませんが、光が一定の明るさではありません。これはアナログ値を使っているためで、デジタル値に変換すれば一定になります。デジタル値にするためには、シュミットトリガーという、閾値電圧を2つもった仕組みを使ったNOTゲートを使うといいでしょう。特にマイコンではデジタル値の方が扱い易かったりします。