ここでは、AVRAtmega16マイクロコントローラーを使用してさらに別のプロジェクトを構築します。AVRマイクロコントローラーを初めて使用する場合は、以前のAVRプロジェクトとチュートリアルを参照できます。
ロボットを作ることは、すべての電子機器愛好家にとって常にスリルです。そして、ロボットが外部からの指示なしに自動的にいくつかのことを実行できる場合、このスリルを最大化することができます。エレクトロニクス初心者によって最も一般的に構築されているロボットの1つは、ラインフォロワーロボットです。名前が示すように、ロボットは表面に描かれた線をたどります。線は直線である必要はありません。また、線は任意の色にすることができます。
以前、さまざまなコントローラーを使用してラインフォロワーロボットプロジェクトを構築しました。
- 8051マイクロコントローラーを使用したラインフォロワーロボット
- PICマイクロコントローラーを使用したラインフォロワーロボット
- Arduinoを使用したラインフォロワーロボット
- RaspberryPiを使用したラインフォロワーロボット
- MSP430ランチパッドを使用したラインフォロワーロボット
今日は、AVRマイクロコントローラーを使用してラインフォロワーロボットを構築します。
ほとんどの場合、IRセンサーはラインの検出に使用されます。IRセンサーは、白または黒の表面の検出に適しています。すべての色を検出でき、すべての色の線を追跡できるロボットを作成できる他の高度なセンサーを使用できますが。角度を変えて経路を変えても線を検出し、線をたどり続けることができるはずです。また、ストップゾーンが列に並ぶところならどこでも停止する必要があります。
ラインフォロワーロボットは、今日、製造業、医療、国内用途、および商品倉庫で広く使用されています。ロボットはこれらのアプリケーションだけに限定されず、将来の多くのアプリケーションでそのアプリケーションを拡張できます。
ラインフォロワーロボットのコンセプト
IRセンサーはこのプロジェクトの主要なプレーヤーです。 IRセンサーはロボットの前面に配置され、描かれた黒い線と表面を追跡します。ロボットはラインの間に配置され、IRセンサーの助けを借りてロボットはラインを追跡します。 IRセンサーは読み取り値をマイクロコントローラーにフィードバックし、IR読み取り値の助けを借りて、マイクロコントローラーはモーターを左側または右側に動かし、ロボットを再び経路に導きます。
Line Follower Robotは、IRセンサーを使用してラインを追跡できます。このセンサーには、IR送信機とIR受信機があります。 IR送信機(IR LED)は光を送信し、受信機(フォトダイオード)は送信された光が戻るのを待ちます。 IRライトは、表面で反射された場合にのみ戻ります。下の図に示すように、すべての表面がIR光を反射するわけではありませんが、白色の表面だけがそれらを完全に反射でき、黒色の表面はそれらを完全に観察します。 IRセンサーモジュールの詳細については、こちらをご覧ください。
次に、2つのIRセンサー を使用し てロボットがラインに沿っているかどうかを確認し、2つのモーターを使用してロボットが軌道から外れた場合に修正します。これらのモーターは大電流を必要とし、双方向である必要があります。したがって、L293Dのようなモータードライバーモジュールを使用します。また 、IRセンサーからの値に基づいてモーターに指示するために、ATmega16のようなマイクロコントローラーが必要 になります。同じものの簡略化されたブロック図を以下に示します。
これらの2つのIRセンサーは、ラインの両側に1つずつ配置されます。どのセンサーも黒い線を検出していない場合、AVRマイクロコントローラーは以下に示すようにモーターに前進するように指示します
左のセンサーが黒い線になっている場合、マイクロコントローラーは右のホイールだけを回転させて左に曲がるようにロボットに指示します。
右のセンサーが黒い線になっている場合、マイクロコントローラーは左のホイールだけを回転させて右に曲がるようにロボットに指示します。
両方のセンサーが黒い線になっている場合、ロボットは停止します。
このようにして、ロボットはトラックの外に出ることなくラインをたどることができます。それでは、回路とコードがどのように見えるかを見てみましょう。
必要なコンポーネント
- DCギアモーター(2台)
- IRセンサーモジュール(2台)
- L293Dモジュール
- ワイヤレス電源(例:バッテリー、パワーバンク)
- ロボットチェア
- Atmega16マイクロコントローラーIC
- 16Mhz水晶発振器
- 2つの100nFコンデンサ
- 2つの22pFコンデンサ
- ボタンを押す
- ジャンパー線
- ブレッドボード
- USBASP v2.0(Atmega16をプログラムするには)
回路図
以下の回路図に示すように、すべてのコンポーネントを接続します。
ラインフォロワーロボット用のAtmega16のプログラミング
ここで、Atmega16はUSBASPとAtmelStudio7.0を使用してプログラムされています。USBASPを使用してAtmega16をプログラムする方法がわからない場合は、リンクにアクセスしてください。完全なプログラムはプロジェクトの最後に提供されます。前のチュートリアルで説明したように、JTAGプログラマーとAtmel Studio7.0を使用してAtmega16にプログラムをアップロードするだけです。
私たちは、コードをできるだけ短くシンプルに保つように努めました。したがって、このコードではマクロと特殊機能レジスタを使用しています。
場合(bit_is_clear(PINA 、leftSen )){ //チェック左センサがOFFである場合
このステートメントは、左側のセンサーが接続されているPA0がLOWかHIGHかをチェックします。
このステートメントと他のマクロについて詳しく知りたい場合は、このリンクにアクセスしてください
トラフIRセンサーを読み取るために私たちが従う4つの条件があります。IRセンサーは、ロボットの前面に配置されていることに応じて名前が付けられています。左のIRは左のセンサーで、右のIRは右のセンサーです。以下の条件がロボットの動きを決定します。
上記の条件に従ってコードを記述しました。唯一の変更点は、L293Dの2つの入力ピンのみを使用して両方のモーターを駆動していることです。
デモンストレーションビデオを含む完全なコードを以下に示します。