PID线跟随使用arduino

时间:2017-08-05 06:30:04

标签: pid arduino-uno robotics

为什么我们在代码后的PID行中添加所有错误?我无法正确理解答案。 式: total_error = int(kp * proportional + ki * integral + kd * derivative)

1 个答案:

答案 0 :(得分:0)

比例项给出一个与当前误差值成比例的值。积分误差增加了与误差的幅度和持续时间成比例的误差量。导数误差是特定时间误差随时间的斜率。它们都相互作用,为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