代码之家  ›  专栏  ›  技术社区  ›  abhit pahwa

使用arduino的PID线路跟随

  •  0
  • abhit pahwa  · 技术社区  · 7 年前

    为什么我们要在代码后面的PID行中添加所有错误?我无法正确理解它的答案。 公式:

    1 回复  |  直到 7 年前
        1
  •  0
  •   TomServo    7 年前

    比例项给出的值与当前误差值成比例。积分误差增加了一个误差量,该误差量与误差的幅度和持续时间成正比。导数误差是在特定时间误差随时间的斜率。它们都相互作用,为PID算法提供输出值。

    将这些加在一起的原因是,当优化项中的各种增益(K)值时,如果稳定性可行,您可以在给定系统中获得最佳调谐、最稳定的响应。但是,正如任何消息来源都会告诉你的那样,PID调整可能是一个困难的问题,因为这些错误会随着时间和系统变化而不同步、动态发生,所有这些错误都会及时交互。它们被设计为加在一起,以创建一个封闭形式的方程,可以用不同的增益值进行优化。

    previous_error = 0
    integral = 0
    loop:
      error = setpoint - measured_value
      integral = integral + error*dt
      derivative = (error - previous_error)/dt
      output = Kp*error + Ki*integral + Kd*derivative
      previous_error = error
      wait(dt)
      goto loop