Chapitre 12

Retour à la douche

Pourquoi on oscillait, et à quelle distance du bord sommes-nous ?

Chapitre 12 : Retour à la douche ↗

La douche, avec un regard neuf

June: J'ai mis le PID de notre drone sur la douche (le même côté nerveux, remis à l'échelle du robinet). Elle a oscillé chaud, froid, chaud… exactement comme Mika au chapitre 0. Le drone n'a jamais fait ça !

Theo: Le drone n'a pas de gros retard. La douche a 2,5 secondes de tuyau. Découvrons enfin ce que fait un retard.

La douche a deux parties lentes : le tuyau, un retard pur de 2,5 s, et le lisseur (un « système du premier ordre », disent les manuels) : le pommeau et les parois du tuyau qui se réchauffent, avec la constante de temps du chapitre 3, τ=1\tau = 1 s (au bout d'1 s, il a comblé 63 % de l'écart vers une nouvelle température).

D'abord, un aveu à propos de la « main normale » du chapitre 0. Elle tournait le robinet à une vitesse proportionnelle à quel point l'eau semblait mal réglée : vitesse du robinet =k⋅e= k\cdot\err{e}, avec k=0,8 %k = 0{,}8\,\% du robinet par seconde et par °C. Une vitesse proportionnelle à l'erreur veut dire que la position du robinet est le tas d'erreur passée. C'est un correcteur I, avec Ki=kK_i = k.

Mika: Attends, donc au chapitre 0, j'étais un correcteur PID ? Enfin, un correcteur I. Un correcteur I trop zélé.

Un retard, c'est un décalage dans l'oscillation

Theo: Je pense toujours qu'un retard rend juste tout plus lent. Il ne devrait pas pouvoir rendre quoi que ce soit instable.

Isolons d'abord le retard pur du tuyau. Imagine une onde sinusoïdale à l'entrée du tuyau qui arrive au pommeau sans être lissée : la sortie garde la même forme, avec 2,5 s de retard. Ce retard représente combien, par rapport à une oscillation ?

Chapitre 12 : Retour à la douche ↗

Theo: Attends. Pour une oscillation de 5 secondes, l'eau chaude arrive pile quand le robinet demande du froid. Ce n'est pas plus lent. C'est à l'envers.

Le retard du tuyau reste de 2,5 s, mais son déphasage dépend de la vitesse d'oscillation. Appelons ce déphasage ϕ\phi et le retard LL. Si une oscillation dure TT secondes (ici, TT est une durée, pas une température), sa pulsation vaut ω=2π/T\omega=2\pi/T radians par seconde. Un déphasage positif signifie que la sortie suit l'entrée avec du retard. Les ingénieurs l'écrivent comme un angle négatif : les courbes ci-dessous descendent donc.

Une oscillation complète, c'est un tour entier du tourniquet du chapitre 5 : 360°, soit 2π radians. Ce qui compte, c'est donc quelle fraction d'une oscillation le retard recouvre : L/TL/T.

