2012年2月アーカイブ

(8) ポール・アジャスタ・ロッドの取り付け
 図26のポール・アジャスタ・ロッドを使ってアップライトとサーボを接続します。これにより、サーボを左右に動かすことでタイヤが左右に動くステアリング機構が実現します。
 図27のようにシャフトの先端に白いパーツを取り付けます。このときあまり奥までねじ込まないでください。シャフトは3本入っているので、もう1本も同じように取り付けます。残りの1本は加工を失敗した時の予備に保管しておきましょう。

図26_ポールアジャスターセッ.jpg
図26 ポール・アジャスタ・セット


図27_ポールアジャスタの加工.jpg
図27 ポール・アジャスタの加工


 次に、アップライトに図28の赤枠のような金具を取り付けます。ただし、アップライト側の穴が小さいためなかなか金具を取り付けることができません。そこで、錐(キリ)や細めの丸ヤスリなどでアップライトの穴を少しだけ大きくします。この時、穴を広げすぎないように注意して加工しましょう。

図28_アップライトに金具の取.jpg
図28 アップライトに金具の取付け




 多摩川精機製ジャイロTAG201(以後、ジャイロ)の基本プログラムが前回までで完成しました。ここではさらに精度を高める工夫をします。

課題5
 このジャイロは静止時ドリフトが少ないことが特徴です。ただ、ドリフトはゼロではないために補正をするとより正確なデータを得ることができます。そこで、5秒間静止しているときは0.1秒間隔で1秒間サンプリングし、平均した値を新たな静止電圧とするプログラムを考えましょう。

mbedプログラミング
・wait(0.05)を変数countで数えて、100カウント=5秒間静止状態が続いたときに、0.1秒間隔で1秒間サンプリングして平均値を新しい平均値とします。静止状態の継続時間を変更したいときはcount==100の数値を増減します。
     if(count==100){// center keisan
        mled1=ON;
        gy1_sum=0;
        for(i=0;i<10;i++){
          gy1_sum=gy1_sum+(gy1_adc_in.read()*5.0);
          wait(0.1);
        }
        mled1=OFF;
        gy1_center=(gy1_sum/10);
        count=0;
      }
      wait(0.05);
  図17のようにシャーシのフロント側からネジを強く締めすぎてシャーシが反りかえっていないか確認し、もし反っているようならネジを少し緩めてください。

図17_フロントサスアームの取.jpg
図17 フロントサスアームの取付け


(6) ギヤボックスをシャーシに取り付ける

 図18のようにギヤボックスの取付穴の位置にギヤボックスを仮置きします。このとき、図3の寸法に従ってシャーシを加工したにもかかわらず2個のギヤボックスのシャフトが一直線に並ばないときは、ギヤボックスを取り付ける面が違うか加工時の寸法ミスが考えられます。どうしてもシャフトが一直線にならないときは、もう一度適切な位置に穴を開け直してください。
 正しく取り付けることが確認できたらギヤボックスを作成した際に余ったネジを使って取り付けます。ネジは図19赤枠のようにシャーシの下側から挿入してください。

図18_ギヤボックスの取付1.jpg
図18 ギヤボックスの取付1

図19_ギヤボックスの取付2.jpg
図19 ギヤボックスの取付2


 多摩川精機製ジャイロTAG201(以後、ジャイロ)の角速度を積分して角度を得ることはできたでしょうか? 課題4では”*”で角度の状態を表示します。

課題4
 角速度を積分して得た角度をLCD上で”*”を数直線上に表示しましょう。-90度~+90度の範囲を表示します。

LPCXpressoを載せてみる
 LPCXpressoは、mbedとバイナリ互換があります。コネクタもmbedのコネクタ配置と共通で、さらに大幅にI/Oの数を拡張しています。
 BlackOneでは、mbedの40ピン・コネクタとLPCXpressoの54ピンに対応したコネクタを実装しており、mbedの代わりにLPCXpresso LPC1769を載せることができます。

sIMG10.jpgsIMG11.jpg
ネットワーク温度計をLPCXpresso LPC1769で動かしているところ

 

 XPressoのプログラム開発は、大きく分けて二通りのやり方があります。
 一つは、mbed用にmbed.orgのコンパイラで作成したバイナリ".bin"をそのままXPressoに書き込む方法です。書き込みは、PC上の統合開発環境"Code_Red"で書き込むことができます。

 もうひとつは、"Code_Red"などのPC上の統合開発環境でコーディング・ビルド・デバッグなどを行う方法です。この方法は、mbed.org上のコンパイラを使う方法より少し敷居が高いのですが、強力なシンボリック・デバッガが使えますので、本格的なソフトウェア開発にも対応できます。
 
 多摩川精機製ジャイロTAG201(以後、ジャイロ)の角速度から角度を計算します。

課題3
 ジャイロから角速度データを読み込み、積分することで角度に変換しましょう。ジャイロは静止状態をプログラマが規定することで不感状態を作り出します。この部分がハンドルの遊びの役割を果たします。遊びは多くても少なくても誤差が増えてしまうので、実際に動かしながら調整します。
 不感状態の幅が大きいとジャイロの出力は落ち着きますが、小さな変化に追従できなくなります。幅を小さくすると細かなノイズもデータとして拾ってしまい、誤差が蓄積されます。

