マイクロビットをつかって「ライントレースカー」をつくりたいと思います。
「ライントレースカー」は、白い床面に引かれた黒いラインに沿って走る車です。
「フォトリフレクタ」という部品で床が白いか黒いかを検知し、それによって車が進む方向を制御します。
「フォトリフレクタ」は、発光部(赤外線LED)と受光部(フォトトランジスタ)が一体になった部品です。発光部からの光は床面で反射して受光部に届きますが、受光部でその明るさを検知することで、床が白いか黒いかを判断します。
今回のライントレースカーの製作にあたっては、ロームの「RPR-220」というフォトリフレクタを使おうと思います(秋月電子の販売コード:111401)。
また、先日製作した「マイクロビットロボカー(改良版)」(記事は こちら)をベースにしてライントレースカーに改造しようと考えているので、フォトリフレクタの電源はロボカーで使用している「KEYESTUDIOモータードライバー拡張ボード(KS4033)」の「3V」端子(電圧:3.3V)から供給することとします。
フォトリフレクタは、以下のような回路を組むことで明るさを検知します。
このうち、「R1」「R2」の抵抗値について決定する必要がありますので、今回はこれらの値を検討していきたいと思います。
まずは「R1」についてです。
「R1」は「フォトリフレクタ」内の「赤外線LED」に流れる電流を制御します。
「RPR-220」のデータシートによると、LEDの順電流「IF」の絶対最大定格(上限値)は「50mA」、また他の特性値を示す際に条件として記載されている IF の値は「10mA」や「20mA」が多いので、今回は「20mA」程度の電流を流すことにします。データシート中のグラフより「IF = 20mA」のときの「VF」は「1.15V」程度です。
その場合、
R1 = (VCC - VF) / IF = (3.3V - 1.15V) / 20mA ≒ 100Ω
となります。これより「R1 = 100Ω」とします。
次に「R2」についてですが、こちらは実際に実験してみたいと思います。
コピー用紙にプリンタで以下のようにプリントし、それぞれの色の部分にフォトリフレクタを当てて、検出される値を調査します。
「R2」の値を「5.6kΩ」「10kΩ」「22kΩ」と変化させ、グラフ化してみることにします。回路はブレッドボードでつくります。
なお、「RPR-220」のデータシートによると、フォトリフレクタと床面の間の距離「d」は「6mm〜8mm」程度が最も感度がよく、それより近くても離れても感度が落ちるようです。そのためダンボールでブレッドボードの枠をつくり、「d」も変化させることができるようにしました。今回は「d = 3mm」「d = 6mm」「d = 12mm」の3条件で調査します(大雑把に高さを合わせただけで、正確ではありません)。
ブレッドボードの「赤」「黒」「黄」信号を、マイクロビット用拡張ボードの「3V」「GND」「0」につなぎます。
マイクロビットには以下のプログラムを書き込みます。
MakeCodeエディタで「データを表示 デバイス」をクリックし、フォトリフレクタ検知信号「P0」の値を確認します。
読み取った値をExcelに入力し、グラフ化します。
グラフの横軸は床面の明るさで、左端が黒、右端が白です。
縦軸はフォトリフレクタの検知信号で、マイクロビットで読み取ったアナログ値を電圧に変換したりはせず、そのまま表示しています。
グラフから分かるように、R2の値が小さいほどグラフの傾き部分が右(より白い方)に移っています。また、フォトリフレクタと床面の距離「d」が近すぎたり(3mm)遠すぎたり(12mm)する場合、R2が小さい(5.6kΩ)と、床面が真っ白でも出力値が落ちきりません。
フォトリフレクタと床面の距離「d」が適切(6mm)なとき、例えば床の色が左から4番目のグレー(#606060)あたりを境目として白黒の判定をすることにすると、「R2 = 10kΩ」「判定のしきい値 = 300」あたりに設定すればちょうど良いようです。
さて、「R2 = 10kΩ」に仮決定したとき、もしもフォトリフレクタと床面の距離「d」が適切な距離(6mm)からずれてしまうと以下のようになります。
「判定のしきい値 = 300」の場合、床の色が右から4番目のグレー(#A0A0A0)あたりを境目として白黒の判定がされてしまいます。かなり薄い色であり、これでは誤検知の可能性も生じます。
この場合、「R2」の値を「22kΩ」に変更すると、「d = 6mm, R2 = 10kΩ」のときの結果とほぼ同じになります。
これより、「R2」を「10kΩの固定抵抗と10kΩの可変抵抗の直接接続」とし、「R2 = 10kΩ〜20kΩ」の範囲で調整できるようにしておけば、フォトリフレクタと床面の距離が想定から少々ずれてしまっても調整できそうです。