abs(T[i+1] - T[i]) Q = m * L
Seconde · Chapitre 10 · TP expérimental et numérique

Courbe de refroidissement et palier

Tu vas faire fondre puis refroidir un échantillon d'acide stéarique en relevant sa température, puis utiliser Python pour repérer automatiquement le palier de solidification, mesurer sa température et identifier l'espèce.

≈ 1 h 55 en toutMesures + 5 activités PythonSeul ou en binômePython s'exécute dans la page
← Tous les cours ← Retour au cours
Partie 1
Problématique

Comment mesurer précisément la température de changement d'état d'une espèce, et l'utiliser pour l'identifier ?

Objectifs

  • Relever une courbe de refroidissement \(T = f(t)\).
  • Repérer un palier et mesurer une température de changement d'état.
  • Identifier une espèce chimique à l'aide d'une table de données.
  • Automatiser la recherche du palier avec Python.

Compétences travaillées

  • Réaliser : suivre un protocole en sécurité, relever des mesures.
  • Analyser : exploiter une courbe expérimentale.
  • Valider : confronter à une valeur tabulée.
  • Communiquer : présenter une courbe légendée.
L'éditeur Python de cette page

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.

Choisis ton parcours

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.

1
Expérience : refroidissement de l'acide stéarique
≈ 30 min · en salle de TP
Sécurité

Blouse et lunettes obligatoires. Le bain-marie et le tube sont chauds : manipuler le tube avec une pince en bois. L'acide stéarique n'est pas dangereux mais ne doit pas être ingéré.

Matériel

  • un tube à essai contenant environ 5 g d'acide stéarique solide ;
  • un bécher d'eau chaude à environ 85 °C (bain-marie) ;
  • une sonde thermométrique (ou un thermomètre) et un chronomètre ;
  • un support et une pince.

Protocole

Plonger le tube dans le bain-marie jusqu'à fusion complète, la sonde au centre de l'acide.
Sortir le tube, le fixer au support à l'air libre et déclencher le chronomètre.
Relever la température toutes les 30 s pendant 16 min, en notant l'aspect (liquide, apparition du solide, solide).
Remuer doucement avec la sonde tant que c'est possible, pour homogénéiser la température.
Si tu ne peux pas faire l'expérience

Jeu de données pédagogique Les programmes contiennent une série de 33 mesures (de 0 à 960 s), construite à partir d'un modèle de refroidissement avec un palier à la température de fusion tabulée de l'acide stéarique, et une petite incertitude de lecture (± 0,1 °C). Remplace-la par tes mesures si tu as fait l'expérience.

Q1
Pourquoi place-t-on la sonde au centre de l'acide, sans toucher la paroi ? Pendant le palier, quel est l'aspect du contenu du tube ?

La paroi du tube est en contact avec l'air : elle refroidit plus vite que le cœur de l'échantillon. Une sonde contre la paroi mesurerait une température trop basse, non représentative. Pendant le palier, le tube contient un mélange de liquide et de solide : le solide apparaît d'abord sur la paroi puis gagne le centre ; le palier se termine quand tout est solide.

2
Activité 1 — L'énergie cédée pendant le palier
≈ 10 min · Niveau 1 : variables, conversions, print()
Ce que fait le programme

Il calcule l'énergie \(Q = m \times L\) cédée par l'échantillon d'acide stéarique pendant sa solidification, puis la durée du palier si l'acide cède en moyenne 3,0 J chaque seconde à l'air. Pourquoi ? Le palier dure le temps nécessaire pour évacuer cette énergie. Comment lire le résultat ? Une énergie d'environ 1 kJ et une durée de quelques minutes.

Donnée

Énergie massique de fusion de l'acide stéarique : \(L = 1{,}99\times10^{5}\ \text{J}\cdot\text{kg}^{-1}\).

À faire : complète la conversion de la masse et le calcul de \(Q\), exécute, puis compare la durée calculée à la durée du palier de ta courbe.

Indice 1 — physique. \(Q = m \times L\), avec \(m\) en kg.
Indice 2 — conversion. 1 g = 0,001 kg : on divise par 1 000.
Indice 3 — code. m = m_g / 1000 et Q = m * L.
Correction de l'activité 1
m_g = 5.0
L = 1.99e5
puissance = 3.0

m = m_g / 1000
Q = m * L
duree = Q / puissance

print("Q =", Q, "J")
print("durée prévue du palier :", round(duree), "s, soit", round(duree / 60, 1), "min")

Résultats attendus. \(Q = 995\ \text{J}\) ; durée prévue : 332 s, soit 5,5 min.

Interprétation. Le palier observé dure environ 6 min (activité 2) : même ordre de grandeur. La puissance cédée à l'air (3,0 W) est une estimation : elle dépend de la température de la salle et de la forme du tube. Un échantillon plus gros donnerait un palier plus long.

