C言語によるPID制御
Posted: 2016年7月13日(水) 13:06
ライントレーサのPID制御に挑戦したいと考えています。
センサを8個(下図)並べて、センサ出力に応じて左右のモータのPWM Dutyを変更させます。
制御の考え方は、
①センサの状態に応じて、「偏差」の値を予め設定します。
②センサの状態をタイマ割り込みで監視します。
③メイン関数内で、タイマ割り込みから得られた「偏差」をもとに、左右のモータのPWM Dutyを計算しようと考えています。
[質問]
PID制御を始めて挑戦するのですが、
比例定数Kp、積分定数Ki、微分定数Kdとすると、
どのように操作量の計算を行えば良いのかが分かりません。
素人質問で申し訳ありませんが、教えていただけると助かります。
[センサ構成]
●: 黒線検知(ライン検知)
〇: 白検知
左 センサ 右 偏差 PWM Duty
●〇〇〇〇〇〇〇: -7 左0% 右100%
●●〇〇〇〇〇〇: -6
〇●〇〇〇〇〇〇: -5
〇●●〇〇〇〇〇: -4
〇〇●〇〇〇〇〇: -3
〇〇●●〇〇〇〇: -2
〇〇〇●〇〇〇〇: -1
〇〇〇●●〇〇〇: 0 左100% 右100%
〇〇〇〇●〇〇〇: 1
〇〇〇〇●●〇〇: 2
〇〇〇〇〇●〇〇: 3
〇〇〇〇〇●●〇: 4
〇〇〇〇〇〇●〇: 5
〇〇〇〇〇〇●●: 6
〇〇〇〇〇〇〇●: 7 左100% 右0%
センサを8個(下図)並べて、センサ出力に応じて左右のモータのPWM Dutyを変更させます。
制御の考え方は、
①センサの状態に応じて、「偏差」の値を予め設定します。
②センサの状態をタイマ割り込みで監視します。
③メイン関数内で、タイマ割り込みから得られた「偏差」をもとに、左右のモータのPWM Dutyを計算しようと考えています。
[質問]
PID制御を始めて挑戦するのですが、
比例定数Kp、積分定数Ki、微分定数Kdとすると、
どのように操作量の計算を行えば良いのかが分かりません。
素人質問で申し訳ありませんが、教えていただけると助かります。
[センサ構成]
●: 黒線検知(ライン検知)
〇: 白検知
左 センサ 右 偏差 PWM Duty
●〇〇〇〇〇〇〇: -7 左0% 右100%
●●〇〇〇〇〇〇: -6
〇●〇〇〇〇〇〇: -5
〇●●〇〇〇〇〇: -4
〇〇●〇〇〇〇〇: -3
〇〇●●〇〇〇〇: -2
〇〇〇●〇〇〇〇: -1
〇〇〇●●〇〇〇: 0 左100% 右100%
〇〇〇〇●〇〇〇: 1
〇〇〇〇●●〇〇: 2
〇〇〇〇〇●〇〇: 3
〇〇〇〇〇●●〇: 4
〇〇〇〇〇〇●〇: 5
〇〇〇〇〇〇●●: 6
〇〇〇〇〇〇〇●: 7 左100% 右0%