mbedプログラミング
・動作、静止状態の判定・・・ジャイロ出力電圧から静止状態電圧を減算し、0.07以下の場合、静止と判定しています。この値を変化させて不感状態を調整します。
    if(xabs(gy1_adc,gy1_center) <=0.07){
      gy1_data=0;     
    }
    else{
      gy1_data=gy1_adc-gy1_center;   
    }
・ジャイロ感度は6mVです、ここで変換します。
  gy1_wk1=(gy1_data*1000/6.0);// sekibun jyunbi

・台形法により積分します。0.08がサンプリング間隔です。実際のサンプリング時間と異なっていてもかまいません。
    //sekibun
    gy1_kakudo=round3(gy1_kakudo+(gy1_wk0+gy1_wk1)*0.08/2);
    gy1_wk0=gy1_wk1;   

・タクト・スイッチを押すことで現在の角度を0にリセットします。左右の回転でずれを生じる場合、スイッチを押して0にします。
    if(TSW==XON){// center reset
      gy1_kakudo=0;
    }       

・round3(x)・・・小数点以下第3位を四捨五入する関数です。
double round3(double x){
  double y;
  y=double(int((x+0.005)*100))/100;
  return(y);
}

・xabs(x,y)・・・x-yを実行し、結果を絶対値で返す関数です。
double xabs(double x,double y){
  if(x>=y){
    return(x-y);
  }
  else if(y>x){
    return(y-x);
  }
}
はじめに
 mbed用のベースボードは様々なベースボードが発売されています。ベースボードは、mbedに様々なデバイスを接続して楽しむために欠かせないアイテムになっています。それぞれ特色のあるボードから自分にあったボードを選ぶことができます。
 その中で、今回テックハンド(株)が発売したBlackOneは、「全部入りベースボード」と呼ばれるほど、いろいろな周辺デバイスのインタフェースを取り込んだベースボードです。
 特に、最近注目を集めているXBee無線モジュールや、漢字フォントを内蔵したTFTカラー液晶など、すぐに使ってみたい周辺機器をサポートしています。
 さらにmbedの代わりにLPCXpressoのベースボードとしても使える、まさに「全部入り」欲張りボードです(「全部入り」という称号は、mbedをご覧になった方が思わず発した言葉をそのままいただいたものです)。

 BlackOneはベースボードですが、一般に入手しにくい部品もすべてセットしたフルセットのキットを用意していますので、面倒な部品集めの手間が省けて、すぐに「全部入り」を体験できます。
 mbedのパフォーマンスを最大限に活用できるように様々な工夫を凝らしたBlackOneで、mbedを楽んでみましょう。

 今回以降、mbed+BlackOneの利用例を順に紹介しますので、一緒にお楽しみください。
 
sIMG1.jpg

 課題1では多摩川精機製ジャイロTAG201(以後、ジャイロ)からデータを読み込み、表示する確認プログラムを作成しました。課題2ではデータの平均を計算します。

課題2
 ジャイロから、1秒間隔で0.1秒ごとに10回データを読み込み、平均を表示するプログラムを作成しましょう。データ読み込み中はLED0を点灯します。

mbedプログラミング

・0.1秒間隔で1秒間データを読み込み、平均するには次のようにします。
  mled1=ON;    
  gy1_sum=0;
    for(i=0;i<10;i++){
      gy1_sum=gy1_sum+(gy1_adc_in.read()*5.0);
      wait(0.1);
    }
    mled1=OFF;
    gy1_data=gy1_sum/10;
(3) 4速パワーギヤボックスの組み立て
 4速パワーギヤボックスにはマブチモータRE-260が付属しています。モーターはノイズ元になるため、図5のように0.1uFのコンデンサを取付けます。また、モーターのリード線は付属のものでは短いので、30[cm]ほどのより線に付け替えます。

s図5_コンデンサとリード線の.jpg
図5 コンデンサとリード線の取付


 ギヤ比は用途によって適当に決めてください。
 タイヤシャフトの取付位置は2か所ありますが、図6の位置に取付けます。シャフトは何種類かありますが、図7赤枠のように穴の開いているものを使用してください。
 図7は完成したパワーギヤボックスです。

s図6_パワーギヤボックスシャ.jpg
図6 パワーギヤボックスシャフトの取付位置


s図7_完成したギヤボックス.jpg
図7 完成したギヤボックス

 mbedに多摩川精機製ジャイロTGA201(以後、ジャイロ)を接続することは成功しましたか? 最初に多摩川精機製ジャイロの応用例を紹介します。

多摩川精機製ジャイロの応用例

 Dr.Gueroさんが素晴らしいロボットを開発しました。二足歩行ロボットに実際に自転車を漕がせて走行させるというものです。下記URLにて紹介されてます。ロボットの手で自転車のバランスを保ち、足で漕ぐというタイプは世界初だと思います。このロボットに多摩川精機製ジャイロが使用されています。すごいロボットですね。写真はDr.Gueroさんに提供していただきました。

   A.I.&Robot http://ai2001.ifdef.jp/

primer_v2_s35p.jpg

 Youtubeで公開されているDr.Gueroさんが開発した二足歩行ロボットが運転する自転車の動画を紹介します。実にスムーズに走行しています。すごいですね。






カテゴリ


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