PID制御

🔥 Vibe プロンプト

「PIDで温度制御をシミュレーション。目標100°C。Kp、Ki、Kdを調整してオーバーシュート最小化。」

PID制御とは?

PID制御は、産業界で最も広く使われているフィードバック制御アルゴリズムです。3つの項の組み合わせで目標値を追跡します:

| 項 | 正式名 | 役割 | |----|--------|------| | Kp | 比例(Proportional) | 現在の誤差に比例した出力 | | Ki | 積分(Integral) | 過去の誤差の累積(定常偏差を除去) | | Kd | 微分(Derivative) | 未来の誤差の予測(オーバーシュート低減) |

実装

class PID:
    def __init__(self, Kp, Ki, Kd, setpoint):
        self.Kp, self.Ki, self.Kd = Kp, Ki, Kd
        self.setpoint = setpoint
        self.prev_error = 0
        self.integral = 0
    
    def update(self, measurement, dt):
        error = self.setpoint - measurement
        self.integral += error * dt
        derivative = (error - self.prev_error) / dt
        self.prev_error = error
        return self.Kp*error + self.Ki*self.integral + self.Kd*derivative

# 温度制御シミュレーション
pid = PID(Kp=2.0, Ki=0.5, Kd=1.0, setpoint=100)
temp = 25.0; dt = 0.01

for _ in range(1000):
    output = pid.update(temp, dt)
    temp += output * dt * 10
    temp -= (temp - 25) * 0.01 * dt

print(f"最終温度: {temp:.1f}°C")

ジーグラー・ニコルス調整法

  1. Ki = Kd = 0 に設定
  2. 持続振動が発生するまでKpを増加(Ku = 限界感度)
  3. 振動周期(Pu)を測定
  4. 以下の式で設定:

| 制御器 | Kp | Ki | Kd | |--------|-----|-----|-----| | Pのみ | 0.5 × Ku | — | — | | PI | 0.45 × Ku | 0.54 × Ku / Pu | — | | PID | 0.60 × Ku | 1.20 × Ku / Pu | 0.075 × Ku × Pu |

応用

| 産業 | 用途 | |------|------| | 🚁 ドローン | 姿勢安定化(ロール、ピッチ、ヨー) | | 🚗 自動車 | クルーズコントロール、ABS | | 🏭 産業 | 温度、圧力、流量制御 | | 🤖 ロボット | モーター位置/速度制御 | | 🔥 HVAC | 建物の温度調整 |

まとめ

| 項目 | 詳細 | |------|------| | Kp | 比例 — 現在の誤差に応答 | | Ki | 積分 — 定常偏差を除去(過去の累積) | | Kd | 微分 — 将来の誤差を予測、オーバーシュート低減 | | 調整 | ジーグラー・ニコルス法、試行錯誤、自動調整 | | 課題 | 微分項のノイズ増幅、積分ワインドアップ |

重要なポイント

  • コアコンセプトをしっかり理解する
  • ハンズオンコード例で実践する
  • 実世界の問題に応用する
  • 演習で知識を強化する

さらに学ぶ

  • 公式ドキュメント
  • GitHubのオープンソースプロジェクト
  • コミュニティフォーラムとディスカッション
  • 関連コースとチュートリアル

完全なチュートリアルをロック解除

このチャプターは有料コンテンツです。プロジェクトに参加して、10以上の神レベルのPromptや実際のソースコード例を含む、5000字以上の深い分析をロック解除してください!