ラインフォロワーロボットは、そのシンプルさから、学生や初心者の間で人気のあるロボットプロジェクトの1つです。マイクロコントローラのプログラム方法に応じて、黒または白の線をたどります。ここでは、Texas InstrumentsのMSP430ランチパッドを使用して、黒い線をたどるラインフォロワーロボットを作成します。MSP430ランチパッドを初めて使用する場合は、「MSP430を使い始める」チュートリアルをお読みください。
必要な材料
- TexasInstrumentsのMSP430G2LaunchPad
- L298Dモータードライバーモジュール
- 接続線
- IRセンサーモジュール
- シャーシ、ホイール、ジェットコースター
- Energia IDE
- 電源(3.3v)および5v-12v
ラインフォロワーの概念
ラインフォロワーの概念は光に関連しています。黒と白の表面での光の振る舞いを使用しました。光が白い表面に当たると、ほぼ完全に反射し、黒い表面の場合、光は黒い表面に吸収されます。この説明された光の振る舞いは、このラインフォロワーロボットで使用され ます。
この MSP430ベースのラインフォロワーロボット では、フォトダイオードとも呼ばれるIR送信機とIR受信機を使用しました。それらは光の送受信に使用されます。IRは赤外線を送信します。赤外線が白い表面に当たると、反射してフォトダイオードに捕らえられ、電圧変化が発生します。IR光が黒い表面に当たると、光は黒い表面に吸収され、光線は反射されないため、フォトダイオードは光や光線を受け取りません。IRセンサーの詳細については、リンクをたどってください。
このMSP430ベースのラインフォロワーロボットでは、センサーが白い表面を感知すると、MSPは入力として1を取得し、黒い線を感知すると、MSPは入力として0を取得します。
回路の説明
ラインフォロワーロボット全体をセンサーセクション、コントロールセクション、ドライバーセクションなどのさまざまなセクションに分割できます。
センサーセクション: このセクションには、IRダイオード、ポテンショメーター、コンパレータ(オペアンプ)、およびLEDが含まれます。ポテンショメータは、コンパレータの1つの端子で基準電圧を設定するために使用され、IRセンサーはラインを検知して、コンパレータの2番目の端子で電圧の変化を提供します。次に、コンパレータは両方の電圧を比較し、出力でデジタル信号を生成します。この回路では、2つのセンサーに2つのコンパレータを使用しました。LM358はコンパレータとして使用されます。LM358には2つの低ノイズオペアンプが組み込まれています。
制御セクション: MSP430 Launchpadは、ラインフォロワーロボットのプロセス全体を制御するために使用されます。コンパレータの出力は、MPS430LaunchpadのデジタルピンP1_3およびP1_4に接続されています。MSP430 Launchpadはこれらの信号を読み取り、コマンドをドライバ回路に送信してラインフォロワーを駆動します。
ドライバーセクション: ドライバーセクションは、モータードライバーと2つのDCモーターで構成されます。MSP430 Launchpadはモーターに十分な電圧と電流を供給しないため、モータードライバーはモーターの駆動に使用されます。そこで、モーターに十分な電圧と電流を得るためにモータードライバー回路を追加しました。ここでは、DCモーターの駆動にL298dドライバーを使用しました。MSP430 Launchpadは、このモータードライバーにコマンドを送信してから、モーターを駆動します。
さまざまなマイクロコントローラーを使用してラインフォロワーロボットを開発しました。
- 8051マイクロコントローラーを使用したラインフォロワーロボット
- Arduinoを使用したラインフォロワーロボット
- RaspberryPiを使用したラインフォロワーロボット
- PICマイクロコントローラーを使用したラインフォロワーロボット
MSP430を使用したラインフォロワーロボットの動作
ラインフォロワーの働きはとても面白いです。ラインフォロワーロボットは、センサーを使用して黒い線を感知し、MSP430ランチパッドに信号を送信します。次に、MSP430 Launchpadは、センサーの出力に従ってモーターを駆動します。
このプロジェクトでは、2つのIRセンサーモジュール、つまり左センサーと右センサーを使用しています。左右両方のセンサーが白を感知すると、ロボットは前進します。
左側のセンサーが黒い線になったら、ロボットは左側を向きます。
右側のセンサーが黒い線を感知した場合、ロボットは両方のセンサーが白い表面になるまで右側を向きます。白い表面が来ると、ロボットは再び前進し始めます。
両方のセンサーが黒い線になっている場合、ロボットは停止します。
回路図
このMSP430ラインフォロワーロボットの回路は非常にシンプルです。コンパレータの出力は、MSP430Launchpadのデジタルピン番号p1_3およびP1_4に直接接続されています。また、モータードライバーの入力ピンIN1、IN2、IN3、IN4は、MSP430 LaunchpadのデジタルピンP1_5、P2_0、P2_1、P2_2にそれぞれ接続されています。1つのモーターはモータードライバーOUT1とOUT2の出力ピンに接続され、もう1つのモーターはOUT3とOUT4に接続されます。ここでは、モータードライバーモジュールを除く回路全体に電力を供給するために3.3V電源を使用しました。モータードライバーモジュールに8vを供給しました。ユーザーは5v-12vを使用できます。
私がPerfBoardで構築したように、独自のIRモジュールを構築することもできます。以下はIRモジュールの回路です:
プログラミングの説明
完全なプログラムとビデオは、この記事の最後にあります。
プログラムでは、まず、センサーとモーターの入力ピンと出力ピンを定義します。次に、ラインフォロワーの方向にいくつかのマクロを定義し、センサー出力を選択するためのディレクティブを記述します
注: センサーはアクティブローまたはアクティブハイの可能性があるため、最初にセンサーの出力を確認してから、 activeLowModeに コメントまたはコメントを解除してディレクティブを選択します。アクティブなHIGHについては、 activeLowMode マクロにコメントを 付け ます。
#define l_sensor P1_3 #define r_sensor P1_4 intpins = {P1_5、P2_0、P2_1、P2_2}; #define forward 0x05 #define left 0x06 #define right 0x09 #define stop 0x00 //#define activeLowMode #ifdef activeLowMode int res = {forward、left、right、stop}; #else int res = {stop、right、left、forward}; #endif
その後、 セットアップ 機能でセンサーとモーターピンに指示を出します。そして、 ループ 機能では、入力をチェックし、出力をモータードライバーモジュールに送信してモーターを実行します。
void setup() { for(int i = 0; i <4; i ++) pinMode(pins、OUTPUT); pinMode(l_sensor、INPUT); pinMode(r_sensor、INPUT); } void loop(){intsense =(digitalRead(l_sensor)<< 1)-digitalRead(r_sensor); for(int i = 0; i <4; i ++)digitalWrite(pins、(res >> i)&0x01); }
このラインフォロワーには、MSP430Launchpadを使用して読み取った4つの条件があります。左センサーと右センサーの2つのセンサーを使用しました。
条件:アクティブHIGH出力
入力 |
出力 |
移動 ロボットの |
||||
左センサー |
右センサー |
左モーター |
右モーター |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
やめる |
0 |
1 |
1 |
0 |
0 |
0 |
右に曲がる |
1 |
0 |
0 |
0 |
1 |
0 |
左折してください |
1 |
1 |
1 |
0 |
1 |
0 |
フォワード |
プログラムは上記の表の条件に従って作成されます。 以下の完全なコードとデモンストレーションビデオを確認してください 。