Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Koelen van metalen buizen

#import necessary libraries
import matplotlib.pyplot as plt
import numpy as np
import math
from scipy.optimize import curve_fit 

Introductie

In het boek wordt in hoofdstuk 2 geschreven over warmtetransport. Dat kan op drie manieren plaatsvinden. Het is niet eenvoudig om deze drie verschillende vormen uit elkaar te houden. In het vak ‘Fysische Transportverschijnselen’, dat in het tweede jaar wordt gegeven, zal je zien dat de natuurkunde achter deze verschillende vormen van warmtetransport ook best ingewikkeld is.

Antwoord opdracht 1

Stroming, geleiding en straling. Geleiding treedt vooral op in vaste stoffen en vervoert warmte door middel van direct contact. Stroming komt alleen voor in gassen en vloeistoffen en vervoert warmte door middel van beweging van de verwarmde stof zelf. En straling is een vorm van warmteoverdracht via elektromagnetische golven.

In deze proef proberen we een inschatting te maken van de ordegrootte van de verschillende vormen van warmtetransport bij de koeling van een metalen buis aan lucht.

Theorie

Volgens Newton’s wet van afkoeling is de snelheid waarmee een voorwerp afkoelt evenredig met het verschil in de temperatuur van het voorwerp (TT) en de omgeving (T0T_0). We kunnen dit schrijven als:

Q˙=hA(T(t)T0),\dot{Q} = -hA(T(t) - T_0),

waarin

  • Q˙\dot{Q} de warmtestroom in W\mathrm{W},

  • AA het oppervlak waardoor koeling optreedt in m2\mathrm{m}^2,

  • hh de warmteoverdrachtscoëfficiënt in W/(m2K)\mathrm{W/(m^2 K)}.

Dit levert de differentiaalvergelijking

CT˙=hA(T(t)T0),C\dot{T} = -hA(T(t) - T_0),

met CC de warmtecapaciteit in J/kg\mathrm{J/kg}. Herschrijven met τ=ChA\tau = \frac{C}{hA} levert:

τT˙=T(t)T0,-\tau\dot{T} = T(t) - T_0,

met als oplossing:

T(t)T0=(T(0)T0)et/τ.T(t) - T_0 = (T(0) - T_0)\text{e}^{-t/\tau}.

We kunnen hieruit dus concluderen dat τ\tau de karakteristieke tijdsduur is waarin de temperatuur van de buis een factor e\text{e} verlaagd ten opzichte van de omgevingstemperatuur.

We zijn hier voor het gemak uitgegaan van een hh die onafhankelijk is van de temperatuur. We weten echter dat warmtetransport door straling niet lineair gaat, maar als

Q˙s=ϵσA(T4T04).\dot{Q}_s = \epsilon \sigma A (T^4 - T_0^4).

Voor kleine temperatuurverschillen (ΔT=TT0\Delta T = T - T_0) is dit te vereenvoudigen tot

Q˙s=ϵσA((T0+ΔT)4T04)ϵσ4AT03ΔT.\dot{Q}_s = \epsilon \sigma A ((T_0+\Delta T)^4 - T_0^4) \approx \epsilon \sigma 4A T_0^3 \Delta T.

Zolang ΔT\Delta T dus relatief klein is ten opzichte van T0T_0, kunnen we hh dus inderdaad als een constante beschouwen.

# Antwoord vraag 4
Constante_ESA = 1.0 # Epsilon * Sigma * A
# blijft 1.0 voor relatieve fout
# gegevens zijn gehaald uit koelproces met dop
T0 = 294.35         # Omgevingstemperatuur in K (21.2 °C)
DeltaT = 21.0       # Temperatuurverschil in K (21 °C)
ratio = DeltaT / T0 

# Q_s_exact
Q_s_exact_terms = (
    4 * (T0**3) * DeltaT + 
    6 * (T0**2) * (DeltaT**2) + 
    4 * T0 * (DeltaT**3) + 
    (DeltaT**4)
)
Q_s_exact = Constante_ESA * Q_s_exact_terms

# Q_s_benaderd, deltaT is zeer klein
Q_s_benaderd = Constante_ESA * (4 * (T0**3) * DeltaT)

# Fout_abs = Q_s_exact - Q_s_benaderd
Fout_abs_termen = (
    Q_s_exact_terms - (4 * (T0**3) * DeltaT) 
)

# De absolute fout bestaat uit de weggelaten hogere-ordetermen
Fout_abs = Constante_ESA * (
    6 * (T0**2) * (DeltaT**2) + 
    4 * T0 * (DeltaT**3) + 
    (DeltaT**4)
)

