Quale problema cerca di risolvere il PID in generale? In parole semplici, il PID risponde alla domanda: quanta “forza” applicare per passare da uno stato attuale a uno stato desiderato?
Alcuni esempi:
- Regolare la potenza di un condizionatore per raggiungere una temperatura
- Accelerare o frenare per raggiungere una velocità
- Regolare gli RPM dei motori di un drone per raggiungere una determinata velocità di rotazione
Alcuni concetti:
- La “forza”: l'uscita del sistema PID, detta anche somma PID, è letteralmente la somma dei tre componenti P/I/D.
- Lo stato desiderato: setpoint
Alcuni fatti:
- È un algoritmo iterativo: dobbiamo ricalcolare continuamente l'uscita in base allo stato attuale.
- Maggiore è la frequenza, più fluido sarà il segnale di controllo, nei limiti del componente che esegue il segnale: l'attuatore.
Di seguito è riportato uno schema a blocchi dell'algoritmo PID
Di seguito è riportata una semplice implementazione dell'algoritmo
const dt = time - this._prevTime;
const error = setpoint - measurement;
this._i += error * dt;
const p = this.kp * error;
const i = this.ki * this._i;
const d = this.kd * (measurement - this._prevMeasurement) / dt;
const f = this.kf * (command - this._prevCommand) / dt;
this._prevCommand = command;
this._prevTime = time;
return (p + i + d + f);