TP : Suivi de la réaction d’hydrolyse du chlorure de tertiobutyle.

par Vanessa Yequel.

Effectuer un suivi conductimétrique d’une réaction chimique pour tracer un graphique et calculer la vitesse volumique de disparition d’un réactif en utilisant le langage de programmation Python.

D’après une activité du livre de spécialité Hatier.
Prévoir un créneau supplémentaire à la séance de TP pour l’exploitation informatique.

Capacités expérimentales évaluées :

  • Mettre en œuvre une méthode physique pour suivre l’évolution d’une concentration et déterminer la vitesse volumique de formation d’un produit ou de disparition d’un réactif.
  • Savoir utiliser un dispositif d’acquisition et de traitement des données.
  • Analyser, Réaliser Valider

Capacités numérique évaluées :

  • Tracer l’évolution temporelle d’une concentration
  • Tracer l’évolution temporelle d’une vitesse volumique de disparition
  • Tester une relation donnée entre la vitesse volumique de disparition et la concentration d’un réactif.
Protocole Code Elève Corrigé

Introduction

Lorsqu’une transformation chimique lente met en jeu une espèce chimique ionique, la conductimétrie permet d’étudier sa cinétique.

 

Objectif : Effectuer un suivi conductimétrique d’une réaction chimique pour tracer un graphique et calculer la vitesse volumique de disparition d’un réactif.

Protocole : Suivi de la réaction d’hydrolyse du chlorure de tertiobutyle.

  • Verser 200 mL de solution aqueuse d’éthanol dans un bécher.
  • Plonger un thermomètre dans le bécher et attendre l’équilibre. Retire le thermomètre.
  • Placer le bécher dans un cristallisoir rempli d’eau à température ambiante.
  • Installer la sonde conductimétrique et le dispositif d’agitation.
  • Préparer latis pro :
    • Brancher le conductimètre sur la voie V1.
    • Sélectionner la voie V1 dans latis pro entre +10 et -10 V.
    • Choisir une acquisition temporelle de 90 points avec Te =1 min et donc une durée de 90 minutes
  • Attention, en même temps :
    • Verser 1,0 mL de chlorure de tertiobutyle à l’aide d’une pipette jaugée dans le bécher.
    • déclencher la mesure de la conductivité en tapant sur F10.
  • A la fin de l’enregistrement, enregistrer votre travail au format latis et exporter vos données au format csv en nommant votre fichier « cinetique »
     

Documents pour l’étude de la réaction

Document 1 : Chlorure de tertiobutyle

  • Le chlorure de tertiobutyle a pour formule semi-développée (CH3)3C-Cl, il est noté RCl.
  • Sa masse volumique vaut 850 g.L-1
  • L’équation de la réaction entre RCl et l’eau s’écrit :

    RCl(aq)+H2O(l)→ROH(aq)+H+ (aq)+Cl- (aq)

Document 2 : Conductivité ionique molaires à 25°C.
λ(H+ )=35,0 mS.m².mol-1 et λ(Cl- )=7,6 mS.m².mol-1

Document 3 : Définitions.

  • Temps de demi-réaction :
    Le temps de demi réaction, t1/2, est le temps au bout du quel l’avancement est arrivé à la moitié de sa valeur finale.
    Par extension, grâce au tableau d’avancement, on peut aussi dire que :
    • c’est le temps au bout du que la quantité de matière d’un produit est arrivé à la moitié de sa valeur finale.
    • pour une réaction totale, c’est le temps nécessaire pour consommer la moitié de la quantité de matière du réactif limitant initialement présent.
  • Vitesse volumique :
    On peut étudier la vitesse volumique d’apparition d’un produit, elle est définie par :
    $$ v_{produit}(t)= \dfrac{d[Produit]}{dt} $$

avec VProduit la vitesse volumique d’apparition du produit en mol.L-1.s-1 et [Produit] la concentration du produit en fonction du temps en mol/L.

Cette vitesse est positive, la dérivée correspond aux coefficients directeurs des tangentes à la courbe [Produit] =f(t)

Numériquement, elle s’obtient en calculant pour un point i :

$$ v_{i}= \dfrac{d[Produit]_{i+1}-d[Produit]_{i}}{\Delta t} $$

On peut étudier la vitesse volumique de disparition d’un réactif, elle est définie par :
$$ v_{Réactif}(t)= -\dfrac{d[Réactif]}{dt} $$

avec VRéactif la vitesse volumique de disparition du réactif en mol.L-1.s-1 et [Réactif] la concentration du réactif en fonction du temps en mol/L.

  • Loi de vitesse d’ordre 1 :
    Une réaction chimique suit une loi de vitesse d’ordre 1 par rapport à un de ses réactifs si la vitesse volumique de disparition du réactif est proportionnelle à sa concentration.
    $$ v_{Réactif}(t)= k.[Réactif](t) $$
    k est appelé constante de vitesse et s’exprime en s-1.
     

