うしこlog
公開: 2014/03/02

フォトリフレクタの使い方

今回の内容

 ライントレーサを作るにあたって、ラインの検知は重要です。そこで、今回はラインを検知するためにAVRとフォトリフレクタを使用し、基本的な使い方について説明します。
フォトリフレクタは光を検知する役割をするのですが、この性質を利用して黒線または白線を検知することができます。

この記事の目次

前回と次回の内容は?

 前回は、ライントレーサ車体部を作成しました。
次回は、ラインを検知するためのセンサであるフォトリフレクタの使い方を説明します。モータドライバやフォトリフレクタの説明が終わり次第、ライントレーサの回路部を作製していきます。

 また、ライントレーサで使用するAVRの使い方がわからない方は、合わせてAVRの環境構築と使い方もご覧ください。

ライントレーサに関する記事

  1. ライントレーサ車体部
  2. モータドライバーの使い方
  3. この記事
  4. ライントレーサ回路部
  5. ライントレーサプログラム部

使用するフォトリフレクタ

フォトリフレクタについて

 フォトリフレクタとは、発光部と受光部から構成され、発光部から出る光を、検知したい物体で遮り、反射された光を受光部で受信することにより、物体を検知するセンサです。

 今回は、ライントレーサが走るラインを検知するのに使います。例えばラインが黒、フィールドが白だとすると、黒は光を吸収、白は光を反射させるため、ラインとフィールドの検出をすることができます。今回使用するフォトリフレクタは、LBR-127HLDを使用します。

フォトリフレクタLBR-127HLD

 今回使用するフォトリフレクタであるLBR-127HLDは、こんな感じです。結構小さいですね。 発光部と受光部が確認できると思います。 このLBR-127HLDは、発光部として、赤外線LEDが使われているので蛍光灯などの光の影響を受けにくいのが特徴です。

LBR-127HLDの外観
LBR-127HLDの外観

 図1のデータシート上の「Top Viewの回路図のピン番号」と「実物(LBR-127HLD)のピン配置」は対応しています。そのため、この図でLBR-127HLDの右上のピンの番号は1となります。

フォトリフレクタの使い方

フォトリフレクタを用いた回路図

 次にフォトリフレクタを使っていきます。また電源であるVccは5Vとします。回路図は、こんな感じです。このLBR-127HLDは、コレクタ側に抵抗を付けて動作させます。出力電圧は、グランド-コレクタ間の電圧とします。可変抵抗はセンサの感度を調節する役割を果たします。

 本当は、コレクタ側の抵抗は可変抵抗を30k、固定抵抗10kのものを使用したかったのですが、10k以上の可変抵抗を持っていなかったため、可変抵抗10k、固定抵抗47kを使用します。

LBR-127HLDを使った回路図
LBR-127HLDを使った回路図

フォトリフレクタの動作確認

 実際に回路を組んで、フォトリフレクタLBR-127HLDの動作を確認してみました。

フォトリフレクタ動作確認
フォトリフレクタ動作確認

 フォトリフレクタに指をかざしてみると、フォトリフレクタ出力側に付けた赤LEDが光ります。ちゃんと動きましたね。

フォトリフレクタ物体検知
フォトリフレクタ物体検知

AVRとフォトリフレクタ

AVRとフォトリフレクタの連携

 フォトリフレクタを入力センサとして使用し、AVRと組み合わせてみます。使用したAVRはATMega168を使用しました。動作としては、フォトリフレクタに白色の物体が遮ったことをAVRが検知し、AVRに繋いだ赤LEDが光るようにします。
早速、回路図を示します。

フォトリフレクタとAVRを使用した回路図
フォトリフレクタとAVRを使用した回路図

 フォトリフレクタの出力である4番ピン(図中のVce)を、AVRのPC5に繋げます。これが入力です。 PC5には、なにもかざしていないとき(または、黒色の物体)のときはHIGHが、白色の物体をかざしたときはLOWが入力されます。
次に、PC5にLOWが入力されたとき(物体検知)、AVRのPD0に繋げた赤LEDが光るようにプログラムを組みます。プログラムとしては以下の感じ。これをAVRに書き込みます。

#include<avr/io.h>
int main(void){
  DDRC = 0b00000000;  //portCは全て入力モード
  DDRD = 0b11111111;  //portDは全て出力モード

  PORTD = 0b00000000;   

  while(1){   //無限ループ
    if(bit_is_clear(PINC,PC5)){  //PC5がLOWなら
      PORTD = 0b00000001;  //PD0をHIGHに(LED点灯)
    }
    else{
      PORTD = 0b00000000;  //PD0をLOWに(LED消灯)
    }
  }
  return 0;
}

 最後に、AVRに上記のプログラムを書き込み、回路を作成します。作成した回路は以下の通りです。

フォトリフレクタとAVRを使用した回路
フォトリフレクタとAVRを使用した回路

 指をフォトリフレクタに近づけると、赤LEDが光ります。

AVRとフォトリフレクタによる物体検知
AVRとフォトリフレクタによる物体検知

 このとき、赤LEDが光る距離(フォトトランジスタが反応する距離)はこんな感じです。実際に測ってはいませんが、1cmくらいかな。

フォトトランジスタが反応する距離
フォトトランジスタが反応する距離

 また、指をフォトトランジスタに近づける前のVceは4.55[V]で、指を近づけた時のVceは0.192[V]でした。

フォトトランジスタHIGH電圧
フォトトランジスタHIGH電圧
フォトトランジスタLOW電圧
フォトトランジスタLOW電圧
<< モータドライバーの使い方 ライントレーサ回路部へ >>

追記

 可変抵抗30kのものを手に入れたので、コレクタ側の抵抗として可変抵抗30k、固定抵抗10kでフォトトランジスタを動かしました。動かした結果を図10, 11, 12に示します。またライントレーサでは、この抵抗値を使用します。
 指を近づける前のVceは4.88[V]、指を近づけたときのVceは0.2541[V]でした。センサが白に反応したぎりぎりの検知距離は図12の通りです。

抵抗が40kΩときのフォトトランジスタHIGH電圧
抵抗が40kΩときのフォトトランジスタHIGH電圧
抵抗が40kΩときのフォトトランジスタLOW電圧
抵抗が40kΩときのフォトトランジスタLOW電圧
検知距離
検知距離