# Fout_rel = Fout_abs / Q_s_benaderd
Fout_relatief = (
    (6 * (T0**2) * (DeltaT**2)) + 
    (4 * T0 * (DeltaT**3)) + 
    (DeltaT**4)
) / (4 * (T0**3) * DeltaT)

print(f"Relatieve Fout (percentage): {Fout_relatief * 100:.2f} %")
Relatieve Fout (percentage): 11.22 %

Methode en materialen

Ontwerp

Materialen

  • standaard met twee thermisch geïsoleerde grijparmen

  • metalen buis me bijpassende dop

  • thermometer (infrarood of thermokoppel)

  • knijper voor bevestigen thermokoppel op buis

  • warm water tussen 60 en 80 graden Celsius

  • (evt) schuifmaat voor bepalen dimensies buis

Procedure

Stop de buis in warm water en laat deze gedurende een paar minuten zitten om thermisch evenwicht te bereiken. Beantwoord ondertussen de volgende vragen met behulp van de tabel:

Materiaalρ\rho in kg/m3\text{kg/m}^3CC in J/(kg K)\text{J} / \text{(kg K)}
messing8,73E33,8E2
aluminium2,7E38,8E2
staal7,9E34,7E2

Solution exercise 5 (Zie onderstaande code)

Pak de buis op met thermisch isolerende handschoenen (of direct met de geïsoleerde grijparm) en plaats deze in de grijparm met isolatieschoentjes. Positioneer de thermometer voor optimale temperatuurlezing. Meet als functie van tijd hoe lichaam koelt. Wacht voldoende lang zodat je de karakteristieke tijd τ\tau voor de afkoeling kan bepalen.

Doe dit voor twee of drie configuraties:

  1. De buis met de as in verticale richting en afgesloten met dop.

  2. De buis met de as in verticale richting zonder dop.

  3. (alleen bij voldoende tijd) De buis met de as in horizontale richting en afgesloten met dop.

Data analyse

  • Bepaal de karakteristieke tijd τ\tau waarin de temperatuur van buis afneemt. Deze kan verschillend zijn voor de drie bovenstaande configuraties.

  • Bereken hieruit de warmteoverdrachtscoëfficiënt.

  • Vergelijk je resultaten met je groepsgenoten die een vergelijkbare buis hebben gemeten (dit kan klassikaal).

  • Welk deel van de warmteoverdrachtscoëfficiënt verwacht je dat gegeven is door de geleiding, straling en convectie? Onderbouw je redenering.

Data-analyse antwoord

De karakteristieke tijd tau is veel hoger bij het koelproces met dop. Dit is logisch omdat de dop stroming, dat de grootste warmteuitwisselingsbijdrage levert, blokkeert. Het zal dus veel langer duren voordat de temperatuur een factor e-macht lager is geworden.

Ik verwacht dat stroming het primaire mechanisme voor warmteafvoer van een vast oppervlak naar een fluïdum (lucht) door de beweging van het fluïdum, is. Circa 60 tot 80% zal door stroming worden afgevoerd. Radiate zal ook een significante bijdrage leveren aan de warmteafvoer, aangezien straling, ook bij lage temperaturen, een rol speeld. Geleiding zal nagenoeg verwaarlooosbaar zijn, aangezien lucht een uitstekende isolator is. Geleiding speelt eigenlijk alleen een rol van vaste stof naar vaste stof.

# Antwoord vraag 5
# meten van lengtes aliminium buis
dikte = 0.00135 # m
u_schuifmaat = 0.00005 # m
lengte = 0.102 # m
diameter = 0.0494 # m
r = diameter / 2
buitenoppervlak = 2 * np.pi * r * lengte
u_r = u_schuifmaat / 2 # Want r = d/2
u_L = u_schuifmaat

# Berekening oppervlak en onzekerheid mbv calculus approach
buitenoppervlak = 2 * np.pi * r * lengte
u_buitenoppervlak = np.sqrt((u_r/r)**2 + (u_L/lengte)**2) * buitenoppervlak
print(f"buitenoppervlak: {buitenoppervlak:.5f} +/- {u_buitenoppervlak:.5f} m^2")

# puur om te checken of gemeten massa klopt, hebben we de massa gewogen:
massa_gewogen = 60.0 #g u_massa_gewogen = 0.1 g

# berekening massa en volume buis
volume = buitenoppervlak * dikte
u_volume = np.sqrt((u_buitenoppervlak/buitenoppervlak)**2 + (u_schuifmaat/dikte)**2) * volume
dichtheid_aluminium = 2.7e3 # kg/m^3 
massa = dichtheid_aluminium * volume
u_massa = dichtheid_aluminium * u_volume
print(f"volume: {volume:.7f} +/- {u_volume:.7f} m^3")
print(f"massa: {massa:.3f} +/- {u_massa:.3f} kg")

