Quel problème le PID cherche-t-il à résoudre en général ? En termes simples, le PID permet de répondre à la question : quelle « force » appliquer pour passer d’un état à un état cible ?
Quelques exemples :
- Ajuster la puissance d’un climatiseur pour atteindre une température
- Accélérer ou freiner pour atteindre une vitesse
- Ajuster le régime des moteurs d’un drone pour atteindre une certaine vitesse de rotation
Quelques notions :
- La « force » : la sortie du système PID, aussi appelée somme PID ; c’est littéralement la somme des trois composantes P, I et D.
- L’état cible : la consigne
Quelques faits :
- Il s’agit d’un algorithme itératif : il faut constamment réévaluer la sortie en fonction de l’état actuel.
- Plus la fréquence est élevée, plus le signal de commande est lisse, dans les limites du composant qui exécute ce signal : l’actionneur.
Voici un schéma fonctionnel de l’algorithme PID
Voici une implémentation simple de l’algorithme
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);