沼津高専 電子制御工学科
MIRSATLM PWM・ロータリエンコーダ・RT-タスクモジュール取扱説明書
MIRSATLM-SOFT-1002
改訂記録
版数
作成日
作成者
承認
改訂内容
A01
2000.10.12
大島
牛丸
初版
A02
2001.5.2
大島
牛丸
ソースプログラムへのリンクを追加
目次
始めに
インターフェイスについて
行動制御プログラム中で使用する制御関数
ソースプログラム
移動距離・速度の算出方法
システム構成図
始めに
本ドキュメントは、ATLMMIRSの行動制御プログラム中で使用するPWM・ロータリーエンコーダ制御用関数の機能と、 行動制御プログラム・RT-タスク間のインターフェイスについて記したものである。
インターフェイスについて
ロータリーエンコーダ・PWM制御用ソフトではRT-タスクを1つ、FIFOを3つ使用する。各タスク、FIFOの番号と機能は下記の通り
タスク2:ロータリーエンコーダからのカウント値の読み込みと、FIFO3へのカウント値の書き込み。 FIFO4からの速度データの読み込みと、PWMへの速度データの転送。
FIFO3:ロータリーエンコーダの値書き込み用
FIFO4:PWMへの速度データの受け取り用
FIFO5:START、STOP、RESTARTの指令やタスクの優先度、実行周期の受け取り用
行動制御プログラム中で使用する制御関数
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指令の書き込みを行う。 戻り値は無し。
ロータリーエンコーダ制御用
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にそれぞれ左移動距離、右移動距離、 左速度、右速度が代入される。
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の足回りに関するデータが上記の通りであるとすると、タイヤの移動距離と速度は次のようにして 算出される。読み込んできたカウント数がx
1
、x
2
・・・x
n
であった場合(x
n
が最新のカウント値で、タスクの実行周期はyとする。)、 移動距離d: d [cm] = (x
1
+x
2
+・・・+x
n
)÷100×16×25[cm] 速度v: v [cm/sec] = (x
n
−x
n−1
)÷100×16×25[cm]÷y[sec]
システム構成図
関連文書