C言語によるPID制御

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
C素人

C言語によるPID制御

#1

投稿記事 by C素人 » 9年前

ライントレーサの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%

“C言語何でも質問掲示板” へ戻る