目次

傾斜センサー追加

 MCRのコースには、坂があります。




 登坂、下坂でスピードを調整しないと質量の大きな車体では
 コースアウトします。

 ¥100で入手できる傾斜センサーを入手して追加。



 シャーシの前後に各1個の傾斜センサーを配置。



 傾斜センサーの中にはボールがあり、傾けることで
 ボールが接点を押すか放すかの単純なメカとなって
 います。




 傾斜センサーが誤動作しないように、少し傾けて取付け。




 接点の情報をフォトカプラを利用して入力します。
 回路は以下。



 坂の状態の組み合わせは、次のようになります。

 登坂、下坂は、直線移動になるので、モータの回転数を
 上げる、下げるとして2割増減を用意して対応。

 直線移動の場合だけ、左右のDUTY比に係数を乗算して対応。

 傾斜センサーからの情報を取得できているとコードは単純。

    UBYTE xmulti[3] = {100,120,80} ;
    UBYTE sloap ;
    UBYTE xtmp ;

    /* get multipler */
    xtmp = *(xmulti+sloap);
    /* calculate */
    xl = (xl * xtmp) / 100 ;
    xr = (xr * xtmp) / 100 ;

 傾斜センサーの状態は、シフトレジスタを利用して
 チャタリングを除去しておきます。

  /* get sensor data */
  sensor = P7DR ;
  /* start gate */
  sgate = CLOSED ;
  if ( !(sensor & (1 << SGATE_BIT)) ) { sgate = OPENED ; }
  /* sloap */
  sloapf <<= 1 ; sloapf &= 3 ;
  sloapr <<= 1 ; sloapr &= 3 ;
  if ( sensor & 0x40 ) { sloapr |= 1 ; }
  if ( sensor & 0x80 ) { sloapf |= 1 ; }
  sloap = 0 ;
  if ( sloapf == 3 ) { sloap |= 1 ; }
  if ( sloapr == 3 ) { sloap |= 2 ; }

 タイマー割込みで、50msごとにセンサー情報を読込み
 移動に必要なパラメータを更新。

 スタートゲート、路面、傾斜の3種類の情報を更新
 しているので、上位側は、それらを利用した動作を
 決定することに専念できます。


目次

inserted by FC2 system