La réaction d'oxydation du dioxyde de soufre intervient dans la synthèse industrielle de l'acide sulfurique. Elle se déroule en phase gazeuse :
On suppose que la réaction s'effectue à pression constante, avec des proportions initiales stoechiométriques (2 moles de dioxyde de soufre pour 1 mole d'oxygène). En écrivant la loi d'action de masse pour des gaz parfaits, on obtient l'équation vérifiée par l'avancement (x) à l'équilibre :
où P0=1 bar et K0(T) est la constante d'équilibre pour la température finale du mélange.
Avec le module scilab décrit ici, on calcule l'enthalpie standard et l'entropie standard de réaction :
getf('../equilibre/thermochim.sci') data=readData('../equilibre/thermodata.txt'); [DH,DS]=reaction(data,'2*SO_2(g)+O_2(g)=2*SO_3(g)')
-197.78003 -188.05798
La réaction est exothermique, avec une influence défavorable de l'augmentation de température. Traçons le logarithme de la constante d'équilibre en fonction de la température :
plotA=scf(); plotK(DH,DS,500,1500,100)Figure pleine page
La fonction suivante calcule l'avancement en résolvant l'équation polynomiale avec la fonction roots. On retient la racine comprise entre 0 et 1.
function y=avancement(T,P) x=poly(0,'x'); p=x^2*(3-x)-constanteK(DH,DS,T)*P*(1-x)^3; r=roots(p); a=0 for i=1:length(r), if imag(r(i))==0 then if ((real(r(i))<1)&(real(r(i))>0)) then a=r(i) end, end, end, y=a endfunction
La réaction industrielle démarre à 430 degrés celcius pour finir vers 600 celcius. Calculons l'avancement à 873 K et à 1 bar:
x1=avancement(873,1)
0.7662882
Courbe donnant l'avancement en fonction de la température (1 bar et 10 bar):
n=30; Tmin=500; Tmax=1500; temp=[Tmin:(Tmax-Tmin)/(n-1):Tmax]; a1=temp; a2=temp; for i=1:n, a1(i)=avancement(temp(i),1); a2(i)=avancement(temp(i),10); end
plotB=scf(); plot2d(temp,a1,style=21) plot2d(temp,a2,style=9) legend(['1 bar';'10 bar']) xtitle('Avancement','T (K)','x')Figure pleine page
On suppose que la réaction est effectuée de manière isobare et adiabiatique. Soit Ti la température initiale du mélange. La variation d'enthalpie du mélange est nulle, ce qui donne l'équation :
où désigne la capacité thermique du mélange final. La température finale TF et l'avancement x sont inconnus. Pour déterminer la solution, on trace la température finale en fonction de l'avancement puis on repère l'intersection avec la courbe d'avancement en fonction de la température.
Voici un exemple pour une température initiale de 700 K :
function T=Tfinale(Ti,x) T=Ti-x*DH*1e3/(51*2*(1-x)+34*(1-x)+76*2*x) endfunction Ti=700 n=10; av=[0:1/(n-1):1]; Tf=av; for i=1:n, Tf(i)=Tfinale(Ti,av(i)); end
plotC=scf(); plot2d(Tf,av,style=21) plot2d(temp,a1) legend(['Bilan H','Equilibre']) xtitle('Avancement','T(K)','x')Figure pleine page
La température finale est 1100 K et l'avancement environ 0.25.