Travail préliminaire :

  • Donner le nom en nomenclature officielle du chlorure de tertiobutyle.
  • Exprimer la conductivité σ de la solution en fonction des concentrations et des conductivités ioniques molaires.
  • Déterminer l’expression de la quantité de matière de tertiobutyle à l’état initial, puis l’expression de sa concentration initiale, C0.
  • Ecrire le tableau d’avancement.
  • En déduire que pour chaque instant :
    $$ [ROH]_{t}=[H^+ ]_{t}=[Cl^-]_{t}=\frac{σ(t)}{λ(H^+)+λ(Cl^-)} \quad \text{et}\quad [RCl]_{t}=C_{0}-[ROH]_{t}$$
     

Travail numérique :

Enregistrer au même endroit que le fichier cinetique.csv le fichier traitement-cinetique.py

  1. Que fait l’ordinateur aux lignes 46 et 47.
  2. Entre les lignes 50 et 55 écrire les lignes permettant de tracer la conductivité en fonction du temps. Copier le graphique dans un document texte.

    Appeler la professeure pour vérification

  3. Mettre en commentaire les lignes 51 à 55 en ajoutant """ sur la ligne 50 et en enlevant les """ de la ligne 80
  4. Entre les lignes 62 et 70 rajouter les lignes permettant le calcul de chacune des concentrations. On utilisera les formules établies lors du travail préliminaire. Lancer le programme vous voyez apparaitre le graphique de la concentration de RCl en fonction du temps.
  5. A la ligne 73 ajouter le code permettant de tracer sur le même graphique l’évolution de la concentration en H+ en fonction du temps. Copier le graphique dans un document texte.

    Appeler la professeure pour vérification

  6. Déterminer le temps de demi-réaction sur le graphique.
  7. D’après le graphique comment évoluent les vitesses volumiques de disparition de réactifs et d’apparition de réactifs ?

    Appeler la professeure pour vérification

  8. Mettre en commentaire les lignes 69 à 77 en ajoutant """ sur la ligne 70. et en enlevant les """ de la ligne 96
  9. Compléter la ligne 85 pour calculer la vitesse a chaque point i. Lancer le programme et agrandir la fenêtre graphique et la copier dans un document texte.

    Appeler la professeure pour vérification

  10. Votre observation est elle en adéquation avec la question 7.
  11. Mettre en commentaire les lignes 88 à 93 en ajoutant """ sur la ligne 87 et en enlevant les """ de la ligne 120
  12. Lancer le programme et agrandir la fenêtre graphique.
  13. Quel type de modèle pourrait-on utiliser pour modéliser cette courbe ?
  14. Décommenter la ligne 107 en enlevant le # en début de ligne
  15. L’abscisse et l’ordonnées du modèle sont respectivement stockées dans les variables modele_x et modele_y.
    Ajouter les lignes de codes permettant d’afficher le modèle sur le graphique et le copier dans un document texte. Noter l’équation de la courbe ainsi que le coefficient de corrélation.

    Appeler la professeure pour vérification

  16. La réaction étudiée est elle une réaction d’ordre 1 ?
