ページ 11

PD制御について

Posted: 2016年1月25日(月) 16:13
by 素人
ライントレースカーの制御について。

センサ8個(デジタル出力)
モータ速度制御 PWM 8bit

センサ信号に応じて、左右のモータのPWM Dutyを変化させたいと考えています。

黒線を検知しているセンサを●として、偏差量を次の通りに決めようと考えています。

●〇〇〇〇〇〇〇 -7 (0x01)
●●〇〇〇〇〇〇 -6 (0x03)
〇●〇〇〇〇〇〇 -5 (0x02)
〇●●〇〇〇〇〇 -4 (0x06)
〇〇●〇〇〇〇〇 -3 (0x04)
〇〇●●〇〇〇〇 -2 (0x0C)
〇〇〇●〇〇〇〇 -1 (0x08)
〇〇〇●●〇〇〇 0 (0x18)
〇〇〇〇●〇〇〇 +1 (0x10)
〇〇〇〇●●〇〇 +2 (0x30)
〇〇〇〇〇●〇〇 +3 (0x20)
〇〇〇〇〇●●〇 +4 (0x60)
〇〇〇〇〇〇●〇 +5 (0x40)
〇〇〇〇〇〇●● +6 (0xC0)
〇〇〇〇〇〇〇● +7 (0x80)

この偏差量を制御量(PWM Duty)に反映させたいのですが、どのように記述すれば良いのでしょうか。

Re: PD制御について

Posted: 2016年1月25日(月) 21:58
by みけCAT
素人 さんが書きました:この偏差量を制御量(PWM Duty)に反映させたいのですが、どのように記述すれば良いのでしょうか。
この偏差量を制御量(PWM Duty)に反映させるように記述すればいいでしょう。
プラットフォームも言語もわからないので、具体的な記述はわかりません。

Re: PD制御について

Posted: 2016年1月26日(火) 08:02
by 素人
すみませんでした。
PICマイコン+C言語で考えています。

Re: PD制御について

Posted: 2016年1月26日(火) 08:21
by みけCAT
(擬似コード)

コード:

var 偏差量から制御量に変換するテーブル[256] = {
  それぞれの偏差量に対応する制御量
};
var d, p;

初期化();
無限ループ {
  d = 偏差量を読み取る();
  p = 偏差量から制御量に変換するテーブル[d];
  制御量を設定する(p);
}
みたいな感じで書けばいいと思います。

Re: PD制御について

Posted: 2016年1月28日(木) 14:15
by non
左右のモータのPWM値のテーブルは左右別々に作っておいた方がわかりやすいです。左右モータの特性違いもあるし。