Erreurs fréquentes. Garder la masse en grammes (Q = 995 000 J, durée de plus de 3 jours !).

3
Activité 2 — Repérer le palier automatiquement
≈ 15 min · Niveau 2 : listes, boucle, condition
Ce que fait le programme

Il parcourt les mesures deux par deux. Si la température varie de moins de 0,3 °C entre deux mesures consécutives, les deux points appartiennent au palier. Il calcule ensuite la température moyenne du palier et sa durée. Pourquoi 0,3 °C ? C'est un peu plus que l'incertitude de lecture : en dehors du palier, la température baisse de plus de 1 °C en 30 s. Comment lire le résultat ? Les numéros des mesures du palier, sa température et sa durée.

À faire : complète la condition du if, exécute, puis réponds à Q2.

Indice 1 — physique. On compare la variation de température entre deux mesures successives à 0,3 °C, qu'elle soit positive ou négative.
Indice 2 — code. La valeur absolue d'un nombre s'écrit abs(...). La mesure suivante est T[i + 1].
Indice 3 — code. if abs(T[i + 1] - T[i]) <= 0.3:
Correction de l'activité 2
dt = 30
T = [82.0, 78.1, 74.4, 71.0, 69.4, 69.4, 69.2, 69.3, 69.4, 69.3, 69.4, 69.2, 69.3, 69.2, 69.3, 69.3, 69.2,
     66.1, 63.2, 60.5, 57.9, 55.4, 53.3, 51.0, 49.1, 47.1, 45.4, 43.9, 42.3, 40.8, 39.7, 38.4, 37.1]

palier = []
for i in range(len(T) - 1):
    if abs(T[i + 1] - T[i]) <= 0.3:
        if i not in palier:
            palier.append(i)
        palier.append(i + 1)

somme = 0
for i in palier:
    somme = somme + T[i]
T_palier = somme / len(palier)
duree = (palier[-1] - palier[0]) * dt

print("mesures du palier :", palier)
print("température du palier :", round(T_palier, 1), "°C")
print("durée du palier :", duree, "s")

Résultats attendus. Mesures 4 à 16 ; température du palier 69,3 °C ; durée 360 s (de 120 s à 480 s).

Interprétation. Le palier dure 6 minutes à 69,3 °C : c'est la température de solidification, égale à la température de fusion. palier[-1] désigne le dernier élément de la liste. La durée vaut (nombre d'intervalles) × 30 s : 13 mesures, mais 12 intervalles.

