沼津高専 電子制御工学科
MIRSATLM PWM・ロータリエンコーダ・RT-タスクモジュール取扱説明書
MIRSATLM-SOFT-1002
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2000.10.12 大島 牛丸 初版
A02 2001.5.2 大島 牛丸 ソースプログラムへのリンクを追加

目次

始めに

 本ドキュメントは、ATLMMIRSの行動制御プログラム中で使用するPWM・ロータリーエンコーダ制御用関数の機能と、 行動制御プログラム・RT-タスク間のインターフェイスについて記したものである。
インターフェイスについて

ロータリーエンコーダ・PWM制御用ソフトではRT-タスクを1つ、FIFOを3つ使用する。各タスク、FIFOの番号と機能は下記の通り
行動制御プログラム中で使用する制御関数
  1. RT-タスク制御用
    void pwm_enco_start(int priority, long period)
    ロータリーエンコーダ・PWM制御用のRT-タスクをスタートさせるための関数。優先度priority、 実行周期periodを引数として与える。この関数の中ではFIFO5へのSTART指令、優先度、周期の書き込みを行う。戻り値は無し。

    void pwm_enco_stop(void)
    ロータリーエンコーダ・PWM制御用のRT-タスクを停止させるための関数。この関数の中では FIFO5へのSTOP指令の書き込みを行う。戻り値は無し。

    void pwm_enco_restart(void)
    pwm_enco_stopで停止させたRT-タスクを再スタートさせるための関数。タスクの実行周期や 優先度を変更することは不可能。この関数の中ではFIFO5へのRESTART指令の書き込みを行う。 戻り値は無し。

  2. ロータリーエンコーダ制御用
    void encorder_data(int *l_distance, int *r_distance, int *l_speed, int *r_speed)
    FIFO3から左右のロータリーエンコーダのカウント値を読み込んで、左右のタイヤの移動距離 と速度を求め、それを戻り値として返す関数。この関数を用いて左右のタイヤの移動距離と速度を持ってくるためには、int型の変数を4つ用意して、

    int a, b, c, d;



    encorder_data(&a, &b, &c, &d);

    というように記述する。こうすることによってa,b,c,dにそれぞれ左移動距離、右移動距離、 左速度、右速度が代入される。

  3. PWM制御用
    void pwm_data(int l_speed, int r_speed)
    左右のタイヤの速度を変更する必要があるとき、新しい速度データをPWMへ送るのに使 用する関数。左右のタイヤの速度l_speed、r_speedを引数として与える。この関数の中では、与えられ たそれぞれの速度データをそれに対応する8ビットのデータに置き換え、2つをくっつけて16ビットの データにした後、それをFIFO4に書き込んでRT-タスクへ送っている。

ソースプログラム
ソースプログラムと Makefile の書庫ファイル enc_mod.tar.gz
移動距離・速度の算出方法

モーター1回転あたりのカウント数100
タイヤの円周25cm
モーターのギア比16:1

 仮にMIRSの足回りに関するデータが上記の通りであるとすると、タイヤの移動距離と速度は次のようにして 算出される。読み込んできたカウント数がx1、x2・・・xnであった場合(xnが最新のカウント値で、タスクの実行周期はyとする。)、

移動距離d: d [cm] = (x1+x2+・・・+xn)÷100×16×25[cm]

速度v: v [cm/sec] = (xn−xn−1)÷100×16×25[cm]÷y[sec]

システム構成図


関連文書