YSE BLOG

【モバイル・ロボット科】平成25年度 第4回Arduino基礎セミナー実施報告 Arduinoでライントレースカー製作

日  時    平成25年1月25日(土) 9:00~13:00     
開催場所  横浜システム工学院専門学校新校舎3階 A31教室  
参 加 者   神奈川県内の高等学校の先生方              
講  師   仲久保正人(YSE教頭 モバイル・ロボット科教員)
助  手   蔭山宗佑 (YSEモバイル・ロボット科1年生)
内  容   
1.モノづくり教育事例紹介ワークショップ 9:00-9:30
ご参加の先生方から自己紹介とご自身や生徒たちの取り組みをご紹介いただきました。機械、電気、電子、情報、理科、国語などいろいろな分野の先生方からのお話は大変参考になりました。本校の事例としては、1年生が取り組んだ、11月のイベントや、12月のスチールファイトを紹介させていただきました。ブログにも載っている動画で会場や当日の雰囲気をお伝えし、ラーニングからスタディに切り替えた「YSE課題挑戦型プロジェクト教育」の教育成果をご紹介させていただきました。
2.回路・プログラム・ライントレースカーの制作 9:30-13:00
今日の内容は、ライントレースカーの制作です。3つのステップで行いました。
ステップ1:
1個のDCモータを、1個の半固定抵抗の抵抗値で、正転・逆転・ブレーキ・ストップをコントロールします。
ステップ2:
1個のDCモータを、1組のセンサー(赤外線LEDと赤外線フォトトランジスタ)でコントロールします。
ステップ3:
2個のDCモータを、2組の光センサー(ステップ2で試したもの)でコントロールしてライントレースカーに仕上げます。
3.使用した主な部品
1)            2)            3)              4)            

1)DCモータ:
DCモータとは、永久磁石とコイルの回転子(電機子)を使って構成されたもので、電機子に流れる電流の向きを切り替えることで、回転方向を切り替えます。早い話が模型やミニ四駆、ラジコンに使っているモーターです。
2)モータードライバー:
モータドライバはモータを回すための ICです。DCモータと言うのは単純に電流を流すと回ります。 電流の方向で正回転/逆回転が決まります。 その電流のON/OFFや流れる方向をマイコンから制御する ためのICがモータドライバです。
3)赤外線フォトトランジスタ:
フォトトランジスタは光を受けると、電流を流す電子部品です。フォトトランジスタが応答する光は、波長域が仕様で決められており、 可視光に応答するものや、赤外線に応答するものがあります。
4)赤外線発光ダイオード(LED):
LED(発光ダイオード)とは、電圧をかけた際に発光する半導体素子(電子部品)で、材料の違いにより様々な色の光を出すことが可能です。ここでは、赤外線を発行するLEDを使います。
4.回路図
ステップ1:

ステップ2:

ステップ3:

ライントレースロボット:
        上面図                             下面図
 
5.プログラム:以下のプログラムを制作して楽しんでいただきました。
ステップ1:program001
1個の半固定抵抗をドライバーで左右に回転して抵抗値を変えて、モーターの正転・逆転・ブレーキ・ストップをコントロールします。
ステップ2:program002
1組の光センサー(赤外線LEDと赤外線フォトトランジスタ)で、赤外線の反射量をみて、モーターの正転・逆転をコントロールします。
ステップ3:program003
2組の光センサー(ステップ2で試したもの)で、黒いラインからの外れ具合を調べて、左右のモータの正転・逆転・ブレーキをコントロールして、ラインに沿って進む、ライントレースカーに仕上げます。
制作中の様子と作品動画  

<動画>


今回もご好評をいただき、大変感謝しております。次回も是非ご参加ください。
 


to_yse_mr.jpg

コメント

  1.  こんにちは。私は広島県福山市に住んでいる ケイン アレキサンダー スコット といいます。
    2014年のジャパンオープンというRobocup JuniorのレスキューAの大会に EV3 という Lego MindStorm を使って出場したことがあります。来年のRobocup Juniorの大会に向けてArduinoを使おうとしています。EV3よりArduinoの方を使いたい理由は、Arduinoのほうがいろんなことができるし、そしてEV3よりはコンパクトなので、ロボットをコンパクトに簡単に作ることができると思ったからです。
     Arduinoでライントレースの研究をしていますけど、プログラムミスでライン上にたどることができませんでした。【モバイル・ロボット科】と同じように、自分のロボットの下にライトセンサー2つ付けてあります。Arduino用のC言語でどうやってプログラムを組み立てましたか? 
     自分のプログラムを送ってありますが、もしよければ修正お願いします。私の予想から見ると、自分のプログラムの "if"というファンクションの コードの組み立て方や使い方が間違っていると思います。
     ライトセンサー2つでどういう感じでライントレースをしているかというと、もし 
       右ライトセンサーと左ライトセンサーが両方黒色の線を読む場合、まっすぐ進みます。
       右ライトセンサーは黒、左ライトセンサーは白を読む場合は右に曲がります。
       右ライトセンサーは白、左ライトセンサーは黒を読む場合は左に曲がります。
       右ライトセンサーと左ライトセンサーが両方白色を読む場合、まっすぐ進みます。
    という感じです。
     次の下の行にプログラムの一部のパーツを送ってあります。
    A1  : 左ライトセンサーのこと。 
    B1 : 右ライトセンサーのこと。
    if(iA > 350)
     {
    if(iB > 350)
      {
    digitalWrite(motorPinA,HIGH);
    digitalWrite(motorPinB,HIGH);
    }
    else
    if(iB < 350) {
    digitalWrite(motorPinA,HIGH);
    digitalWrite(motorPinB, LOW);
    }
    }
    else
    if(iA < 350)
     {
    if(iB > 350)
      {
    digitalWrite(motorPinA, LOW);
    digitalWrite(motorPinB,HIGH);
    }
    else
    if(iB < 350) {
    digitalWrite(motorPinA,HIGH);
    digitalWrite(motorPinB,HIGH);
    }

    もしよかったら、誰か教えてください。よろしくお願いします。