Ce document comporte le tracé d'un diagramme du taux de précipitation d'un cation en fonction de la concentration de l'anion. L'exemple retenu est celui de la précipitation des ions chlorure $\mathsf{Cl^-}$ et iodure $\mathsf{I^-}$ par introduction d'ions argent $\mathsf{Ag^+}$.
Lorsque la solution est saturée en un solide ionique, l'équilibre chimique mettant en jeu le solide ionique et ses ions constitutifs en solution est établi.
Pour savoir si le solide existe, on peut d'abord vérifier que les concentrations du cation et de l'anion vérifient la condition de précipitation. Par exemple, le solide $\mathsf{AgCl}$ se forme si $\mathsf{\frac{[Ag^{+}]\cdot[Cl^-]}{(C°)^2}>K_s}$.
Si le solide existe, alors la solution est saturée et la relation de Guldberg-Waage peut être écrite : \begin{equation}\mathsf{ AgCl(s)=Ag^{+}(aq)+Cl^{-}(aq) \Rightarrow K_s=Qr_{eq}=\frac{[Ag^{+}]_{eq} \cdot [Cl^-]_{eq}}{(C°)^2} }\end{equation}
En choisissant une valeur de $\mathsf{pAg}$, il est possible de :
La commande linspace
de la bibliothèque numpy
permet de générer une liste d'abscisses, ici $\mathsf{pAg}$.
La bibliothèque matplolib
est utilisée pour tracer des graphiques.
L'utilisateur peut modifier les valeurs des concentrations initiales des anions dans la solution traitée. Le script peut également adapté pour traiter le cas d'autres précipités à condition d'adapter les expressions des équations à résoudre en fonction de la stoechiométrie des sels ioniques et de modifier les valeurs des produits de solubilité.
#%%# PRECIPITATION COMPETITIVE DES IONS CHLORURE ET IODURE
import numpy as np
import matplotlib.pyplot as plt
#Saisie des valeurs des produits de solubilité
pKs1=9.8 #chlorure d'argent
pKs2=16. #iodure d'argent
#Concentrations des anions dans le mélange initial
CCl=0.01 #ions chlorure, en mol/L
CI =0.01 #ions iodure, en mol/L
#Création d'une liste de valeurs d'abscisses, ici pH
pAg=np.linspace(0,20,100)
#Boucles de calcul des concentrations d'ions non précipités selon la valeur du pH
fCl=[]
fI=[]
for x in pAg :
if CCl*10**(-x)>10**(-pKs1) :
fCl.append(10**(-pKs1+x)/CCl)
else :
fCl.append(1)
for x in pAg :
if CI*10**(-x)>10**(-pKs2) :
fI.append(10**(-pKs2+x)/CI)
else :
fI.append(1)
#Tracé des courbes
plt.figure(1)
plt.plot(pAg,fCl,'b--', label='chlorure')
plt.plot(pAg,fI,'g--', label='iodure')
plt.xlabel('pAg')
plt.ylabel('Proportions')
plt.title('Proportion des ions chlorure et iodure non précipités')
plt.legend()
plt.grid()
plt.show()
La quantité d'ions argent nécessaire pour entraîner la formation de l'iodure d'argent est inférieure à celle nécessaire pour former le chlorure d'argent.