秋月電子等で入手可能なフォトリフレクタであるLBR127HLDの使い方について解説します。
電子工作を始めたての初心者向けの記事です。
フォトリフレクタとは
LEDとフォトトランジスタを組み合わせ、LEDから出た光がどれだけフォトトランジスタに入ってくるかを見ることで物体検知や距離測定などを行うセンサです。
ライントレースロボットのラインセンサなどに使われています。
一般的にLEDは赤外LEDを使用します。
フォトトランジスタとはフォトダイオードとトランジスタを組み合わせたものです。
フォトダイオードは光を受けると電流を流す部品で、その電流をトランジスタで大きくして扱いやすくしています。
使ってみる
今回はArdino Megaで試してみたいと思います。
LBR127HLDの製品情報・データシートはこちらから見ることができます。
回路
電子回路はLEDとフォトダイオードで別々で組めばよいです。
まずはLEDの回路を組みましょう。
LEDは普通、電源に抵抗を挟んで使用します。
LEDのデータシートにのっている順電圧(VF)と電流量からオームの法則を用いて計算できます。
LBR127HLDのデータシートを見ると、IF=20mAでVF=1.2Vとなっています。
LEDの抵抗値の計算は秋月電子さんのサイトが便利です。
このサイトに電源電圧とLEDの順電圧と電流値を入力すると抵抗値を計算してくれます。
電源が5Vだと190Ω、3.3Vだと105Ωでしょうか。
実際に抵抗を選ぶときにはこれに近いもの(少し大きめにした方が安全)を選んでください。
それではつないでいきましょう。
LBR127HLDをこのようにブレッドボードに差します。
透明な方がLEDで、長い方がアノード(+側)で短い方がカノード(-側)です。
抵抗を挟んで電源につなぎましょう。抵抗はLEDの+側と-側のどちら側につないでも大丈夫です。
今回は220Ω抵抗を挟んで5Vにつなぎます。
これでLEDが光るようになりました。赤外線なので肉眼では見えませんが、スマホのカメラ(内カメだけかも)等で見てみると紫色に光っていることが分かります。
次にフォトトランジスタの回路を組みます。
フォトトランジスタは光を受け取ると電流を流しますが、マイコンで読み取れるのは電圧です。
そのため、以下のような回路を組んで電圧に変換します。(オームの法則より、流れる電流を$I$をした時、Outputの電圧は$ VCC-I \cdot RL $となります。)
右側がフォトトランジスタで、上に生えているのが短い方(コレクター)、下に生えているのが長い方(エミッター)です。
この抵抗はデータシート内ではLoad Resistance($ R_L $)と表記されていて、1kΩが標準になっているようなので1kΩを使います。この値を大きくすると数値の変化が大きくなります。
プログラム
AnalogReadするだけです。
#define pin A0
void setup() {
Serial.begin(9600);
pinMode(pin,INPUT);
}
void loop() {
Serial.println(analogRead(pin));
}
何もないときに1023、指をかざしたときに900くらいになれば成功です。
反射光が強いと値が小さくなるので、白い紙に近づけると小さくなって黒い紙に近づけると大きくなります。
また、太陽光の赤外線に反応してしまうので、直射日光の当たらないところで使用しましょう。
3.3Vで動かしたい
3.3V動作のマイコンで動かすにはどうすればよいでしょうか?
まず、フォトトランジスタの電源を3.3Vにしてください。そのままだと5Vがマイコンに入ってしまいます。
また、LEDの電源も3.3Vにする場合は抵抗の値を調整してください。
フォトトランジスタの抵抗は1kΩのままでもよいですし、少し小さくしても良いかもしれません。
フォトリフレクタを自作したい
フォトリフレクタはLEDとフォトトランジスタを組み合わせるだけなので簡単に自作することができます。
市販に売られているものは出力が小さいので、欲しいものがないという場合には自作してみてもいいかもしれません。
その際には以下の点に気を付けてください。
- LEDとフォトトランジスタの波長を合わせる
- LEDとフォトトランジスタの間に仕切りを入れる(仕切りがないと直接光が入ってうまく検知できません。)