Navigation
Internships & Projects
Raspberry Pi
Code Embarqué et Temps Réel
SE et Pilotes
[Protected]
Un processus d'asservissement consiste à réaliser le pilotage d'un système en boucle fermée en relation avec un domaine physique. Il est constitué des éléments suivants, qui sont tous dépendant du temps :
Le processeur d'asservissement consiste à exhiber une fonction f(c(t), y(t)) qui fournie u(t) à chaque instant et assure la convergence de y(t) vers c(t) selon les modalités du problème (convergence rapide, pas de dépassement, etc).
Une solution, actuellement très utilisée, pour cette fonction f est l'utilisation d'un PID (Propertional-Integral-Derivative). Soit e(t), l'erreur, définie par e(t) = c(t) - y(t), on peut exprimer le PID par :
u(t) = Kp e(t) + Ki INT[0 → t] e(t') dt' + Kd de(t) / dt
Avec Kp, Ki et Kd des constantes à définir et propres à un PID donné et INT représentant l'intégration sur le temps.
Les termes de cette formule ont la signification suivante :
Le PID fournit un modèle mathématique intéressant mais ne réponde à la question de l'implémentation.
Une première concerne les grandeurs utilisées :
Comment gérer tout cela ensemble ?
Comme bilan, on peut remarque que :
Cependant, il existe bien des manières de réaliser ce qu'on cherche comme action.
Les deux points un peu compliqué du PID est la programmation de l'intégrale et de la dérivée.
Ces deux termes de calcul dépendent du temps entre 2 mesures, c'est-à-dire de la période de mesure. Dans un monde parfait, l'activation du calcul du PID est précise, c'est-à-dire à la fin de chaque période et le temps dt est égal à la période.
Dans notre monde hélas imparfait et sur un système comme Linux, cette période est plus ou moins bien suivie et le temps entre deux mesures peut être variable. Pour gérer cette variabilité, il est conseille de prendre comme dt la différence de date entre la mesure précédente et la mesure courante: dt = t - t' avec t' la date précédente de mesure. Cela nécessite bien sûr de mémoriser t'.
La fonction de variation de l'erreur est beaucoup trop complexe pour être représenter mathématiquement face à des phénomènes externes bien prédictibles. On se contentera alors d'utiliser des méthodes approchées pour calculer l'intégrale :
Dans le même esprit, la dérivée peut être facilement approximée par : (e(t) - e(t') ) / dt