ラインフォロワーロボットは、ほとんどの学生/愛好家が作成できるシンプルで魅力的なロボットです。このチュートリアルでは、ラインフォロワーロボットのしくみと、PICマイクロコントローラーPIC16F877Aを使用してロボットを構築する方法を学習します。PIC16F877AはMicrochip社の40ピン多目的MCUであり、完全なPICチュートリアルシリーズでこのICを使用しました。初めての方は、これらのPICチュートリアルを見て、このICの基本と、マイクロコントローラーにプログラムをアップロードする方法を学ぶことをお勧めします。この情報はチュートリアルですでに説明しているので、以下の説明ではスキップします。
ロボット工学に興味がある場合は、「ラインフォロワーロボット」という名前をよく知っている必要があります。このロボットは、センサーとモーターのペアを使用するだけで、ラインをたどることができます。このロボットは無限の開発の余地を与えてくれます。Kiva(Amazon倉庫ロボット)のようなロボットはその一例です。他のラインフォロワーロボットも確認できます。
- 8051マイクロコントローラーを使用したラインフォロワーロボット
- Arduinoを使用したラインフォロワーロボット
- RaspberryPiを使用したラインフォロワーロボット
必要な材料:
- PIC16F877A
- IRセンサー(2Nos)
- DCギアモーター(2Nos)
- L293Dモータードライバー
- 椅子(段ボールを使って自分で作ることもできます)
- パワーバンク(利用可能な電源)
ラインフォロワーの概念
Line Follower Robotは、IRセンサーを使用してラインを追跡できます。このセンサーには、IR送信機とIR受信機があります。 IR送信機(IR LED)は光を送信し、受信機(フォトダイオード)は送信された光が戻るのを待ちます。 IRライトは、表面で反射された場合にのみ戻ります。下の図に示すように、すべての表面がIR光を反射するわけではありませんが、白色の表面だけがそれらを完全に反射でき、黒色の表面はそれらを完全に観察します。 IRセンサーモジュールの詳細については、こちらをご覧ください。
次に、2つのIRセンサーを使用してロボットがラインに沿っているかどうかを確認し、2つのモーターを使用してロボットが軌道から外れた場合に修正します。これらのモーターは大電流を必要とし、双方向である必要があります。したがって、L293Dのようなモータードライバーモジュールを使用します。また、IRセンサーからの値に基づいてモーターに指示するPICのようなマイクロコントローラーも必要になります。同じものの簡略化されたブロック図を以下に示します。
これらの2つのIRセンサーは、ラインの両側に1つずつ配置されます。どのセンサーも黒い線を検出していない場合、PICマイクロコントローラーは以下に示すようにモーターに前進するように指示します
左のセンサーが黒い線になっている場合、マイクロコントローラーは右のホイールだけを回転させて左に曲がるようにロボットに指示します。
右のセンサーが黒い線になっている場合、マイクロコントローラーは左のホイールだけを回転させて右に曲がるようにロボットに指示します。
両方のセンサーが黒い線になっている場合、ロボットは停止します。
このようにして、ロボットはトラックの外に出ることなくラインをたどることができます。それでは、回路とコードがどのように見えるかを見てみましょう。
回路図と説明:
このPICベースのラインフォロワーロボット の完全な回路図を 以下に示します。
この回路は、上記のように、モータードライバーモジュールとともに、2つのIRセンサーと1対のDCギアモーターを採用しています。このプロジェクトで使用されるモータードライバーモジュールはL293Dです。PICマイクロコントローラーの出力ピンはモーターが駆動するのに十分な電流を供給できないため、モータードライバーが必要になります。このモジュールは、回路に示されているように、電源(5V)から直接電力が供給されます。モジュールには、モーターの方向を制御するためにPICに接続された4つのピン(各モーターに2つ)があります。また、PICマイクロコントローラーへの入力として機能する2つのIRセンサーがあります。これらのセンサーは、白い表面上にある場合はハイ(1)になり、黒い表面上にある場合はロー(0)になります。完全なピン接続を次の表に示します。
S.No |
から接続 |
に接続されています |
1 |
IRセンサーのピンを省略 |
RD2(ピン21) |
2 |
IRセンサーライトアウトピン |
RD3(ピン22) |
4 |
モーター1チャンネルAピン |
RC4(ピン23) |
5 |
モーター1チャンネルBピン |
RC5(ピン25) |
6 |
モーター2チャンネルAピン |
RC6(ピン26) |
7 |
モーター2チャンネルBピン |
RC7(ピン27) |
実際のハードウェアでは、USBポートから直接+ 5Vの出力を提供するパワーバンクを使用しました。したがって、7805電圧レギュレーターをバイパスし、PIC、センサー、モーターに同じものを使用して電力を供給しました。回路に示されているように、レギュレーターと一緒に12Vバッテリーを使用するのと同じことを行うことができます。
PICマイクロコントローラーのプログラミング:
ハードウェアの準備ができたら、プログラミングを開始します。このPICラインフォロワーロボットプロジェクトの完全なプログラムは、このページの最後にあります。ただし、重要なチャンクについては以下で説明します。
次の行でI / Oピンを初期化します。2つのIRセンサーピンは入力として機能し、4つのモーターピンは出力ピンとして機能します。
TRISD2 = 1; TRISD3 = 1; //バスIRセンサーピンは入力として宣言されていますTRISC4 = 0; TRISC5 = 0; //出力として宣言されたモーター1ピンTRISC6 = 0; TRISC7 = 0; //出力として宣言されたモーター2ピン
ここで、IRセンサーの両方のステータスを読み取り、それに応じてモーターを制御する必要があります。たとえば、両方のセンサーが高い場合(黒い線の下にない場合)、以下のプログラムに示すように、両方のモーターを前方に移動します。
if(RD2 == 1 && RD3 == 1)//両方のセンサーがバルクラインを超えていない{RC4 = 0; RC5 = 1; //モーター1フォワードRC6 = 1; RC7 = 0; //モーター2フォワード}
左側のセンサーが黒い線を超えた場合は 、モーター1を静止させ、モーター2を前方に回転させて右に曲がります。このタイプの回転は、差動回転と呼ばれます。
else if(RD2 == 0 && RD3 == 1)//左センサーが黒い線の上にある{RC4 = 1; RC5 = 1; //モーター1ストップRC6 = 1; RC7 = 0; //モーター2フォワード}
同様に、右のセンサーが黒い線を越えた 場合、ボットは、以下に示すように、2番目のモーターを静止させ、最初のモーターだけを順方向に回転させることにより、左に曲がります。
else if(RD2 == 1 && RD3 == 0)//右センサーが黒い線の上にある{RC4 = 0; RC5 = 1; //モーター1フォワードRC6 = 1; RC7 = 1; //モーター2停止}
最後に、両方のセンサーが黒い線の下にある場合は、ボットを停止します。これは、両方のモーターのすべてのピンを高くすることによって行うことができます。同じことを行うためのコードを以下に示します
else //黒い線上の両方のセンサー{RC4 = 1; RC5 = 1; //モーター1ストップRC6 = 1; RC7 = 1; //モーター2停止}
つまり、プログラムの準備ができており、PicKitなどのプログラマーを使用してPICにアップロードできます。
動作中のPICラインフォロワー:
ハードウェアとコードの準備ができたら、アクションを実行します。先に述べたように、ボットに電力を供給するためにパワーバンクを使用したので、ハードウェアがセットアップされ、コードがすでにアップロードされているボットにパワーバンクを接続するだけです。
PIC Perfボードは、PICマイクロコントローラーの使用方法を学習したPICチュートリアルシリーズ用に作成されました。Pickit 3を使用してプログラムを作成する方法がわからない場合は、MPLABXとXC8を使用したPICマイクロコントローラーのチュートリアルに戻ることをお勧めします。これらの基本情報はすべてスキップします。
ここで、黒い線の上でボットを起動するだけで、線に沿ってボットを監視する必要があります。
その場合、最初にいくつかの困難に直面する可能性があります。ホイールが反対方向に回転する場合は、ホイールが反対方向に回転しているモーターの極性を交換するだけです。ボットがラインから外れている場合は、IRセンサーを交換すればすべて問題ありません。
ボットの完全な動作は、以下のビデオで見つけることができ ます。あなたがプロジェクトを気に入って、似たようなものを作るのを楽しんだことを願っています。これを機能させるのに問題がある場合は、以下のコメントセクションに投稿して解決するか、フォーラムを使用して技術的な内容について話し合うことができます。