2012年5月アーカイブ

 エンドレス・レールを使った最後のプログラミングを楽しみましょう。

課題7
 この課題ではCdS光センサ(以後、CdSセンサ)を検知するごとに、
  右回り=> (センサ反応) 5秒停止=> 左回り=> (センサ反応) 5秒停止=> ・・・
を繰り返すプログラムを作成しましょう。

mbedプログラミング
  while(1){
  //右回りで走行開始 
    while(sens1==XOFF){
   //右回り継続
    }
  // センサ反応したので・・・
  // 5秒停車中の処理
  // 左回り開始
    while(sens1==XOFF){
   //左回り継続
    }
  //センサ反応したので・・・
  //3秒停車中の処理
  }//while

 CdSセンサを利用したmbedプログラムを楽しみましょう。

課題6
 CdSセンサの上を列車が通過した回数=周回数をカウントするプログラムを作成しましょう。

mbedプログラミング
 CdSセンサがXONになったときをカウントすれば完成しそうなプログラムですが、XONになった状態をXOFFになるまで確認しないとあっというまにカウントが進んでしまいます。次を参考にしてプログラミングに挑戦してください。
      if(sens1==XON){
        count++;
        //カウント表示
        while(sens1==XON){ // CdSセンサを通過するまで待つ
        }        
      }
      else{ // センサを通過していないとき
      lcd.locate(0,2);
        lcd.printf("sens1 OFF");
      }

 
2-2 Vrefを使った速度制御
 ここでは、モータ・ドライバICの機能を使って速度制御をしてみます。TA7291Pでの回転数の制御は、「マイコン・カーを制御してみよう(6)」の図10のように、Vrefを変化させることでモータに印加する電圧を制御することができます。そこで、実際にmbedを使って回転数を制御してみましょう。
 図16は、mbedの出力でVrefの値を変え速度を制御する回路です。具体的には青色の押しボタンを押すとモータは中速で回転し、赤色のボタンを押すと高速に回転します。
 mbedはVrefの電圧を AnalogOutオブジェクトを使って制御しています。AnalogOutはmbedのP18端子に割り当てられており、0.0~1.0の範囲で値を指定すると、それに対応して0.0~3.3[V]の電圧を出力します。

s図16_Vrefを使った回転数制.jpg
図16 Vrefを使った回転数制御

 レールに設置したCdS光センサ(以後、CdSセンサ)を利用したmbedプログラムを楽しみましょう。

課題5
 CdSセンサ上を列車が通過している間は”sens1 ON!”、そうでないときは”sens1
OFF”と表示するプログラムを作成しましょう。列車はVr1で設定した速度で走行します。

mbedプログラミング
・CdSセンサはmbed RMCSユニットに三つ接続できます。センサ1:p17、センサ2:p18、センサ3:p19です。今回はセンサ1だけを使用します。
DigitalIn sens1(p17);
DigitalIn sens2(p18);
DigitalIn sens3(p19);
2 マイコン・カーの速度を制御する
 マイコン・カーのモータ制御にはモータ・ドライバICのTA7291Pを使用しています。
 このモータ・ドライバICは、「マイコン・カーを製作してみよう(6)」で紹介していますが、IN1とIN2に信号を与えることで、前進や後進、停止を簡単に制御することができます。ほかにも速度制御の機能があり、Vrefの電圧を変化することでモータへの電圧を制御できます。速度制御はモータ・ドライバの機能を使う以外に一般的に用いられるPWM制御という方法もありますので、今回はVrefとPWMを使った速度制御をそれぞれ紹介します。

 レールにCdS光センサ(以後、CdSセンサ)を設置して、センサユニットが使えるようにします。

レールの加工
 レールとレールの中心に使用するCdSの直径に合わせた穴を開けます。作例では秋月電子で販売しているφ5mmのCdSに合わせて穴を開けました。

 
7_P1000078.jpg
 ボリュームを回すことで列車の速度制御ができるようになりましたか? ここでは二つのボリュームを有効活用した課題を考えます。

課題4
 課題2と似ているのですが、ボリュームを二つ活用したプログラムを作成しましょう。
 Vr1の設定速度で20秒間右回り走行 => 3秒停止 =>Vr2の設定速度で20秒間左回走行 =>3秒停止 ・・・繰り返す

mbedプログラミング
・ボリュームの接続
 Vr2はp16に接続します。A-Dコンバータを利用します。
AnalogIn vr2_adc(p16);
 一つ目のforループではVr1の設定速度で列車は走行します。二つ目のforループではVr2の設定速度で走行します。

■■Publish
 下記URLにてPublishしています。

  http://mbed.org/users/takeuchi/programs/2ck0111_RMCS04/m407g1
 前回はマイコン・カーを制御するための回路を製作しました。今回は、マイコン・カーを制御するためのプログラムを作成します。プログラムは大きく以下の四つに分けることができます。
(1) チョロQハイブリッドのリモコンからの赤外線信号を解析する
(2) サーボを制御しステアリング動作を実現する
(3) モータの回転数を測定する
(4) モータの回転数を制御し速度をコントロールする
 この中の(1)については、以前のエレキジャックの記事「CHOROQ HYBRIDを使って赤外線リモコン制御の基礎を学ぶ」(http://www.eleki-jack.com/arm/mbed/cat691/choroq-hybrid/)で紹介しました。
 そこで、今回は(2)から(4)についてプログラムを作成していきます。





カテゴリ


Copyright (C) 2006-2015 CQ Publishing Co.,Ltd. All Rights Reserved.