Erreurs fréquentes. Oublier abs : les variations négatives (−3 °C par exemple) sont toutes « inférieures à 0,3 » et toute la courbe est prise pour un palier ; écrire < 0.3 au lieu de <= 0.3 (on perd les points qui varient d'exactement 0,3 °C).

Q2
Pourquoi faut-il la valeur absolue dans la condition ? Que se passerait-il avec un seuil de 0,05 °C ? de 5 °C ?

Pendant le refroidissement, \(T_{i+1} - T_i\) est négatif (−3 °C par exemple) : sans valeur absolue, il serait toujours inférieur à 0,3 et tous les points seraient retenus. Avec un seuil de 0,05 °C, plus petit que l'incertitude de lecture (± 0,1 °C), les fluctuations du palier dépasseraient le seuil : le palier serait découpé ou manqué. Avec 5 °C, des points de la descente (variations de 2 à 3 °C) seraient pris pour le palier. Le seuil doit être un peu supérieur à l'incertitude et nettement inférieur à la variation hors palier.

4
Activité 3 — Tracer la courbe de refroidissement
≈ 15 min · Niveau 3 : représenter et annoter
Ce que fait le programme

Il construit la liste des temps, trace la courbe \(T = f(t)\), puis une droite horizontale à la température du palier. Comment le lire ? Trois parties : descente (liquide), palier (liquide + solide), descente (solide).

À faire : complète la construction de la liste t, puis les deux listes de la droite du palier. Ajoute titre, axes avec unités et légende.

Indice 1 — physique. Les mesures sont espacées de 30 s : la mesure numéro i est faite à la date i × 30 s.
Indice 2 — graphique. Une droite horizontale passe par deux points de même ordonnée : \((0\ ;\ T_{\text{palier}})\) et \((960\ ;\ T_{\text{palier}})\). La dernière date est t[-1].
Indice 3 — code. t.append(i * dt) ; plt.plot([0, t[-1]], [T_palier, T_palier], '--', ...).
Correction de l'activité 3
import matplotlib.pyplot as plt

dt = 30
T = [82.0, 78.1, 74.4, 71.0, 69.4, 69.4, 69.2, 69.3, 69.4, 69.3, 69.4, 69.2, 69.3, 69.2, 69.3, 69.3, 69.2,
     66.1, 63.2, 60.5, 57.9, 55.4, 53.3, 51.0, 49.1, 47.1, 45.4, 43.9, 42.3, 40.8, 39.7, 38.4, 37.1]
T_palier = 69.3

t = []
for i in range(len(T)):
    t.append(i * dt)

plt.plot(t, T, 'o-', color='red', label='mesures')
plt.plot([0, t[-1]], [T_palier, T_palier], '--', color='navy', label='palier : 69,3 °C')
plt.title("Refroidissement de l'acide stéarique")
plt.xlabel("t (s)")
plt.ylabel("T (°C)")
plt.legend()
plt.grid()
plt.show()

Résultat attendu. Une descente rapide de 82 °C à 69 °C, un palier horizontal de 120 s à 480 s, puis une nouvelle descente, plus lente, jusqu'à 37 °C.

Interprétation. Pendant le palier, l'acide cède de l'énergie à l'air sans que sa température baisse : cette énergie provient de la solidification, exothermique. La courbe est celle d'un corps pur.

Erreurs fréquentes. Tracer T en fonction des numéros de mesure (axe des abscisses de 0 à 32, sans unité) ; oublier plt.legend().

5
Activité 4 — Identifier une espèce
≈ 20 min · Niveau 4 : fonction, recherche dans une table
Ce que fait le programme

La fonction identifier(T_palier) cherche, dans une table, l'espèce dont la température de fusion est la plus proche de la température mesurée. Si l'écart dépasse 2 °C, elle répond qu'aucune espèce de la table ne convient. Pourquoi ? Une mesure n'est jamais parfaite : on accepte un petit écart, mais pas n'importe lequel. Comment lire le résultat ? Le nom de l'espèce, ou un message d'absence.

À faire : complète les deux lignes marquées ..., exécute, puis réponds à Q3.

Indice 1 — méthode. On parcourt la table ; chaque fois qu'une espèce est plus proche que la meilleure trouvée jusqu'ici, elle devient la nouvelle meilleure.
Indice 2 — code. La nouvelle meilleure espèce est celle de numéro i. L'écart est trop grand si ecart > 2.
Indice 3 — code. meilleur = i et if ecart > 2:.
Correction de l'activité 4
especes = ["acide palmitique", "acide stéarique", "naphtalène", "acide benzoïque", "eau", "cyclohexane"]
T_fusion = [63, 69, 80, 122, 0, 6.5]

def identifier(T_palier):
    meilleur = 0
    for i in range(len(especes)):
        if abs(T_fusion[i] - T_palier) < abs(T_fusion[meilleur] - T_palier):
            meilleur = i
    ecart = abs(T_fusion[meilleur] - T_palier)
    if ecart > 2:
        return "aucune espèce de la table"
    return especes[meilleur]

for mesure in [69.3, 80.2, 6.1, 54.0]:
    print("palier à", mesure, "°C ->", identifier(mesure))

Résultats attendus. 69,3 °C → acide stéarique ; 80,2 °C → naphtalène ; 6,1 °C → cyclohexane ; 54,0 °C → aucune espèce de la table.

Interprétation. Notre palier à 69,3 °C identifie bien l'acide stéarique. Pour 54,0 °C, l'espèce la plus proche (acide palmitique, 63 °C) est à 9 °C : ce n'est pas elle. L'espèce n'est pas dans la table, ou ce n'est pas un corps pur.

Erreurs fréquentes. Comparer sans abs (on choisirait toujours l'espèce de plus petite température) ; oublier le test de l'écart (la fonction donnerait toujours un nom, même absurde).

Q3
Le palier mesuré (69,3 °C) diffère légèrement de la valeur de la table (69 °C). Est-ce gênant ? Pourquoi la fonction doit-elle pouvoir répondre « aucune espèce » ?

L'écart de 0,3 °C est du même ordre que l'incertitude de la sonde et que l'arrondi de la table (69 °C est donné sans décimale) : il n'est pas gênant. Une identification doit pouvoir échouer : si l'on répondait toujours « l'espèce la plus proche », on attribuerait un nom faux à une espèce absente de la table ou à un mélange. Un bon programme, comme un bon expérimentateur, sait dire « je ne sais pas ».

6
Activité 5 — Le programme de Maël
≈ 15 min · Niveau 5 : trouver et corriger des erreurs
La situation

Maël a écrit son propre programme pour la température et la durée du palier, à partir de la liste des mesures du palier trouvée à l'activité 2. Il contient quatre erreurs : deux l'empêchent de fonctionner, deux donnent des résultats faux sans message. Compare tes résultats à ceux de l'activité 2 (69,3 °C et 360 s).

Indice 1 — méthode. Corrige d'abord ce que Python signale. Puis compare : une température de palier de 27 °C est-elle possible sur la courbe ?
Indice 2 — où chercher. Il manque un symbole à la fin de la ligne for. Comment s'appelle la variable de la moyenne ? Par quoi faut-il diviser la somme ? Combien d'intervalles de 30 s y a-t-il entre la première et la dernière mesure du palier ?
Indice 3 — les quatre corrections. for i in palier: ; T_moy partout ; somme / len(palier) ; duree = (len(palier) - 1) * dt.
Correction de l'activité 5
dt = 30
T = [82.0, 78.1, 74.4, 71.0, 69.4, 69.4, 69.2, 69.3, 69.4, 69.3, 69.4, 69.2, 69.3, 69.2, 69.3, 69.3, 69.2,
     66.1, 63.2, 60.5, 57.9, 55.4, 53.3, 51.0, 49.1, 47.1, 45.4, 43.9, 42.3, 40.8, 39.7, 38.4, 37.1]
palier = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]

somme = 0
for i in palier:                        # erreur 1 : deux-points
    somme = somme + T[i]
T_moy = somme / len(palier)             # erreur 3 : moyenne sur les points du palier
duree = (len(palier) - 1) * dt          # erreur 4 : 13 mesures = 12 intervalles
print("palier :", round(T_moy, 1), "°C pendant", duree, "s")   # erreur 2 : T_moy

Erreur 1 (bloquante). Il manque les deux-points à la fin de la ligne for : erreur de syntaxe.

Erreur 2 (bloquante). T_moyenne n'existe pas : la variable s'appelle T_moy (NameError).

Erreur 3 (silencieuse). La somme des 13 températures du palier est divisée par 33 (toutes les mesures) : le programme affiche 27,3 °C, absurde (la courbe ne passe jamais par un palier à 27 °C).

Erreur 4 (silencieuse). 13 mesures ne délimitent que 12 intervalles de 30 s : 390 s au lieu de 360 s. L'erreur est petite, mais systématique.

Résultat après correction. Palier à 69,3 °C pendant 360 s, comme à l'activité 2.

Q4
L'erreur 4 ne donne pas un résultat absurde. Comment la repérer ?

En lisant la courbe : le palier commence à la mesure 4 (\(t = 120\ \text{s}\)) et finit à la mesure 16 (\(t = 480\ \text{s}\)), soit \(480 - 120 = 360\ \text{s}\). On peut aussi tester le programme sur un cas simple : un palier de 2 mesures consécutives dure 30 s, pas 60 s. C'est le classique « problème des piquets et des intervalles ».

7
Conclusion et auto-évaluation
≈ 10 min
Q5
Réponds à la problématique : comment as-tu mesuré la température de changement d'état, et qu'a-t-elle permis de conclure ?

La courbe de refroidissement présente un palier de 360 s à 69,3 °C, repéré automatiquement par Python (variations inférieures à 0,3 °C entre mesures successives). Pendant ce palier, l'acide se solidifie : transformation exothermique, l'énergie libérée (environ 1 kJ pour 5 g) compense celle cédée à l'air, et la température reste constante. Ce palier montre qu'il s'agit d'un corps pur, et sa température, comparée à une table, identifie l'acide stéarique (69 °C), avec un écart compatible avec la précision des mesures.

Grille d'auto-évaluation

A = je sais faire seul · B = avec un peu d'aide · C = partiellement · D = à retravailler.

CompétenceABCD
Relever une courbe de refroidissement en sécurité
Repérer un palier et sa température
Calculer une énergie Q = m × L
Utiliser abs() et une condition dans une boucle
Écrire une fonction de recherche dans une table
Repérer une erreur en testant un cas simple
Clique sur A, B, C ou D pour chaque compétence.
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

Acide stéarique en tubes (environ 5 g), bain-marie à 85 °C prêt en début de séance, sondes de température.

Sécurité

Bain-marie chaud : manipuler les tubes avec une pince. L'acide stéarique n'est pas dangereux mais ne doit pas être ingéré.

Points de vigilance

Le palier de solidification de l'acide stéarique est vers 69–70 °C ; un palier légèrement incliné signale un produit impur, ce qui fait le lien avec corps pur / mélange (chapitre 1).

Différenciation

Aide : Fournir un tableau de relevés à compléter toutes les 30 s.

Approfondissement : Calculer l'énergie libérée pendant la solidification à partir de l'énergie massique fournie.

Évaluation (sur 20)

Tracé et lecture du palier (activités 2 et 3, 8 pts) ; activité 4 (énergie, 4 pts) ; activité 5 (4 pts) ; Q5 (4 pts).

Les corrections détaillées des activités Python et des questions sont dans les encadrés de chaque partie.

TP terminé, bravo !

Pour consolider : exercices 6, 9 et 10, puis le quiz du cours.

Exercices corrigés Retour au cours