# berekenen soortelijke warmte aluminium buis
specifiek_soortelijke_warmte_aluminium = 8.8e2 # J/ (K* kg)
soortelijke_warmte_aluminium = specifiek_soortelijke_warmte_aluminium * massa
u_soortelijke_warmte_aluminium = specifiek_soortelijke_warmte_aluminium * u_massa
print(f"soortelijke_warmte_aluminium: {soortelijke_warmte_aluminium:.2f} +/- {u_soortelijke_warmte_aluminium:.2f} J/K")

# gemeten temperatuur grond mbv infraroodsensor
T_grond_infraroodsensor = 21.2 #graden
print("T_grond_infraroodsensor/ omgevingstemperatuur:", T_grond_infraroodsensor, "graden")
buitenoppervlak: 0.01583 +/- 0.00002 m^2
volume: 0.0000214 +/- 0.0000008 m^3
massa: 0.058 +/- 0.002 kg
soortelijke_warmte_aluminium: 50.78 +/- 1.88 J/K
T_grond_infraroodsensor/ omgevingstemperatuur: 21.2 graden

Resultaten

# Hier de data en de analyse
# configuratie 1 zonder dop
# onzekerheden
u_t = 1.0    # Onzekerheid in tijd (1 seconde reactietijd)
u_T = 0.5    # Onzekerheid in temperatuur (0.5 K voor de thermometer)

def exp_func(t, A, tau, T_omg):
    # A is verschiltemperatuur met omgeving aan start
    # tau is de karakteristieke tijd voor de koeling
    # T_omg is de omgevingstemperatuur
    return (A * np.exp(-t/tau) + T_omg)  

buitenoppervlak = 0.15829857062908248 # bepaal zelf in m^2
warmtecapaciteit = 507.75849514984503 # bepaal de warmtecapaciteit in J/K

times = np.array([0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330])
temps = np.array([43.0, 39.9, 37.1, 35.4, 33.9, 32.6, 31.8, 30.9, 29.8, 29.4, 28.7, 28.2])


# pas beginwaardes aan naar schatting
# Het aantal maxfev moet wellicht hoger voor goede convergentie van de waarde
popt, pocv = curve_fit(exp_func, times, temps, p0=[12.8, 1000, 21.2], maxfev=5000)

A_exp, tau_exp, T_omg_exp = popt
times_fit = np.linspace(0, max(times), 500)
y_fit = exp_func(times_fit, *popt)

plt.figure(dpi=450)
plt.xlabel('$t$ (s)')
plt.ylabel('$T$ (K)', rotation=0, labelpad=20)
plt.title('Afkoeling van de aluminiumbuis zonder dop')
plt.errorbar(times, temps, xerr=u_t, yerr=u_T, fmt='+', color='green', 
             ecolor='red', elinewidth=1, capsize=1, label='measurement')
plt.plot(times_fit, y_fit, '-', color='orange', 
         label='$T = %0.2f e^{-t/%0.4f} + %0.2f$' % (A_exp, tau_exp, T_omg_exp))
plt.ylim(bottom=0, top= 1.1* max(temps))
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7)
plt.tight_layout()
plt.axhline(0, color='black', linewidth=0.8)
plt.axvline(0, color='black', linewidth=0.8)
plt.show()

perr = np.sqrt(np.diag(pocv))
u_tau = perr[1]
print(f"tau: {tau_exp:.0f} +/- {u_tau:.0f} s")
h_exp = (warmtecapaciteit) / (tau_exp * buitenoppervlak)
u_h_exp = h_exp * np.sqrt((u_soortelijke_warmte_aluminium / soortelijke_warmte_aluminium)**2 + 
    (u_tau / tau_exp)**2 + 
    (u_buitenoppervlak / buitenoppervlak)**2)
print(f"h: {h_exp:.2f} +/- {u_h_exp:.2f} W/(m^2 K)")
# Sla figuren op met  
# 
# plt.savefig("Figuren/naam.png", dpi=450)
<Figure size 2880x2160 with 1 Axes>
tau: 150 +/- 8 s
h: 21.38 +/- 1.39 W/(m^2 K)
# Hier de data en de analyse
# configuratie 2 met dop

def exp_func(t, A, tau, T_omg):
    # A is verschiltemperatuur met omgeving aan start
    # tau is de karakteristieke tijd voor de koeling
    # T_omg is de omgevingstemperatuur
    return (A * np.exp(-t/tau) + T_omg)  

