PID笔记

参考B站的奇乐编程学院的视频: 通俗易懂的 PID 控制算法讲解

TODO

  • [ ] 串级PID

公式

u(t)=Kpe(t)+Kie(t)dt+Kpdedtu(t)=K_{p} e(t)+K_{i} \int e(t) d t+K_{p} \frac{de}{dt}

  • u(t)u(t): PID control variable, 控制输出值
  • KpK_{p}: proportional gain, 比例增益
  • e(t)e(t): error value, t时刻的误差值
  • KiK_{i}: integral gain, 积分增益
  • de{de}: change in error value, 误差微分
  • dt{dt}: change in time, 时间微分

其中, KpK_{p}, KiK_{i}, KdK_{d}需要调参

计算步骤

Python代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

def pid(kp, ki, kd, dt, target, current, prev_integral, prev_error)
error = target - current
integral = prev_integral + error * dt
derivative = (error - prev_error) / dt
output = kp * error + ki * integral + kd * derivative
return output, integral, error

error = 0
integral = 0

while True:
output, integral, error = pid(kp, ki, kd, dt, target, current, integral)
# device.write(output)
# delay(dt)
# current = device.read()