Compétences travaillées :☑ / ☒
ANA2 Comprendre du code q1
Ecrire un tableau d’avancement
Calculer une concentration en fonction de sigma
Traduire une formule en code
REA 2 Réaliser un protocole
Exporter les données au format csv
Ecrire les lignes de codes permettant d’afficher une courbe
VAL 2 Interpréter les données de concentration en fonction du temps
Choisir un modèle
Conclusion
Bilan ANA : REA : VAL : Note finale :
Code à compléter
  1. # Créé par Vanessa, le 15/12/2020 en Python 3.7
  2. import matplotlib.pylab as plt
  3. import csv
  4. from scipy.stats import linregress
  5. import numpy as np
  6. #####################liste des variables ######################################################
  7.  
  8. C_RCl=[]#Concentration en RCl
  9. C_H=[]#concentration en H+
  10. Vitesse=[] # liste des vitesses a partir de sigma lissée
  11.  
  12.  
  13. def ouvertureEtLissage(NB_lissage):
  14. ####################ouverture du fichier ################################################
  15.     table=[]#liste des valeurs importées
  16.     temps_lisse=[]#liste des valeurs du temps pour sigma lissée
  17.     tension_lisse=[]#liste des valeurs de tension lissées
  18.     with open('cinetique.csv', newline='') as csvfile:
  19.         spamreader = csv.reader(csvfile, delimiter=';', quotechar='|')
  20.         for row in spamreader:
  21.             table.append(row)
  22.  
  23.     ##########récupération des valeurs du temps ###########################################
  24.     temps= [eval(table[v][0].replace(',','.')) for v in range(1,len(table))]
  25.  
  26.     ##########récupération des valeurs de la conductivité ###########################################
  27.     tension= [eval(table[v][1].replace(',','.')) for v in range(1,len(table))]
  28.  
  29.     ######################lissage des valeurs de conductivité########################################
  30.     tension_lisse=[]#variable contenant les valeurs lissées de sigma
  31.     Npt=len(temps)-NB_lissage+1
  32.     for i in range (len(tension)-NB_lissage+1) :
  33.         moyenne=0
  34.         for y in range(NB_lissage):
  35.             moyenne+=tension[i+y]/NB_lissage
  36.         tension_lisse.append(moyenne)
  37.     temps_lisse=temps[0:Npt]
  38.     return temps_lisse,tension_lisse
  39.  
  40. temps,tension=ouvertureEtLissage(3) #le chifre entre parenthèse correspond aux nombres de valeurs sur les quelles on fera le lissage
  41. #temps est une liste qui contients tous les temps
  42. #tension est une liste qui contient toutes les tensions
  43. sigma=[]#contiendra toutes les valeurs de conductivité en mS.
  44. #La conductivité est linéaire, -2.5 V correspondent à 0 mS et 2.5V à 2 mS
  45. Npt=len(tension) #nombre de points après le lissage
  46.  
  47. for i in range (Npt):
  48.     sigma.append((tension[i]+2.5)*2/5)
  49.  
  50. ##########################graphique de la conductivité en fonction du temps##################################
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. """
  59. ##########################Calcul des concentrations ###########################################
  60. C_RCl=[0 for i in range(Npt)] #liste contenant les concentrations en RCl
  61. C_H=[0 for i in range(Npt)] #liste contenant les concentrations en H+
  62. c0= #Calcul de la concentration initiale
  63.  
  64. for i in range(Npt):
  65.    C_H[i]=
  66.    C_RCl[i]=
  67.  
  68. #############################Affichage des graphiques des concentrations#######################
  69.  
  70.  
  71. plt.plot(temps,C_RCl,label='concentration de RCl')
  72.  
  73. plt.xlabel('Temps en s')
  74. plt.ylabel('Concentration en mol/L')
  75. plt.grid()
  76. plt.legend(loc='upper right')
  77. plt.show()
  78.  
  79.  
  80. """
  81. """
  82. ####################Calcul de la vitesse #######################################################
  83. Vitesse=[0 for i in range(Npt-1)]
  84. for i in range(0,Npt-1):
  85.    Vitesse[i]=
  86.  
  87.  
  88. plt.plot(temps[0:Npt-1],Vitesse)
  89. plt.xlabel('Temps en s')
  90. plt.ylabel('Vitesse en mol.L^-1.s^-1')
  91. plt.grid()
  92. plt.show()
  93.  
  94.  
  95.  
  96. """
  97. """
  98. plt.plot(C_RCl[0:Npt-1],Vitesse,color="red")
  99. plt.xlabel('Concentration de RCl en mol/L')
  100. plt.ylabel('Vitesse en mol.L^-1.s^-1')
  101. plt.grid()
  102.  
  103.  
  104. #####################################
  105. #régression linéaire
  106. (a,b,rho,_,_)=linregress(C_RCl[0:Npt-1],Vitesse)
  107. #print('la courbe a pour équation : y= ',a,'x + ',b,'avec un R=',rho)
  108. n=100
  109. modele_x=np.linspace(min(C_RCl),max(C_RCl),n)#liste des abscisses du modèle
  110. modele_y=[] #liste des ordonnées du modèle
  111. for i in range(len(modele_x)):
  112.    modele_y.append(a*modele_x[i]+b)
  113. ###########################################################################
  114. #tracé des courbes
  115.  
  116.  
  117.  
  118.  
  119. plt.show()
  120. """

Télécharger

