Pourquoi la quantité de gaz produite cesse-t-elle d'augmenter quand on ajoute toujours plus de bicarbonate ? Peut-on retrouver les proportions de l'équation à partir des mesures ?
L'acide éthanoïque du vinaigre réagit avec l'hydrogénocarbonate de sodium (bicarbonate) :
Le dioxyde de carbone s'échappe : la perte de masse du bécher est égale à la masse de \(\text{CO}_2\) dégagé.
Objectifs
- Mesurer la masse de gaz dégagé lors d'une transformation.
- Convertir des masses en quantités de matière.
- Identifier le réactif limitant et repérer les proportions stœchiométriques.
- Écrire une fonction qui prévoit l'état final d'une réaction.
Compétences travaillées
- Réaliser : peser, mélanger en sécurité.
- Analyser : interpréter une courbe à deux régimes.
- Valider : comparer à la prévision de l'équation.
- Communiquer : présenter un graphique et une conclusion.
Le code s'exécute réellement dans ton navigateur. Au premier clic sur ▶ Exécuter, Python se télécharge (≈ 7 Mo, une seule fois, connexion Internet nécessaire). Le bouton Télécharger .py donne un fichier utilisable dans EduPython, Thonny, Basthon ou Capytale.
Raccourcis : Ctrl + Entrée exécute, Tab décale la ligne de 4 espaces.
Débutant en Python : fais les cinq activités dans l'ordre, en t'aidant des indices. À l'aise avec les variables et les boucles (en général à partir du deuxième trimestre) : l'activité 1 est facultative, commence directement à l'activité 2 et vise l'activité 5 sans indice.
Blouse et lunettes. Le vinaigre est un acide faible : rincer à l'eau en cas de projection. L'effervescence peut déborder : utiliser un grand bécher.
Matériel
- une balance au 0,01 g ;
- un grand bécher, une éprouvette de 25 mL ;
- du vinaigre blanc à 8 % et de l'hydrogénocarbonate de sodium en poudre ;
- une coupelle de pesée et une spatule.
Protocole
| \(m_{\text{bic}}\) (g) | 0,5 | 1,0 | 1,5 | 2,0 | 2,5 | 3,0 | 3,5 |
|---|---|---|---|---|---|---|---|
| \(m_{\text{CO}_2}\) (g) |
Masse d'une mole (chapitre 8) : \(\text{NaHCO}_3\) 84,0 g ; \(\text{CO}_2\) 44,0 g ; \(\text{CH}_3\text{COOH}\) 60,0 g. Les 20,0 mL de vinaigre contiennent 1,60 g d'acide éthanoïque.
Jeu de données pédagogique \(m_{\text{CO}_2}\) = 0,25 ; 0,50 ; 0,74 ; 0,99 ; 1,11 ; 1,12 ; 1,10 g. Valeurs construites à partir de l'équation, avec une perte d'environ 5 % (une petite partie du CO₂ reste dissoute dans le liquide) et l'incertitude de la balance.
La masse \(m_1\) inclut la coupelle : pour que la différence \(m_1 - m_2\) ne représente que le gaz parti, la coupelle doit aussi être pesée dans \(m_2\). Chaque essai doit partir du même état initial pour l'acide (20,0 mL de vinaigre neuf, soit la même quantité d'acide) : seule la quantité de bicarbonate change. Sinon, on ne saurait plus quelle quantité d'acide il reste.
Pour un essai, il convertit les masses en quantités de matière avec \(n = \dfrac{m}{M}\), où \(M\) est la masse d'une mole. Il calcule aussi la quantité d'acide dans le vinaigre. Pourquoi ? L'équation compare des nombres d'entités (des moles), pas des masses. Comment lire le résultat ? Des quantités en mol, de l'ordre du centième.
À faire : complète les deux lignes marquées ..., exécute, puis compare \(n_{\text{bic}}\), \(n_{\text{CO}_2}\) et \(n_{\text{acide}}\).
n_acide avec les bonnes variables.n_bic = m_bic / M_bic et n_CO2 = m_CO2 / M_CO2.M_bic = 84.0
M_CO2 = 44.0
M_acide = 60.0
m_bic = 1.0
m_CO2 = 0.50
m_acide = 1.60
n_bic = m_bic / M_bic
n_CO2 = m_CO2 / M_CO2
n_acide = m_acide / M_acide
print("n_bic =", round(n_bic, 4), "mol")
print("n_CO2 =", round(n_CO2, 4), "mol")
print("n_acide =", round(n_acide, 4), "mol")
Résultats attendus. \(n_{\text{bic}} = 0{,}0119\ \text{mol}\), \(n_{\text{CO}_2} = 0{,}0114\ \text{mol}\), \(n_{\text{acide}} = 0{,}0267\ \text{mol}\).
Interprétation. \(n_{\text{bic}} < n_{\text{acide}}\) : avec des coefficients égaux à 1, le bicarbonate est limitant. L'équation prévoit alors \(n_{\text{CO}_2} = n_{\text{bic}}\) : on trouve 0,0114 au lieu de 0,0119, soit 5 % de moins (CO₂ resté dissous).
Erreurs fréquentes. Multiplier par \(M\) au lieu de diviser (valeurs de l'ordre de 80 mol : absurde pour 1 g).
Pour les 7 essais, il calcule \(n_{\text{bic}}\) et \(n_{\text{CO}_2}\), compare \(n_{\text{bic}}\) à \(n_{\text{acide}}\) (coefficients égaux à 1) pour désigner le réactif limitant, et affiche la quantité de CO₂ prévue par l'équation : celle du réactif limitant. Comment lire le résultat ? Le réactif limitant change au cours de la série.
À faire : complète la condition et la quantité prévue, exécute, puis réponds à Q2.
n_bic est inférieur à n_acide. Sinon, c'est l'acide qui fixe la quantité de CO₂.if n_bic < n_acide: et n_prevu = n_acide.m_bic = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5]
m_CO2 = [0.25, 0.50, 0.74, 0.99, 1.11, 1.12, 1.10]
n_acide = 1.60 / 60.0
for i in range(len(m_bic)):
n_bic = m_bic[i] / 84.0
n_CO2 = m_CO2[i] / 44.0
if n_bic < n_acide:
limitant = "bicarbonate"
n_prevu = n_bic
else:
limitant = "acide"
n_prevu = n_acide
print(m_bic[i], "g | limitant :", limitant, "| CO2 prévu :", round(n_prevu, 4), "mol | mesuré :", round(n_CO2, 4), "mol")
Résultats attendus. Bicarbonate limitant pour 0,5 à 2,0 g ; acide limitant pour 2,5 à 3,5 g. CO₂ prévu : 0,006 ; 0,0119 ; 0,0179 ; 0,0238 ; puis 0,0267 mol. Mesures : environ 5 % de moins.
Interprétation. Tant que le bicarbonate est limitant, chaque ajout produit plus de CO₂. Dès que l'acide devient limitant, ajouter du bicarbonate ne sert plus à rien : il reste au fond du bécher, et la quantité de CO₂ plafonne.
Erreurs fréquentes. Comparer les masses (1,60 g d'acide et 2,0 g de bicarbonate) au lieu des quantités de matière : on se tromperait de réactif limitant pour l'essai à 2,0 g.
Proportions stœchiométriques quand \(n_{\text{bic}} = n_{\text{acide}} = 0{,}0267\ \text{mol}\), soit \(m_{\text{bic}} = 0{,}0267 \times 84{,}0 = 2{,}24\ \text{g}\) : entre les essais à 2,0 g et 2,5 g. Le CO₂ mesuré est inférieur d'environ 5 % : une petite partie du gaz reste dissoute dans le liquide (l'eau gazeuse en est la preuve), et la perte de masse sous-estime donc le CO₂ formé. L'écart est systématique (toujours dans le même sens) : ce n'est pas une erreur de lecture.
Il trace \(n_{\text{CO}_2}\) mesuré en fonction de \(n_{\text{bic}}\), et la courbe du modèle : \(n_{\text{CO}_2} = n_{\text{bic}}\) tant que le bicarbonate est limitant, puis \(n_{\text{CO}_2} = n_{\text{acide}}\). En Python, le plus petit de deux nombres s'obtient avec min(a, b). Comment le lire ? Une droite qui monte, puis un plateau : la cassure correspond aux proportions stœchiométriques.
À faire : complète la ligne du modèle, exécute, puis lis sur le graphique la position de la cassure.
min(a, b) renvoie le plus petit des deux nombres.y_mod.append(min(x, n_acide)).import matplotlib.pyplot as plt
m_bic = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5]
m_CO2 = [0.25, 0.50, 0.74, 0.99, 1.11, 1.12, 1.10]
n_acide = 1.60 / 60.0
n_bic = []
n_CO2 = []
for i in range(len(m_bic)):
n_bic.append(m_bic[i] / 84.0)
n_CO2.append(m_CO2[i] / 44.0)
x_mod = []
y_mod = []
for k in range(0, 46):
x = k * 0.001
x_mod.append(x)
y_mod.append(min(x, n_acide))
plt.plot(n_bic, n_CO2, 'o', color='red', label='mesures')
plt.plot(x_mod, y_mod, '-', color='navy', label='modèle (équation)')
plt.title("CO2 dégagé en fonction du bicarbonate ajouté")
plt.xlabel("n bicarbonate (mol)")
plt.ylabel("n CO2 (mol)")
plt.legend()
plt.grid()
plt.show()
Résultat attendu. Le modèle est une droite de pente 1 jusqu'à 0,0267 mol, puis un plateau. Les points de mesure suivent la même forme, un peu en dessous (environ 5 %).
Interprétation. La pente 1 de la première partie traduit les coefficients 1 : 1 de l'équation (une mole de bicarbonate donne une mole de CO₂). La cassure, vers 0,027 mol de bicarbonate, marque les proportions stœchiométriques ; sa hauteur donne la quantité d'acide du vinaigre. On pourrait ainsi doser l'acide d'un vinaigre inconnu.
Erreurs fréquentes. Utiliser max au lieu de min (le modèle monterait indéfiniment au lieu de plafonner).
Pour une réaction \(a\,\text{A} + b\,\text{B} \rightarrow \dots\), la fonction limitant(nA, a, nB, b) compare \(n_\text{A}/a\) et \(n_\text{B}/b\), puis renvoie le nom du réactif limitant et la valeur du plus petit quotient \(x\). L'état final s'en déduit : il reste \(n_\text{A} - a\,x\) de A et \(n_\text{B} - b\,x\) de B. Pourquoi ? La même fonction résout tous les exercices de réactif limitant. Comment lire le résultat ? Une ligne par réaction, avec les quantités restantes.
À faire : complète la fonction, exécute, et vérifie avec l'exemple du cours (méthane : O₂ limitant, 0,05 mol de CH₄ restant).
qB < qA ; il reste de A : nA - a * x.elif qB < qA: et reste_A = nA - a * x.def limitant(nA, a, nB, b):
qA = nA / a
qB = nB / b
if qA < qB:
return "A", qA
elif qB < qA:
return "B", qB
else:
return "aucun (proportions stœchiométriques)", qA
reactions = [
["CH4 + 2 O2", 0.20, 1, 0.30, 2],
["C3H8 + 5 O2", 0.50, 1, 2.0, 5],
["Cu2+ + 2 HO-", 2.0e-3, 1, 3.0e-3, 2],
["2 H2 + O2", 4.0, 2, 2.0, 1],
]
for r in reactions:
nom, nA, a, nB, b = r
lim, x = limitant(nA, a, nB, b)
reste_A = nA - a * x
reste_B = nB - b * x
print(nom, "| limitant :", lim, "| reste A :", round(reste_A, 5), "mol | reste B :", round(reste_B, 5), "mol")
Résultats attendus. Méthane : B (O₂) limitant, reste 0,05 mol de CH₄. Propane : B (O₂), reste 0,1 mol de C₃H₈. Cuivre : B (HO⁻), reste 0,0005 mol de Cu²⁺. Dihydrogène : aucun, proportions stœchiométriques, rien ne reste.
Interprétation. On retrouve les résultats du cours et des exercices 6 et 7. Le réactif limitant a toujours un reste nul ; le quotient \(x\) mesure « combien de fois » la réaction a eu lieu, en moles.
Erreurs fréquentes. Écrire reste_A = nA - x en oubliant le coefficient : faux dès que \(a \neq 1\) (pour 2 H₂ + O₂, il resterait 2 mol de H₂).
Rayan veut calculer la masse de CO₂ attendue quand on verse 3,0 g de bicarbonate dans 20,0 mL de vinaigre (1,60 g d'acide). Son programme contient quatre erreurs : deux l'empêchent de fonctionner, deux donnent un résultat faux sans message. D'après l'activité 3, le résultat doit être proche du plateau, environ 1,17 g.
if ? La variable M_CO2 existe-t-elle ? Comment passe-t-on d'une masse à une quantité de matière ? Quel réactif fixe la quantité de CO₂ : celui en plus grande ou en plus petite quantité ?: après la condition ; définir M_CO2 = 44.0 ; n_bic = 3.0 / 84.0 ; tester n_bic < n_acide (le CO₂ formé est celui du réactif limitant).M_CO2 = 44.0 # erreur 2 : variable manquante
n_bic = 3.0 / 84.0 # erreur 3 : n = m / M
n_acide = 1.60 / 60.0
if n_bic < n_acide: # erreurs 1 (deux-points) et 4 (sens de la comparaison)
n_CO2 = n_bic
else:
n_CO2 = n_acide
m_CO2 = n_CO2 * M_CO2
print("masse de CO2 attendue :", round(m_CO2, 2), "g")
Erreur 1 (bloquante). Il manque les deux-points à la fin de la ligne if : erreur de syntaxe.
Erreur 2 (bloquante). M_CO2 n'a jamais été défini : NameError.
Erreur 3 (silencieuse). 3.0 * 84.0 donne 252 « mol » : il faut diviser la masse par la masse d'une mole.
Erreur 4 (silencieuse). La condition choisit la plus grande quantité : c'est le réactif en excès, pas le limitant. Avec les erreurs 1 à 3 corrigées, on obtiendrait 1,57 g, plus que le plateau mesuré.
Résultat après correction. 1,17 g, la valeur du plateau prévue par l'équation (acide limitant).
11 kg de gaz à partir de quelques grammes de réactifs viole la conservation de la masse : impossible. Le résultat de 1,57 g est plausible en ordre de grandeur, mais il dépasse le plateau mesuré (environ 1,11 g) et prévu (1,17 g) : le programme suppose que tout le bicarbonate réagit alors que l'acide manque. Comparer à une mesure ou à un graphique déjà obtenu permet de repérer l'erreur.
Pour de petites masses de bicarbonate, celui-ci est le réactif limitant : chaque ajout produit davantage de CO₂, en quantité égale à celle du bicarbonate (pente 1, conforme aux coefficients 1 : 1 de l'équation). Au-delà d'environ 2,24 g (0,0267 mol), c'est l'acide du vinaigre qui devient limitant : il est entièrement consommé, la quantité de CO₂ plafonne et le bicarbonate en excès reste au fond. La cassure de la courbe correspond aux proportions stœchiométriques ; sa hauteur donne la quantité d'acide contenue dans le vinaigre. Les mesures sont environ 5 % sous le modèle, car un peu de CO₂ reste dissous.
Grille d'auto-évaluation
A = je sais faire seul · B = avec un peu d'aide · C = partiellement · D = à retravailler.
| Compétence | A | B | C | D |
|---|---|---|---|---|
| Mesurer une masse de gaz dégagé par différence de pesées | ||||
| Convertir une masse en quantité de matière | ||||
| Identifier le réactif limitant | ||||
| Interpréter une courbe à deux régimes | ||||
| Écrire une fonction qui renvoie plusieurs valeurs | ||||
| Repérer une erreur avec la conservation de la masse |
Fiche professeur
Organisation
Durée totale estimée : 115 min. En séance de 1 h 30 : partie expérimentale et activités 1 à 3 ; activités 4 et 5 et conclusion en fin de séance, à la maison ou en séance suivante. Le parcours « à l'aise » (activité 1 facultative) fait gagner environ 10 min.
Préparation
Vinaigre blanc à 8 %, hydrogénocarbonate de sodium, balances au 0,01 g. Prévoir plusieurs masses de poudre par binôme pour couvrir les deux régimes (vinaigre limitant ou poudre limitante).
Sécurité
Mousse abondante : grand bécher, travailler sur un plateau.
Points de vigilance
La masse de CO₂ se déduit de la perte de masse : peser le système complet avant et après. Attendre la fin du dégagement avant la seconde pesée.
Différenciation
Aide : Donner l'équation ajustée et le tableau de mesures pré-rempli.
Approfondissement : Déterminer graphiquement la masse de poudre à partir de laquelle le vinaigre devient limitant.
Évaluation (sur 20)
Réactif limitant (activités 3 et 4, 8 pts) ; Q5 (6 pts) ; activité 5 (4 pts) ; mesures (2 pts).
Les corrections détaillées des activités Python et des questions sont dans les encadrés de chaque partie.
Pour consolider : exercices 6, 7 et 10, puis le quiz du cours.
Exercices corrigés Retour au cours