Come funziona l'algoritmo PID?

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:

  1. Regolare la potenza di un condizionatore per raggiungere una temperatura
  2. Accelerare o frenare per raggiungere una velocità
  3. Regolare gli RPM dei motori di un drone per raggiungere una determinata velocità di rotazione

Alcuni concetti:

  1. La “forza”: l'uscita del sistema PID, detta anche somma PID, è letteralmente la somma dei tre componenti P/I/D.
  2. Lo stato desiderato: setpoint

Alcuni fatti:

  1. È un algoritmo iterativo: dobbiamo ricalcolare continuamente l'uscita in base allo stato attuale.
  2. 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

Diagramma 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);