Aujourd'hui, un gros post, version mise à jour d'un article posté sur le forum e-Copter il y a déjà quelques temps.
Le but est de :
- présenter une approche simple et concrète de l'asservissement par l'exemple;
- aboutir à l'un des asservissements les plus connus : le PID;
- recouper la théorie avec un domaine qui nous touche particulièrement, les hélicoptères (grandeur ou radiocommandés), dans un prochain post.
Définition
Définition extraite de Wikipedia :
En sciences sociales, l'asservissement est la mise en servitude, en esclavage, en domination ou en aliénation.
En électronique / informatique, l'asservissement d'une valeur, c'est la façon de mettre en servitude cette valeur, de la plier à notre volonté.
C'est l'art et la manière d'obtenir le résultat souhaité en mettant en oeuvre les moyens à notre disposition.
Boucles ouvertes, boucles fermées
Prenons un exemple concret (que l'on va garder jusqu'à la fin de la démonstration) : vous roulez sur une route, et vous voulez suivre la ligne centrale.
On va en fait essayer d'asservir la distance entre la voiture et la ligne centrale, pour la maintenir à zéro.
Bien sur cet exemple n'est qu'une vue de l'esprit, ne vous amusez pas à reproduire la suite dans la "vraie vie" !
Premier cas le plus simple, vous ne voyez pas ou vous allez (pare-brise sale, bandeau sur les yeux).
Le mieux que l'on puisse faire, c'est de placer - avant de partir - la voiture dans la "bonne direction" et d'aller tout droit.
On a alors deux problèmes :
- Comment décider de la "bonne direction" ? Si la route est droite, passe encore, mais si la route est sinueuse ...
- Il faut être particulièrement précis dans la direction initiale : quelques degrés d'erreur et on arrive à Lyon au lieu de Paris !
Ce n'est visiblement pas le cas idéal, mais sans voir ou l'on va, impossible de faire mieux.
Ouvrons maintenant les yeux : tout de suite on se sent plus à l'aise pour conduire.
En pratique, on va maintenant pouvoir suivre la ligne centrale, et corriger au fur et à mesure si l'on constate que l'on dévie.
Là, les chances d'arriver à destination et d'avoir suivi la ligne au plus près sont grandement améliorées !
Conclusion : Dans le premier cas, on part dans une direction et on attend que ca passe, alors que dans le second cas, on corrige au fur et à mesure que l'on avance.
Cette différence, c'est ce que l'on appelle le bouclage : quand on corrige au fur et à mesure en fait on fait en boucle l'action "je vois - je réfléchis - je corrige".
On parle alors d'une boucle fermée (quand on à fini, on recommence, comme un cercle). Dans le cas contraire, on parle d'une boucle ouverte (qui à un début et une fin).
Quelques définitions :
- Le système : c'est l'ensemble de la voiture, de son pilote;
- L'univers : le système, et ce qui entre en interaction avec lui : par exemple la route;
- La consigne : la consigne c'est l'objectif à atteindre, ici de garder la voiture sur la ligne centrale;
- Le capteur : c'est lui qui renseigne le système sur ce qu'il voit, dans notre exemple, vos yeux;
- La mesure : l'information qu'envoi le capteur, ici la distance entre la ligne et la voiture;
- L'erreur : l'erreur est la différence entre la consigne et la mesure, autrement dit la différence entre ce que l'on veut, et ce que l'on voit;
- La commande : le moyen d'action du système, dans le cas d'une voiture, les roues avant par l'intermédiaire du volant;
- Une perturbation : tout ce qui vient de l'extérieur du système, et qui en modifie l'action, pour la voiture, un coup de vent par exemple;
On a déjà pu constater que la boucle ouverte offre peu d'intérêt pour l'asservissement.
Elle n'en est pas moins utilisée dans la vie courante : plaques à gaz, certains fours, tout ce qui est simple et assez prédictible.
L'avantage de cette solution, c'est sa simplicité (pas de calculs) et son coût (pas de capteur).
Pour la suite, on ne s'intéressera qu'à la boucle d'asservissement fermée :
Algorithmique (ou algo rythmique ?)
La boucle d'asservissement fermée repose sur deux actions : la mesure, qui dépend principalement du capteur utilisé, et la réflexion.
La réflexion, c'est la capacité d'adapter la commande en fonction de la mesure (comment et de combien tourner le volant en fonction de ce que je vois).
C'est cet élément qui nous intéresse aujourd'hui, et souvent c'est ici que se fait la différence entre un bon et un mauvais asservissement.
L'exemple que j'ai choisi est un peu particulier, puisque c'est un cerveau humain qui commande, et le cortex à des propriétés assez phénoménales ... dont la capacité d'apprendre.
Ainsi, on va au cours de cet article en quelque sorte retracer la suite des évènements de quelqu'un qui apprend à conduire une voiture (pas très doué, je vous l'accorde, du moins au début).
Le B-A-BA : Bang Bang !
Prenons donc un conducteur totalement inexpérimenté.
On lui explique simplement qu'en tournant le volant à gauche, la voiture va à gauche, et réciproquement, quand on tourne le volant à droite, la voiture va à droite.
En piste !
Quel comportement va-t-on observer : si la voiture part à droite, le nouveau conducteur va - violemment - tourner le volant à gauche pour corriger.
Ce faisant, il va certainement croiser la ligne, et partir à gauche ... ce qu'il va corriger en mettant un grand coup de volant à droite !
Sur une route assez simple, et sans aller trop vite, on finira par arriver ... mais surement avec l'estomac vidé !
C'est ce qu'on appelle l'asservissement Bang Bang, en référence aux coups d'épaules dans la portière à chaque coup de volant, en quelque sorte.
L'asservissement Bang Bang :
Avantages :
- Très simple à mettre en oeuvre, action type "on-off";
- Ca marche, dans des cas assez simples.
Inconvénients :
- Pas très "doux";
- Ne marche que si on ne roule pas trop vite;
- On est jamais vraiment sur la ligne, on la croise en permanence.
Utilisation typique :
- Contrôle de la température : systèmes lents, et commande de puissance type on-off.
Composante proportionnelle : la réponse graduée
Pour cette première étape, il est probable que les propositions d'améliorations de l'asservissement viennent directement des passagers, sous la forme de noms d'oiseaux surtout, et de "vas-y mollo !" appuyés.
Et ils auraient bien raison !
L'étape suivante, c'est de comprendre que le volant n'a pas que les positions "à fond à gauche" et "à fond à droite".
En fait, il peut même prendre une infinité de positions entre les deux.
En piste !
Quel comportement va-t-on observer : cette fois-ci la réponse du conducteur est proprtionnelle à la déviation de la voiture.
Plus la voiture s'éloigne de la ligne centrale, plus notre apprenti va tourner le volant dans la direction opposée.
L'asservissement devient bien meilleur ! On est plus projeté contre les portières, à moins que cela ne soit vraiment nécessaire.
Par contre d'autres problèmes apparaissent :
- Si la route tourne, la voiture s'éloigne de la ligne et le conducteur tourne le volant, seulement pour qu'il continue à braquer, il faut que la voiture reste à côté de la ligne centrale. On tourne, mais à l'extérieur du virage.
- Si le vent souffle de côté, la voiture est décalée. En réponse on va tourner un peu le volant pour contrer. Seulement encore une fois, on suit la ligne mais sans être dessus !
- S'il y a du jeu dans la colonne de direction, et que l'on est très près de la ligne, on va tourner le volant très peu ... mais le jeu mécanique va absorber ce mouvement et les roues ne tourneront pas. On va alors rester juste à côté de la ligne.
L'asservissement Proportionnel :
Avantages :
- Meilleur résultat que l'asservissement Bang Bang sur des systèmes rapides;
- Réponse graduelle, plus douce, on s'éloigne moins de la consigne.
Inconvénients :
- On suit la ligne en restant à côté quand il y a du vent ou que la route tourne;
- On a maintenant un premier paramètre à régler : le rapport entre l'erreur et la commande.
Utilisation typique :
- Servomoteur de modélisme dit "analogique";
- Bons fours électriques.
Composante intégrale : le facteur d'irritation.
Notre étudiant pilote de course s'est déjà bien amélioré, mais c'est encore loin d'être parfait.
La prochaine étape, il devrait la trouver de lui-même : le facteur d'irritation.
En effet, prenons l'exemple du vent, le conducteur contre la force du vent en tournant le volant, mais reste à côté de la ligne.
Rapidement, ça va l'ennerver, et il va tourner encore plus le volant pour revenir sur la ligne. Idem pour le virage et le jeu mécanique.
En fait c'est une réponse proprotionnelle à la fois à l'écartement par rapport à la ligne, et au temps passé à côté de la ligne.
L'action mathématique de cumuler une valeur au fil du temps, c'est l'intégration, on ajoute donc une composante intégrale à notre algorithme.
En piste !
Le résultat est un asservissement bien meilleur, capable de gommer les perturbation à la fois extérieures (vent) et intérieures (jeu mécanique), et qui suit au mieux une variation simple de la consigne (route qui tourne).
L'asservissement Proportionnel - Intégrale :
Avantages :
- Très bon résultat;
- Gomme les perturbations extérieures et intérieures;
- Suit mieux les variations de consignes.
Inconvénients :
- Nettement plus compliqué techniquement. Une intégrale à une facheuse tendance à dériver (sic!) dans le temps. On appel ça le "drift";
- On a maintenant un deuxième paramètre à régler : le rapport entre l'intégrale de l'erreur et la commande;
- Si pour une raison ou une autre on est résté longtemps loin de la consigne, le facteur intégral va grossir, grossir, jusqu'a devenir incontrôlable. Il faut donc limiter sa valeur;
- Tendance à dépasser assez fortement la consigne (le temps que le facteur intégral se "décharge").
Utilisation typique :
- Servomoteur de modélisme dit "numérique";
Composante dérivée : la prévision
Là on attaque le petit plus qui fait la différence entre un bon pilote, et un excellent pilote.
Le problème principal du facteur intégral, c'est qu'il a tendance à faire dépasser la consigne (le temps qu'il se décharge).
Du coup la réponse du système pour se stabiliser est plus longue (ou tourne autour du pot avant de se fixer).
Pour contrer cet effet néfaste, il faudrait anticiper l'arrêt quand on arrive sur la ligne.
On va donc "freiner" en arrivant sur la consigne. Ce frein dépend de la vitesse à laquelle on arrive dessus. Plus on va arriver vite sur la vitesse, plus il faudra arrêter de braquer tôt.
La vitesse, en terme mathématique, est une dérivée. On va donc ajouter une composante dérivée à notre algorithme.
En piste !
Cette fois la réponse est excellente, le pilote réagit vite, suit très bien les virages, compense le vent, et se "bloque" très rapidement sur la trajectoire.
Là on tient un nouveau Schumacher !
L'asservissement Proportionnel - Intégrale - Dérivée (dit PID) :
Avantages :
- Excellent résultat;
- Gomme les perturbations extérieures et intérieures;
- Suit bien les variations de consignes;
- Se cale rapidement sur la consigne sans trop la dépasser.
Inconvénients :
- Demande plus de puissance de calcul;
- On a maintenant un troisième paramètre à régler : le rapport entre la dérivée de l'erreur et la commande;
- Chaque paramètre influe sur les autres. Trouver une combinaison gagnate est tout sauf évident;
Utilisation typique :
- Asservissement de position haut de gamme;
- Machines outils rapides à commande numériques.
Formule du PID
Le PID est l'un des asservissements les plus connus, sinon le plus connu.
Il a l'avantage d'être assez facile à comprendre, et à implémenter (au moins sur le papier).
Il est donc composé :
- D'une composante proportionnelle : réponse graduée à l'erreur;
- D'une composante intégrale : réponse à la cumulation de l'erreur;
- D'une composante dérivée : réponse à la vitesse de changement de l'erreur.
Sa formule mathématique est :
Commande = P x Erreur + I x Intégrale(Erreur) + D x Dérivée(Erreur)
Il existe bien d'autres variantes de cet asservissement.
Souvent on ajoute un ou plusieurs termes (composantes) pour affiner la réponse :
- Composante Feed Forward : réponse proportionnelle à la consigne;
- Composante de relaxation : la composante intégrale se "vide" seule au cours du temps ;
On peut aussi jouer avec différentes heuristiques, selon la grandeur physique à asservir ... par exemple remettre à zéro le terme intégrale quand on passe au dessus de la ligne centrale.
Conclusion
Voilà j'éspère que cet article sera une entrée en matière "digérable" dans ce domaine merveilleux de l'asservissement.
Jouer avec différents types d'asservissement est - je trouve - ludique. Chercher des composantes qui vont vraiment améliorer la réponse, tester des hypothèses.
Chaque asservissement est différent, et on en trouve absolument partout, il suffit souvent de regader autour de soi pour en voir.
Vous pouvez bien entendu me faire part de vos questions / réflexions / améliorations par mail, ou par le widget Meebo-Me qui permet de me contacter en "live" quand je suis connecté.
Enjoy !