times = np.cumsum(np.concatenate((np.ones(11)*5, np.ones(52)*10))) - 5
temps = np.array([42.2,41.8 ,41.5 ,41.3 ,41.0 ,40.7 ,40.4 ,40.1 ,39.7 ,39.4 ,39.1  , 38.7 ,38.2 ,37.8 ,37.4, 37.0, 36.5, 36.1, 35.7, 35.4, 35.0, 34.6, 34.3, 34.1, 33.8, 33.6, 33.3, 33.1, 32.8, 32.5, 32.4, 32.1, 31.9, 31.7, 31.3, 31.2, 31.0, 30.8, 30.7, 30.5, 30.4, 30.3, 30.1, 29.9, 29.8, 29.7, 29.6, 29.5, 29.4, 29.3, 29.1, 29.0, 28.9, 28.8, 28.7, 28.6, 28.5, 28.4, 28.3, 28.3, 28.2, 28.0, 28.0])

# pas beginwaardes aan naar schatting
# Het aantal maxfev moet wellicht hoger voor goede convergentie van de waarde
popt2, pocv2 = curve_fit(exp_func, times, temps, p0=[21.0, 100, 21.2], maxfev=5000)

A_exp, tau_exp, T_omg_exp = popt2

y_fit = exp_func(times, *popt2)


plt.figure(dpi=450)
plt.xlabel('$t$ (s)')
plt.ylabel('$T$ (K)', rotation=0, labelpad=20)
plt.title('Afkoeling van de aluminiumbuis met dop')
plt.axhline(0, color='black', linewidth=0.8)
plt.axvline(0, color='black', linewidth=0.8)
plt.errorbar(times, temps, xerr=u_t, yerr=u_T, fmt='+', color='blue', 
             ecolor='black', elinewidth=1, capsize=1, label='measurement')
plt.plot(times, y_fit, 'r-', 
         label='$T = %0.2f e^{-t/%0.4f} + %0.2f$' % (A_exp, tau_exp, T_omg_exp))
plt.ylim(bottom=0, top= 1.1* max(temps))
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()
gerr = np.sqrt(np.diag(pocv2))
u_tau2 = gerr[1]
print(f"tau: {tau_exp:.0f} +/- {u_tau2:.0f} s")
h_exp2 = (warmtecapaciteit) / (tau_exp * buitenoppervlak)
u_h_exp2 = h_exp2 * np.sqrt((u_soortelijke_warmte_aluminium / soortelijke_warmte_aluminium)**2 + 
    (u_tau2 / tau_exp)**2 + 
    (u_buitenoppervlak / buitenoppervlak)**2)
print(f"h: {h_exp2:.1f} +/- {u_h_exp2:.1f} W/(m^2 K)") # warmteoverdrachtscoëfficiënt in W/m^2 K
# Sla figuren op met  
# 
# plt.savefig("Figuren/naam.png", dpi=450)
<Figure size 2880x2160 with 1 Axes>
tau: 251 +/- 2 s
h: 12.8 +/- 0.5 W/(m^2 K)

Discussie en conclusie

De configuratie zonder dop resulteerde in een karakteristieke tijd (τ\tau) van 150.05 s, tegenover 251 s met dop. De berekende warmteoverdrachtscoëfficiënten (hh) vallen voor beide scenario’s binnen de literatuurwaarden voor natuurlijke convectie, die doorgaans tussen de 5 en 25 W/(m²·K) liggen. De hogere warmteoverdrachtscoëfficiënt van de open buis (h21,38h \approx 21,38 W/(m²K)) ten opzichte van de buis met dop (h12,76h \approx 12,76 W/(m²K)) bevestigt dat natuurlijke interne convectie de primaire koelingsfactor is.

In de beginfase van het experiment was het lastig om de afkoeling goed in beeld te brengen, omdat de buis exponentieel snel afkoelde. Na de metingen van het eerste proces - is er een hogere meetfrequentie bij de start gebruikt om dit verloop nauwkeurig in kaart te brengen. Ondanks de nauwkeurigheid van de apparatuur zijn er enkele systematische fouten geconstateerd. Zo is er een afwijking tussen de theoretische en gewogen massa van de buis, wat direct invloed heeft op de berekende warmtecapaciteit. Daarnaast is de huidige temperatuurmeting niet volledig representatief, omdat slechts circa 1%1\% van het oppervlak is bemonsterd. Voor toekomstig onderzoek zou het gebruik van een infraroodcamera op meerdere locaties een betrouwbaarder gemiddelde van de oppervlaktetemperatuur geven. Hoewel tocht werd voorkomen door ramen en deuren te sluiten, kan de validiteit verder worden verhoogd door de proef in een volledig afgesloten ruimte uit te voeren. Door hierbij ook de temperatuurstijging van de omgevingslucht te meten, kan de totale afgegeven warmte via een volledige energiebalans worden gevalideerd.