ϕ=LT⏟fraction d’une oscillation⋅360∘=ωL radians,ω=2πT\phi = \underbrace{\frac{L}{T}}_{\text{fraction d'une oscillation}}\cdot 360^\circ = \omega L \text{ radians},\qquad \omega = \frac{2\pi}{T}

Chapitre 12 : Retour à la douche ↗

Pour une oscillation de 5 secondes, 2,5 s, c'est une demi-oscillation : 180°. Dans ce modèle de retard pur, chaque sommet de la sortie coïncide avec un creux de l'entrée. Le lisseur de la douche rétrécit aussi les oscillations rapides ; ajoutons-le juste après.

Mika: Donc les mêmes 2,5 s, c'est une pichenette pour une oscillation paresseuse et un retournement complet pour une rapide. Le tuyau ne change jamais. C'est l'oscillation qui change !

Mesurer la douche, une oscillation à la fois

Ajoutons maintenant le lisseur au retard du tuyau. Le pommeau et les parois du tuyau mettent du temps à se réchauffer : la douche complète retarde donc et lisse les changements du robinet. Voici le plan : faire osciller le robinet à une vitesse, attendre un rythme stable, puis mesurer deux nombres :

  • Gain (le même mot que le gain du correcteur : taille en sortie ÷ taille en entrée) : la taille de l'oscillation de température, comparée à l'oscillation du mélange d'eau qu'on a demandée.
  • Phase : de combien elle est en retard, sous forme d'angle : sa fraction d'une oscillation complète, fois 360°.

Chaque mesure pose un point sur deux graphiques. Mesure au moins cinq vitesses, lentes et rapides.

Chapitre 12 : Retour à la douche ↗

Le lisseur rétrécit les oscillations rapides, pendant que le tuyau continue d'ajouter du déphasage. Ces courbes de gain et de phase en fonction de la vitesse d'oscillation forment un diagramme de Bode. Ensemble, elles sont la réponse en fréquence de la douche : la façon dont elle traite chaque vitesse d'oscillation. Ici, l'entrée est la température de l'eau mélangée, donc les oscillations lentes ont un gain de 1. Si on prenait la fraction de robinet comme entrée, le gain serait 45 fois plus grand. Pour obtenir la réponse en fréquence à partir de la formule, on pose s=iωs = i\omega : la même astuce qui a trouvé le bord au chapitre 11. (Ça marche parce que la douche toute seule est stable, donc ses oscillations se calent sur un rythme régulier qu'on peut mesurer.)

G(iω)=e−iωL1+iωτ,∣G∣=11+ω2τ2,∠G=−arctan⁡(ωτ)−ωLG(i\omega) = \frac{e^{-i\omega L}}{1 + i\omega\tau}, \qquad |G| = \frac{1}{\sqrt{1+\omega^2\tau^2}}, \qquad \angle G = -\arctan(\omega\tau) - \omega L

Chapitre 12 : Retour à la douche ↗

June: Trouvé ! Vers 0,95 rad/s, la douche toute seule met une oscillation à l'envers. Retenons cette vitesse.

À quelle distance de la falaise ?

Maintenant, fermons la boucle : main → robinet → tuyau → peau → main. Suis une oscillation sur tout le tour. Pour la main du chapitre 0, le tour de la boucle donne G∘G_{\circ} (un petit rond pour boucle, parce que LL est déjà le retard) :

G∘(s)=ks⏟main⋅45 e−2,5ss+1⏟doucheG_{\circ}(s) = \underbrace{\frac{k}{s}}_{\text{main}}\cdot\underbrace{\frac{45\,e^{-2{,}5s}}{s+1}}_{\text{douche}}

La rétroaction soustrait (erreur = cible − température). C'est un ×(−1), le demi-tour du chapitre 5 : la vague est retournée une fois. Si le tour de la boucle la retarde aussi d'exactement 180°, les deux retournements s'annulent, et chaque correction arrive parfaitement en rythme avec l'oscillation, comme quand on pousse une balançoire pile au bon moment. Si la boucle rend la vague à sa taille d'origine (gain 1), l'oscillation s'entretient toute seule (les automaticiens disent que la boucle pompe) ; au-delà de 1, elle grandit. C'est encore le 1+C P=01 + C\,P = 0 du chapitre 10, sur la droite s=iωs = i\omega : un tour qui revient retourné et à pleine taille, c'est G∘(iω)=−1G_{\circ}(i\omega) = -1.

June: Pour cette boucle de douche simple, la phase traverse −180° à une vitesse d’oscillation qui nous intéresse. Repère cette vitesse sur le graphique de phase, puis lis le gain de boucle à la même vitesse sur le graphique de gain. Est-il inférieur ou supérieur à 1 ?

Chapitre 12 : Retour à la douche ↗

Fais glisser jusqu'à ce que le total dépasse 180°, entre 0,45 et 0,46 rad/s. Au croisement exact, vers 0,457 rad/s, l'oscillation revient 0,72 fois aussi grande : la main pourrait donc être environ 1 ÷ 0,72 ≈ 1,4 fois plus forte avant d'atteindre le bord.

Nouveaux mots

Marge de gain
Combien de fois on pourrait multiplier le gain du correcteur avant que le gain de boucle atteigne 1 à la vitesse à −180°. En dessous de 1 = on est tombé de la falaise.
Marge de phase
À la vitesse où le gain de boucle vaut exactement 1, combien de retard en plus il faudrait pour atteindre −180°. Plus, c'est plus sûr ; 45° à 60° est une cible courante (le détour ci-dessous explique pourquoi).

Pour notre douche, la phase de G∘G_{\circ} atteint −180° à ω≈0,457\omega \approx 0{,}457 rad/s, soit une période d'oscillation d'environ 13,8 s. La main normale (k=0,008k = 0{,}008) n'a qu'une marge de gain d'environ 1,4, et une marge de phase d'environ 22° (là où son gain de boucle vaut 1, à 0,34 rad/s, la phase est de −158°). Tout près du bord ! La main énergique double le gain : 1,4 ÷ 2 = 0,7, tombée de la falaise. C'est exactement pour ça qu'elle ne se stabilisait jamais.

Prédis d'abord ! Imagine que le tuyau soit deux fois plus long (un retard de 5 s). Que devient le plus grand gain de main encore stable ?

Chapitre 12 : Retour à la douche ↗

Chapitre 12 : Retour à la douche ↗

Mika: Deux fois plus de tuyau, environ deux fois moins de main. Et au bord, les oscillations ralentissent aussi : presque 24 secondes !

Theo: D'accord, je retire ce que j'ai dit. Un retard ne rend pas juste les choses plus lentes : il mange la marge de phase, et la marge de phase est la seule chose entre toi et une oscillation.

Ta douche du chapitre 0, expliquée

Voici ton propre essai du chapitre 0. Si tes oscillations étaient proches du bord, leur période devrait être proche de ce que prédit la boucle. Petite subtilité : les gens ne sont pas tous le même genre de correcteur.

Chapitre 12 : Retour à la douche ↗

Une main vitesse (tourner le robinet tant que ça semble faux) est un correcteur I : son bord correspond à des oscillations de 13,8 s. Une main position (« c'est trop chaud, mets le robinet ici ») agit comme un correcteur P : G∘(s)=45K e−2,5s/(s+1)G_{\circ}(s) = 45K\,e^{-2{,}5s}/(s+1). Une main position n'a pas de tas, donc pas de 90° à elle : le tuyau et le lisseur doivent atteindre 180° tout seuls, ce qui arrive pour une oscillation plus rapide, ω≈0,95\omega \approx 0{,}95 rad/s (la vitesse « à l'envers » de June). Cela donne des oscillations de 6,6 s, pour tout KK au-dessus d'environ 0,031 robinet par °C. La plupart des gens sont un mélange. (La main robot normale oscille un peu plus lentement que 13,8 s, environ 15,5 s, parce qu'elle est juste à l'intérieur du bord ; les oscillations de la main énergique, environ 11,6 s, sont écrasées par le robinet qui arrive en butée.)

Chapitre 12 : Retour à la douche ↗

Mika: Donc quand je donnais un coup sec au robinet vers une position précise, j'étais une main position. Mes oscillations de six secondes, c'était le tuyau et le lisseur, pas des doigts maladroits.

Concevoir une douche robot

Essayons maintenant de battre nos mains. Le robot utilise PI : P réagit à l’erreur de température actuelle, et I garde en mémoire l’erreur accumulée. Ensemble, ils font réagir vite le robinet tandis que I trouve le réglage durable.

June: Facile. Je vais mettre de gros gains, comme sur le drone : rapide et nerveux. Ils sont déjà réglés. Regardez ça !

Chapitre 12 : Retour à la douche ↗

June: …elle pompe : chaud–froid–chaud, toutes les 6 secondes, comme une main position au chapitre 0. Les gros gains ont poussé la vitesse à gain 1 au-delà de la vitesse à −180°. Plus aucune marge de phase.

Theo: Le drone supportait de gros gains parce qu'il n'avait presque pas de retard. Ici, robuste veut dire doux : il faut laisser de la marge pour le retard. Essaie mes gains doux, environ Kp≈1K_p \approx 1 et Ki≈0,6K_i \approx 0{,}6.

P réagit à maintenant, I au tas. Ajouter un peu de maintenant fait bouger le robinet un peu plus tôt, ce qui rend de la phase : c'est l'avance de phase, environ 37° à l'ancienne vitesse à −180° avec les gains de Theo.

Un PI avec de bonnes marges devient confortable en environ 9,4 secondes, sans grandes oscillations répétées. C'est mieux que la main normale (qui a passé presque une minute à osciller avant de se calmer) et que la plupart des humains. Mais il ne peut pas battre la physique : rien ne peut réagir à de l'eau qui n'est pas encore arrivée. Les ingénieurs ont bien une astuce pour les longs retards, le prédicteur de Smith, qui fait tourner une petite simulation du tuyau à l'intérieur du correcteur. Mais c'est une histoire pour un autre carnet.

La robustesse, c'est la vraie leçon. Ton modèle de la douche n'est jamais parfait : le tuyau est peut-être plus long, le chauffe-eau plus faible. Une marge dit à quel point le modèle peut se tromper, avec un nombre qu'on peut sentir. La marge de phase (en radians) divisée par la vitesse à gain 1 donne une marge de retard : combien de secondes de tuyau en plus la boucle peut encaisser.

Chapitre 12 : Retour à la douche ↗

Theo: La main normale ne supporte qu'environ 1,1 s de tuyau en plus. Mon robot tout doux en supporte 3,5 s. Voilà ce que veut dire robuste.

Ce qu'on comprend maintenant

Ce qu'on a compris

  • Un retard LL décale une oscillation de ωL\omega L : rien pour les oscillations lentes, beaucoup pour les rapides.
  • Un tas (I) retarde chaque oscillation de 90° ; un lisseur, de 90° au plus ; un tuyau, de ωL\omega L, sans limite.
  • Envoyer des sinusoïdes et mesurer gain et phase donne la réponse en fréquence ; tracée, c'est un diagramme de Bode, et c'est simplement G(iω)G(i\omega).
  • Dans cette boucle de douche simple, une oscillation entretenue commence quand la phase de boucle atteint −180° avec un gain de 1 ; un gain plus grand fait croître les oscillations jusqu’à l’intervention des limites.
  • Les marges de gain et de phase mesurent la distance à cette falaise. Plus de retard veut dire moins de marge, donc il faut une commande plus douce.
  • Nos oscillations du chapitre 0, c'était un correcteur (nous) avec trop peu de marge.

On a maintenant tous les outils : rétroaction, PID, pôles, marges. Place au vrai test : du vent, un colis largué et un capteur bruité. Arriveras-tu à garder le drone à 2 m ?

Chapitre 12 : Retour à la douche ↗