LC18 : Corps purs et mélange binaire
Bibliographie
- Chimie PC/PC*, RIBEYRE, de BOECK
- H-Prépa, Chimie
Niveau
CPGE
Prérequis
- fraction massique et molaire
- Changement d’état
- potentiel chimique
Introduction
Manip : On introduit dans un bécher 1,1 gramme de menthol et 0,6 gramme d’acide laurique. On mélange avec une spatule, le solide commence à se liquéfier. Même si à l’oeil il n’y pas moyen de le savoir, c’est bien un changement d’état et pas une réaction chimique. On pourrait caractériser le mélange par spectroscopie pour s’en assurer.
En métallurgie on utilise souvent des alliages pourquoi ? Cela permet de jouer sur les propriétés et avoir celle que l’on souhaite. Par exemple on va allier l’or avec d’autres métaux pour avoir des bijoux plus résistant car l’or est un métal mou (pirate qui morde les pièces). Cela va également permettre d’utiliser des température moins forte pour faire fondre l’alliage. On va étudier tout cela dans la leçon.
Avant d’étudier tout cela, on va étudier le corps pur pour étudier qqch de simple.
I. Etude de changement d’état du corps purs
1) Corps pur
Définir ce que c’est qu’un corps .
Condition d’équilibre, égalité des potentiels chimiques.
Présentation du diagramme (P,T), présenter les noms des pentes. Bien noter que les courbes correspondent aux situations d’équilibre entre phases donc aux changement d’état.
2) Variance
Définir ce que c’est : la variance est le nombre maximal de paramètres intensifs que l’on peut choisir sans remettre en cause l’existence de l’équilibre thermodynamique du système.
v=nombre de paramètre intensif-nombre de relation qui les lie.
Calcul de variance pour les différents domaines du diagramme (P,T) et à leur frontière.
Comment on voit expérimentalement que l’on a une variance qui change ?
3) Courbe d’analyse thermique
Bien préciser que l’on se place en condition isobare.
C’esrt l’évolution de la température en fonction du temps lors de la chauffe ou du refroidissement du mélange. C’est une courbe que l’on obtient expérimentalement
Manip : Faire en direct la prise de la courbe d’analyse thermique de l’acide palmitique. On voit bien le plateau, où la variance réduite est à 0 (elle se fait pour une seule température) et à 1 sur les pentes. On fait l’acquisition avec picolog, il faut bien mélanger en même temps. On fait l’acquisition sur la descente en température.
Il faut bien appuyer sur la présence d’un plateau et dire que c’est une caractéristique du corps pur.
Transition : La plus part du temps on est confronté à des mélanges et non pas à des corps purs. On va donc s’intéresser au changement de phases de deux composants que l’on appelle : mélange bianire.
II. Mélange miscible à l’état solide
1) Courbes d’analyse thermique du mélange
On fait la remarque que l’on va parler en fraction molaire ou massique car cela va permettre de ne pas dépendre de la constitution du système que l’on étudie.
On regarde une courbe et on l’analyse. On appuie bien sur le fait que l’on a pas de plateau comme précédemment, on a juste un changement de pente. Et on l’analyse en terme de variance (v=3 ; v=2 ; v=3). [H-Prépa]
On prend l’exemple sur l’alliage Cu-Au (on peut dire que c’est parce que l’or est un métal très mou).
2) Tracé et lecture du diagramme
On trace le diagramme à l’aide des courbes d’analyse thermique. On donne le nom des courbes (solidus et liquidus). Bien appuyer sur la forme des courbes.
On donne le théorème de l’horizontale permet d’avoir la constitution de la phase liquide et de la phase solide.
On donne le théorème des moments : permet d’avoir accès à la quantité de matière de chaque phase.
Transition : Que se passe-t-il si pas miscible ?
III. Mélange binaire à miscibilité
1) Courbe d’analyse thermique
Manip : On fait l’acquisition de la courbe d’analyse thermique d’un mélange thymol/ acide palmitique.
On observe cette courbe, on voit qu’on a présence d’un palier. Qu’est-ce que c’est qu’un palier c’est une variance réduite de 0, on refait le calcul de la variance. Cela se comporte comme un corps pur, mais ce n’en est pas un.
Ce plateau (variance nulle) s’appelle un eutectique.
2) Diagramme binaire non miscible
Montrer la tête du diagramme non miscible (eau-NaCl). On montre toutes les parties. Montrer le palier Eutectique. Et on dit en quoi ça peut-être utile : salage des routes. Cela permet d’avoir un eutectique beaucoup plus bas que 0 degré et donc d’avoir de l’eau salé liquide à la température extérieure négative.
Conclusion
Diapo
Fractions massiques
Python : construire le diagramme binaire
#-----------------------------------------------------------------------
# Diagramme binaire
#-----------------------------------------------------------------------
# Renseignements/bugs : Guillaume Dewaele <agreg(at)sci-phy.org>
#-----------------------------------------------------------------------
# Paramètres modifiables
titre = "Diagramme binaire thymol et acide palmitique"
# Espèce 1
E1 = r"$Thy_{sol}$" # Nom
M1 = 150.22e-3 # Masse molaire, g/mol
Tf1 = 51 # Température de fusion, °C
DH1 = 17.54e3 # Enthalpie de fusion, kJ/kg
col1 = 'g' # Couleur sur le graphe
# Espèce 2
E2 = r"$APal_{sol}$" # Nom
E2r = r"$APal$" # Nom (abscisses)
M2 = 256.4241e-3 # Masse molaire, g/mol
Tf2 = 63 # Température de fusion, °C
DH2 = 51.02e3 # Enthalpie de fusion, kJ/kg
col2 = 'b' # Couleur sur le graphe
# Solide
col3 = 'r' # Couleur sur le graphe
# Utiliser fraction massique ?
massique = False
# Annotation liquidus
xsol = [0.1, 0.9]
# Points supplémentaires
# (fraction, température, err_fraction, err_temperature, couleur)
points = [('k', [(0,49.91, 0.05, 4.0),(0.15, 41.28, 0.05, 3.0),(0.5,48.01,0.05,3.0),(0.75, 58, 0.05, 3.0), (1, 61.88, 0.05, 2.0)]),
('b', [ (0.5, 40.02, 0.05, 3.5),(0.15, 40.02, 0.05, 3.5),(0.24,42,0.05,3.0) ])]
#-----------------------------------------------------------------------
# Bibliothèques utilisées
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import bisect
import matplotlib.pylab as plb
#-----------------------------------------------------------------------
memParams = plb.rcParams
plb.rcParams.update(
{ 'legend.fontsize' : 'medium',
'axes.labelsize' : 'medium',
'axes.titlesize' : 'medium',
'xtick.labelsize' : 'medium',
'ytick.labelsize' : 'medium',
'font.size' : 12 })
# Détection utilisation hors Pyzo
if '__iep__' not in globals() :
matplotlib.interactive(False)
#-----------------------------------------------------------------------
R = 8.314
def _id(x) :
return x
def _w(x) :
return x*M2/(M1+x*(M2-M1))
w = _w if massique else _id
def T1(x) :
return (Tf1+273.15)/(1-np.log(1-x)*R*(Tf1+273.15)/DH1)-273.15
def T2(x) :
return (Tf2+273.15)/(1-np.log(x)*R*(Tf2+273.15)/DH2)-273.15
def DeltaT(x) :
return T1(x) - T2(x)
# Calcul du point E
xE = bisect(DeltaT, 0, 1)
TE = T1(xE)
# Calcul de l'échelle verticale
Tmin = (round(T1(xE)/5)-3)*5
Tmax = (round(max(Tf1,Tf2)/5)+1)*5
# Calcul des fractions molaires pour chaque courbe
X = np.linspace(0.0, 1.0)
X1 = np.linspace(0.0, xE)
X2 = np.linspace(xE, 1.0)
# Tracé
plt.figure(figsize=(10, 8))
plt.fill_between(X, Tmin*np.ones(X.shape), TE*np.ones(X.shape), color=col3, alpha=0.2)
plt.fill_between(w(X1), TE*np.ones(X1.shape), T1(X1), color=col1, alpha=0.2)
plt.fill_between(w(X2), TE*np.ones(X2.shape), T2(X2), color=col2, alpha=0.2)
plt.text(0.5, (TE+Tmin)/2.0, E1+"+"+E2, fontsize=16, ha="center", va="center", color='r')
plt.text(w(xE)/3.0, (3*TE+Tf1)/4.0, "L+"+E1, fontsize=16, ha="center", va="center", color='g')
plt.text((2+w(xE))/3.0, (3*TE+Tf2)/4.0, "L+"+E2, fontsize=16, ha="center", va="center", color='b')
plt.text(w(xE), (2*max(Tf1, Tf2)+min(Tf1, Tf2))/3.0, "L", fontsize=16, ha="center", va="center")
for x in xsol :
if x < xE :
plt.annotate("liquidus", (w(x), T1(x)),(w(x)+0.1, T1(x)+2), arrowprops=dict(facecolor='black', alpha=0.3, shrink=0.1), ha='left', va='bottom', alpha=0.5, fontsize=12)
else :
plt.annotate("liquidus", (w(x), T2(x)),(w(x)-0.1, T2(x)+2), arrowprops=dict(facecolor='black', alpha=0.3, shrink=0.1), ha='right', va='bottom', alpha=0.5, fontsize=12)
# Point E
plt.plot([w(xE)], [TE], "ko", markersize=8)
plt.text(w(xE)+0.008, TE-2.5, "E", fontsize=12)
# Points
for col, lst in points :
plt.errorbar([ e[0] for e in lst ],
[ e[1] for e in lst ],
[ e[3] for e in lst ],
[ e[2] for e in lst ],
fmt='s', color=col)
# Fignolage
plt.gca().tick_params(right=True, labelright=True)
plt.grid(alpha=0.3)
plt.xlim(0, 1)
plt.ylim(Tmin, Tmax)
plt.ylabel(r"Température $T$ ($°C$)")
plt.xlabel(r"Fraction massique $w$ en "+E2r if massique else r"Fraction molaire $x$ en "+E2r)
plt.title(titre, pad=30)
#-----------------------------------------------------------------------
plb.rcParams.update(memParams)
# Détection utilisation hors Pyzo
if '__iep__' not in globals() :
plt.show()