TIPE · Sciences physiques
Dossier issu de mon TIPE présenté au concours d'entrée aux grandes écoles. Trois axes : la loi d'Henry, la cinétique de dissolution des gaz dans l'eau, et une tentative de calcul des tables de décompression.
Partie I
La loi d'Henry énonce :
« À température constante et à saturation, la quantité de gaz dissous dans un liquide est proportionnelle à la pression partielle qu'exerce ce gaz sur le liquide. »
Il y a donc rupture de l'équilibre lors de la descente en plongée. La pression qu'exerce le gaz sur le sang augmente, le gaz se dissout dans le sang.
De même, lors de la remontée, le phénomène inverse se produit. Le sang est en sursaturation car la pression diminue : un dégazage s'opère. Si la rupture d'équilibre est trop grande, des bulles se forment — c'est l'accident de décompression.
Pour mettre en évidence la loi d'Henry, j'ai rempli une bouteille en plastique à moitié avec de l'eau puis j'ai augmenté la pression grâce à une pompe à vélo.
La pompe avait un manomètre pour vérifier la pression et j'ai pompé jusqu'à obtenir 5 bars, soit l'équivalent de 40 m en plongée. J'ai laissé reposer pendant 1 h. Au bout d'une heure, j'ai brusquement remis l'eau à pression ambiante (j'ai ouvert la valve) pour simuler une remontée rapide. 15 minutes plus tard, des bulles apparaissent.
J'ai voulu tester la loi d'Henry expérimentalement.
Pour cela, j'ai rempli 4 bouteilles en plastique à moitié avec de l'eau et j'ai mis une pression différente dans chaque : 1, 3, 5 et 8 bars, soit l'équivalent de 0, 20, 40 et 70 mètres.
J'ai laissé sous pression pendant 2 jours pour être certain d'avoir atteint la saturation — durée correcte au regard de l'ordre de grandeur d'une plongée (≈ 45 min). J'ai ensuite mesuré, par déplacement d'eau, le volume de gaz qui se dégage de l'eau présente dans la bouteille lorsque je l'ai remise à pression ambiante (1 bar).
On obtient une droite :
Le volume d'eau de la bouteille était de 125 mL et l'expérience s'est faite à 20 °C. Obtenir une droite est cohérent avec la loi d'Henry — la quantité de gaz dissous est proportionnelle à la pression partielle qu'exerce le gaz sur le liquide. Une régression linéaire avec Regressi donne :
Avec :
Théoriquement, la loi d'Henry s'exprime par la relation :
On applique la loi des gaz parfaits pour connaître le volume à pression ambiante :
Dans notre cas, le dioxygène (O₂) et le diazote (N₂) se dissolvent dans l'eau, donc :
D'après la loi de Dalton :
D'où au final :
Les constantes d'Henry du dioxygène et du diazote dans l'eau valent :
Source : P. Atkins, Physical Chemistry, 8e édition, 2006
Avec T = 293 K (20 °C) et Veau = 125 mL, après application numérique :
Avec :
Soit un écart de 12 % sur la pente entre la théorie et l'expérience. Tout à fait honorable au vu de la précision des mesures.
Partie II
Cette fois, on s'intéresse à la cinétique de la dissolution des gaz dans l'eau — le temps étant l'élément essentiel pour le calcul des tables de décompression.
Pour faire un suivi cinétique du dégazage, j'ai essayé plusieurs méthodes différentes avant d'en trouver une qui fonctionnait. Dans tous les cas, j'ai mis la même pression dans toutes les bouteilles et, à intervalle régulier, je prenais une bouteille et je mesurais le volume de gaz qui se dégageait lorsque je remettais l'eau à pression ambiante. Mes mesures ont été faites pour une pression de 5 bars. Pour accélérer le dégazage, j'ai utilisé un agitateur magnétique.
J'ai d'abord voulu utiliser la même méthode que pour vérifier la loi d'Henry, mais le volume dégagé était trop faible pour se déplacer convenablement dans le tuyau jusqu'à l'éprouvette. Les mesures étaient faussées, je n'ai rien pu en déduire.
Ensuite j'ai essayé de mesurer une variation de pression pour en déduire le volume dégagé. De même, la variation était trop petite pour être mesurée. J'ai également essayé par variation de masse : résultats incohérents.
Je suis finalement revenu à une méthode de déplacement d'eau pour mesurer le dégazage. Cette fois je remplissais un tube d'eau et je mesurais de combien de centimètres l'eau s'était déplacée. Connaissant le diamètre du tuyau, j'accédais au volume du gaz :
Cette méthode a très bien fonctionné, c'est celle que j'ai utilisée pour mes expériences.
Grâce à cette méthode, j'ai obtenu les 4 premiers points de la courbe puis j'ai ajouté celui de la vérification de la loi d'Henry. On obtient alors ceci :
Par modélisation, on trouve que cette courbe correspond à cette équation :
Avec :
On en déduit donc, que lors du dégazage, on a :
Grâce à cette modélisation, on va pouvoir tenter de calculer les tables de décompression.
Partie III
Grâce à notre expérience, on va tenter de calculer les tables de décompression. Pour cela, on est obligé de faire des hypothèses, et pas des moindres :
À partir de ces hypothèses, j'ai fait les calculs sur un fichier Excel. Vous pouvez le télécharger ici :
Tables de décompressionSur la feuille 2 du fichier, il suffit de modifier la profondeur pour que la table de décompression se calcule toute seule. Pour être plus proche de la réalité, j'ai dû multiplier le temps caractéristique trouvé expérimentalement par 3.
Par la suite, j'ai écrit un programme sous MAPLE qui génère un graphique plus parlant pour expliquer ce qu'il se passe dans le corps.
> with(plots):
> palier:=proc(p,t)
K:=evalf(3/6170);
S:=2;
Vmax:=x->99.5*((x/10)+1) - 99.5;
f[0]:=x->99.5 + Vmax(p)*(1-exp(-x*60*K));
courbe[0]:=plot(f[0](x),x=0..t,y=99.5..(99.5+Vmax(p)+50),numpoints=5000,color="SteelBlue",thickness=2,legend=["Plongee de "||t||"min"]);
prof[0]:=plot(Vmax(p)+99.5,x=0..t,y=99.5..(99.5+Vmax(p)+50),color=black);
texte[0]:=textplot([t/4,Vmax(p)+99.5,""||p||"m",'align'={'above','right'}]);
duree[0]:=t;
if evalf(((f[0](t)/2/99.5)-1)*10) <= 0 then palier1:=0; n:=0;
elif evalf(((f[0](t)/2/99.5)-1)*10) >= 0 and evalf(((f[0](t)/2/99.5)-1)*10) <= 3 then palier1:=3; n:=1;
elif evalf(((f[0](t)/2/99.5)-1)*10) > 3 and evalf(((f[0](t)/2/99.5)-1)*10) <= 6 then palier1:=6; n:=2;
elif evalf(((f[0](t)/2/99.5)-1)*10) > 6 and evalf(((f[0](t)/2/99.5)-1)*10) <= 9 then palier1:=9; n:=3;
else palier1:=12; n:=4;
fi;
if palier1>=3 then
duree[1]:=t + ceil(evalf(((-1/K)*ln(1-(f[0](t)-S*99.5*((1+0.1*palier1)-0.3))/(f[0](t)-99.5*(1+0.1*palier1))))/60));
f[1]:=x->f[0](t)-((f[0](t)-99.5*((palier1/10)+1))*(1-exp(-(x-t)*K*60)));
courbe[1]:=plot(f[1](x),x=t..duree[1],y=99.5..(f[0](t)+50),color=red,numpoints=5000,thickness=2,legend=["Palier de "||(duree[1]-t)||"min"]);
trait[1]:=implicitplot(x=t,x=t-1..t+1,y=Vmax(p)+99.5..Vmax(palier1)+99.5,color=black);
prof[1]:=plot(Vmax(palier1)+99.5,x=t..duree[1],y=99.5..(99.5+Vmax(p)+50),color=black);
texte[1]:=textplot([t,Vmax(palier1)+99.5,""||palier1||"m",'align'={'above','right'}]);
fi;
if palier1>=6 then
duree[2]:=duree[1] + ceil(evalf(((-1/K)*ln(1-(f[1](duree[1])-S*99.5*((1+0.1*(palier1-3))-0.3))/(f[1](duree[1])-99.5*(1+0.1*(palier1-3)))))/60));
f[2]:=x->f[1](duree[1])-((f[1](duree[1])-99.5*(((palier1-3)/10)+1))*(1-exp(-(x-duree[1])*K*60)));
courbe[2]:=plot(f[2](x),x=duree[1]..duree[2],y=99.5..(99.5+Vmax(p)+50),color=green,numpoints=5000,thickness=2,legend=["Palier de "||(duree[2]-duree[1])||"min"]);
trait[2]:=implicitplot(x=duree[1],x=duree[1]-1..duree[1]+1,y=Vmax(palier1)+99.5..Vmax(palier1-3)+99.5,color=black);
prof[2]:=plot(Vmax(palier1-3)+99.5,x=duree[1]..duree[2],y=99.5..(99.5+Vmax(p)+50),color=black);
texte[2]:=textplot([duree[1],Vmax(palier1-3)+99.5,""||(palier1-3)||"m",'align'={'above','right'}]);
fi;
if palier1>=9 then
duree[3]:=duree[2] + ceil(evalf(((-1/K)*ln(1-(f[2](duree[2])-S*99.5*((1+0.1*(palier1-2*3))-0.3))/(f[2](duree[2])-99.5*(1+0.1*(palier1-(2)*3)))))/60));
f[3]:=x->f[2](duree[2])-((f[2](duree[2])-99.5*(((palier1-2*3)/10)+1))*(1-exp(-(x-duree[2])*K*60)));
courbe[3]:=plot(f[3](x),x=duree[2]..duree[3],y=99.5..(99.5+Vmax(p)+50),color="Chocolate",thickness=2,numpoints=5000,legend=["Palier de "||(duree[3]-duree[2])||"min"]);
trait[3]:=implicitplot(x=duree[2],x=duree[2]-1..duree[2]+1,y=Vmax(palier1-3)+99.5..Vmax(palier1-6)+99.5,color=black);
prof[3]:=plot(Vmax(palier1-6)+99.5,x=duree[2]..duree[3],y=99.5..(99.5+Vmax(p)+50),color=black);
texte[3]:=textplot([duree[2],Vmax(palier1-6)+99.5,""||(palier1-6)||"m",'align'={'above','right'}]);
fi;
if palier1>=12 then
duree[4]:=duree[3] + ceil(evalf(((-1/K)*ln(1-(f[3](duree[3])-S*99.5*((1+0.1*(palier1-3*3))-0.3))/(f[3](duree[3])-99.5*(1+0.1*(palier1-(3)*3)))))/60));
f[4]:=x->f[3](duree[3])-((f[3](duree[3])-99.5*(((palier1-3*3)/10)+1))*(1-exp(-(x-duree[3])*K*60)));
courbe[4]:=plot(f[4](x),x=duree[3]..duree[4],y=99.5..(99.5+Vmax(p)+50),color="DarkOrchid",thickness=2,legend=["Palier de "||(duree[4]-duree[3])||"min"]);
trait[4]:=implicitplot(x=duree[3],x=duree[3]-1..duree[3]+1,y=Vmax(palier1-6)+99.5..Vmax(palier1-9)+99.5,color=black);
prof[4]:=plot(Vmax(palier1-9)+99.5,x=duree[3]..duree[4],y=99.5..(99.5+Vmax(p)+50),color=black);
texte[4]:=textplot([duree[3],Vmax(palier1-9)+99.5,""||(palier1-9)||"m",'align'={'above','right'}]);
fi;
display({seq(courbe[j],j=0..n),seq(prof[j],j=0..n),seq(texte[j],j=0..n),seq(trait[j],j=1..n)},title="Profondeur maximum "||p||"m, duree totale "||(duree[n])||"min",labels=["Temps de plongee (en min)","Volume d'air dissous dans le sang (en ml)"],labeldirections=["horizontal","vertical"],linestyle=solid,titlefont=["ROMAN",15],labelfont=[HELVETICA,10],axesfont=["HELVETICA","ROMAN",8],legendstyle=[font=["HELVETICA",9]]);
end proc:
> palier(40,35);
Ici, j'ai pris l'exemple d'une plongée qui se déroule à 40 m pendant 35 min. Pendant les 35 min de plongée, on remarque que la quantité d'air dissous dans le sang augmente. Au bout de 35 min, on décide de remonter. D'après le coefficient de sursaturation critique, nous devons faire un premier palier à 9 m de 1 min pour pouvoir remonter à 6 m sans aucun souci. De même, on doit ensuite faire un palier de 20 min à 6 m puis un palier de 27 min à 3 m.
Pour une plongée de 35 min à 40 m, les tables MN90 imposent un palier de 8 min à 6 m et un palier de 35 min à 3 m. Soit un temps de remontée total de 47 min contre 48 min dans mon modèle. Un résultat proche, grâce au facteur de correction qu'il n'a pas lieu d'être normalement.
Nous voyons ainsi que l'élaboration d'un modèle pour prévoir les paliers n'est pas simple. J'ai fait de nombreuses approximations, or le modèle est bien plus complexe en réalité. Dans le modèle officiellement utilisé, le corps humain est divisé en 7 compartiments différents avec chacun des coefficients de sursaturation critique distincts. On préfère aujourd'hui utiliser des statistiques pour mettre au point les algorithmes des ordinateurs de plongée : une base de données des accidents de décompression avec leurs paramètres a été constituée. C'est dans ce sens que Comex a fait une proposition de modification des tables françaises suite à une étude statistique des accidents de décompression.
Partie IV
Voici les transparents que j'ai utilisés lors de mon passage au TIPE. J'ai obtenu un total de 15,5/20 pour l'épreuve TIPE/ADS.
Si vous souhaitez un exemple de fiche synoptique, n'hésitez pas à télécharger la mienne ci-dessus.