Corrigé
  1. # Créé par Vanessa, le 15/12/2020 en Python 3.7
  2. import matplotlib.pylab as plt
  3. import csv
  4. from scipy.stats import linregress
  5. import numpy as np
  6. #####################liste des variables ######################################################
  7.  
  8. C_RCl=[]#Concentration en RCl
  9. C_H=[]#concentration en H+
  10. Vitesse=[] # liste des vitesses a partir de sigma lissée
  11.  
  12.  
  13. def ouvertureEtLissage(NB_lissage):
  14. ####################ouverture du fichier ################################################
  15.     table=[]#liste des valeurs importées
  16.     temps_lisse=[]#liste des valeurs du temps pour sigma lissée
  17.     tension_lisse=[]#liste des valeurs de tension lissées
  18.     with open('cinetique.csv', newline='') as csvfile:
  19.         spamreader = csv.reader(csvfile, delimiter=';', quotechar='|')
  20.         for row in spamreader:
  21.             table.append(row)
  22.  
  23.     ##########récupération des valeurs du temps ###########################################
  24.     temps= [eval(table[v][0].replace(',','.')) for v in range(1,len(table))]
  25.  
  26.     ##########récupération des valeurs de la conductivité ###########################################
  27.     tension= [eval(table[v][1].replace(',','.')) for v in range(1,len(table))]
  28.  
  29.     ######################lissage des valeurs de conductivité########################################
  30.     tension_lisse=[]#variable contenant les valeurs lissées de sigma
  31.     Npt=len(temps)-NB_lissage+1
  32.     for i in range (len(tension)-NB_lissage+1) :
  33.         moyenne=0
  34.         for y in range(NB_lissage):
  35.             moyenne+=tension[i+y]/NB_lissage
  36.         tension_lisse.append(moyenne)
  37.     temps_lisse=temps[0:Npt]
  38.     return temps_lisse,tension_lisse
  39.  
  40. temps,tension=ouvertureEtLissage(3) #le chifre entre parenthèse correspond aux nombres de valeurs sur les quelles on fera le lissage
  41. #temps est une liste qui contients tous les temps
  42. #tension est une liste qui contient toutes les tensions
  43. sigma=[]#contiendra toutes les valeurs de conductivité en mS.
  44. #La conductivité est linéaire, -2.5 V correspondent à 0 mS et 2.5V à 2 mS
  45. Npt=len(tension) #nombre de points après le lissage
  46.  
  47. for i in range (Npt):
  48.     sigma.append((tension[i]+2.5)*2/5)
  49.  
  50. ##########################graphique de la conductivité en fonction du temps##################################
  51. """
  52. plt.plot(temps,sigma)
  53. plt.xlabel('Temps en s')
  54. plt.ylabel('Sigma en mS')
  55. plt.grid()
  56. plt.show()
  57.  
  58.  
  59. """
  60. ##########################Calcul des concentrations ###########################################
  61. C_RCl=[0 for i in range(Npt)] #liste contenant les concentrations en RCl
  62. C_H=[0 for i in range(Npt)] #liste contenant les concentrations en H+
  63.  
  64. for i in range(Npt):
  65.     C_H[i]=sigma[i]/(35+7.6)
  66.     C_RCl[i]=850*1/(92.57*201) -C_H[i]
  67.  
  68.  
  69. #############################Affichage des graphiques des concentrations#######################
  70. """
  71.  
  72. plt.plot(temps,C_RCl,label='concentration de RCl')
  73. plt.plot(temps,C_H,label='concentration de H+')
  74. plt.xlabel('Temps en s')
  75. plt.ylabel('Concentration en mol/L')
  76. plt.grid()
  77. plt.legend(loc='upper right')
  78. plt.show()
  79.  
  80.  
  81. """
  82. ####################Calcul de la vitesse #######################################################
  83. Vitesse=[0 for i in range(Npt-1)]
  84. for i in range(0,Npt-1):
  85.     Vitesse[i]=-(C_RCl[i+1]-C_RCl[i])/(temps[i+1]-temps[i])
  86.  
  87. """
  88. plt.plot(temps[0:Npt-1],Vitesse)
  89. plt.xlabel('Temps en s')
  90. plt.ylabel('Vitesse en mol.L^-1.s^-1')
  91. plt.grid()
  92. plt.show()
  93.  
  94.  
  95.  
  96. """
  97. plt.plot(C_RCl[0:Npt-1],Vitesse,color="red")
  98. plt.xlabel('Concentration de RCl en mol/L')
  99. plt.ylabel('Vitesse en mol.L^-1.s^-1')
  100. plt.grid()
  101.  
  102.  
  103.  
  104. #####################################
  105. #régression linéaire
  106. (a,b,rho,_,_)=linregress(C_RCl[0:Npt-1],Vitesse)
  107. print('la courbe a pour équation : y= ',a,'x + ',b,'avec un R=',rho)
  108. n=100
  109. modele_x=np.linspace(min(C_RCl),max(C_RCl),n)#liste des abscisses du modèle
  110. modele_y=[] #liste des ordonnées du modèle
  111. for i in range(len(modele_x)):
  112.     modele_y.append(a*modele_x[i]+b)
  113. ###########################################################################
  114. #tracé des courbes
  115.  
  116. plt.plot(modele_x,modele_y,color="blue")
  117.  
  118.  
  119. plt.show()

Télécharger

Documents joints