Skip to main content

5.3 PID Regulyatorlar — Nazariya

Hafta: 3 | Masalalar: 35 | Qiyinlik: ⭐⭐⭐


Kirish

PID (Proportional-Integral-Derivative) — eng keng tarqalgan boshqarish algoritmi. Robot, dron, raketa — hammasi PID ishlatadi.


1. Asosiy Tushuncha

Yopiq sikl boshqarish

  r(t)    e(t)     u(t)      y(t)
───────►(+)───►[PID]───►[Plant]───┬───►
│- │
└────────────────────────┘
  • r(t)r(t) — reference (maqsad qiymat)
  • e(t)=r(t)y(t)e(t) = r(t) - y(t) — xatolik
  • u(t)u(t) — boshqarish signali
  • y(t)y(t) — chiqish (o'lchangan qiymat)

2. PID Formulasi

Vaqt sohasida

u(t)=Kpe(t)+Ki0te(τ)dτ+Kdde(t)dtu(t) = K_p e(t) + K_i \int_0^t e(\tau)d\tau + K_d \frac{de(t)}{dt}

Komponentlar

P (Proportional):

uP=Kpe(t)u_P = K_p \cdot e(t)
  • Joriy xatolikka proporsional
  • Tezkor javob
  • Faqat P → doimo xatolik (steady-state error)

I (Integral):

uI=Ki0te(τ)dτu_I = K_i \int_0^t e(\tau)d\tau
  • Xatolik yig'indisi
  • Steady-state error yo'qotadi
  • Haddan tashqari → tebranish, windup

D (Derivative):

uD=Kdde(t)dtu_D = K_d \frac{de(t)}{dt}
  • Xatolik o'zgarish tezligi
  • Overshoot kamaytiradi
  • Shovqinga sezgir

3. Transfer Funksiyasi

Laplace sohasida:

C(s)=Kp+Kis+Kds=Kds2+Kps+KisC(s) = K_p + \frac{K_i}{s} + K_d s = \frac{K_d s^2 + K_p s + K_i}{s}

Yoki standart shakl:

C(s)=Kp(1+1Tis+Tds)C(s) = K_p \left(1 + \frac{1}{T_i s} + T_d s\right)

Bu yerda:

  • Ti=Kp/KiT_i = K_p/K_i — integral vaqt
  • Td=Kd/KpT_d = K_d/K_p — derivative vaqt

4. Tuning Usullari

Ziegler-Nichols (Chastota usuli)

  1. Ki=0K_i = 0, Kd=0K_d = 0 qo'ying
  2. KpK_p ni barqaror tebranish boshlanguncha oshiring
  3. Kritik KuK_u va davr TuT_u ni yozib oling
ControllerKpK_pTiT_iTdT_d
P0.5Ku0.5K_u
PI0.45Ku0.45K_uTu/1.2T_u/1.2
PID0.6Ku0.6K_uTu/2T_u/2Tu/8T_u/8

Ziegler-Nichols (Javob usuli)

Step javobdan LL (delay) va TT (time constant) o'lchang:

ControllerKpK_pTiT_iTdT_d
PT/LT/L
PI0.9T/L0.9T/LL/0.3L/0.3
PID1.2T/L1.2T/L2L2L0.5L0.5L

Manual Tuning

  1. Ki=0K_i = 0, Kd=0K_d = 0 dan boshlang
  2. KpK_p oshiring — tezkor javob, lekin tebranish
  3. KdK_d qo'shing — overshoot kamayadi
  4. KiK_i qo'shing — steady-state error yo'qoladi
  5. Fine-tune qiling

5. Diskret PID

Mikrokontrollerda:

un=Kpen+Kii=0neiΔt+Kdenen1Δtu_n = K_p e_n + K_i \sum_{i=0}^{n} e_i \Delta t + K_d \frac{e_n - e_{n-1}}{\Delta t}

Pseudokod

class PID:
def __init__(self, Kp, Ki, Kd, dt):
self.Kp = Kp
self.Ki = Ki
self.Kd = Kd
self.dt = dt
self.integral = 0
self.prev_error = 0

def compute(self, setpoint, measured):
error = setpoint - measured

# P
P = self.Kp * error

# I
self.integral += error * self.dt
I = self.Ki * self.integral

# D
derivative = (error - self.prev_error) / self.dt
D = self.Kd * derivative

self.prev_error = error

return P + I + D

6. Anti-Windup

Integral to'planib ketishi muammo:

Clamping

self.integral = max(min(self.integral, max_integral), -max_integral)

Back-calculation

Saturatsiyada integral kamaytirish:

ddtedt=e+1Tt(usatu)\frac{d}{dt}\int e \, dt = e + \frac{1}{T_t}(u_{sat} - u)

7. Derivative Filtrlash

Shovqinni kamaytirish:

Dfiltered=Kds1+τfsD_{filtered} = \frac{K_d s}{1 + \tau_f s}

Yoki diskretda:

self.d_filtered = alpha * derivative + (1-alpha) * self.d_filtered_prev

8. Kaskadli PID

Ichki va tashqi sikl:

  r ──►[Outer PID]──►[Inner PID]──►[Plant]──┬──► y
│ │ │
└───────────────────┴───────────────┘

Misol: Dron balandlik kontroli

  • Tashqi: Balandlik → tezlik reference
  • Ichki: Tezlik → thrust

9. Robotikada Qo'llanilish

Dron Attitude Control

Roll, pitch, yaw uchun alohida PID:

Roll PID:  θ_error → Motor differential
Pitch PID: φ_error → Motor differential
Yaw PID: ψ_error → Motor differential

Robot Qo'li

Har bir bo'g'in uchun PID:

τ=Kp(θrefθ)+Kd(θ˙refθ˙)\tau = K_p(\theta_{ref} - \theta) + K_d(\dot{\theta}_{ref} - \dot{\theta})

Motor Tezlik Kontroli

PWM chiqish:

PWM=Kpe+Kie+KddedtPWM = K_p e + K_i \sum e + K_d \frac{de}{dt}

10. Tipik Muammolar

MuammoSababYechim
Sekin javobKpK_p pastKpK_p oshiring
OvershootKpK_p yuqori, KdK_d pastKdK_d oshiring, KpK_p kamaytiring
TebranishKiK_i yuqoriKiK_i kamaytiring
Steady-state errorKi=0K_i = 0 yoki pastKiK_i qo'shing
Shovqin kuchayishiKdK_d yuqoriKdK_d kamaytiring, filtr qo'shing

Xulosa

ParametrTa'sir
KpK_p ↑Tezkor, lekin overshoot
KiK_i ↑SS error kamayadi, lekin tebranish
KdK_d ↑Overshoot kamayadi, lekin shovqinga sezgir

Keyingi Qadam

📝 Masalalar — 35 ta masala yeching!