Bepaling van soortelijke warmte van water
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fitIntroductie¶
Water heeft een enorme buffercapaciteit: je moet veel energie toevoegen om de temperatuur van water een graad te verwarmen. In dit practicum gaan we de soortelijke warmte van water bepalen door een bekende hoeveelheid water te verwarmen met een bekende hoeveelheid energie, en de temperatuurstijging te meten.
Theorie¶
Warmte-energie is de energie die wordt overgedragen als gevolg van een temperatuurverschil. Wanneer er water wordt verwarmd, wordt er warmte-energie toegevoegd, wat resulteert in een temperatuurstijging . De relatie tussen deze grootheden wordt beschreven door de formule:
waarin:
de toegevoegde warmte-energie is ().
de massa van de stof is ().
de temperatuurverandering is ( of ).
de soortelijke warmtecapaciteit van de stof is ().
De soortelijke warmte () is een stofeigenschap die aangeeft hoeveel energie nodig is om de temperatuur van één kilogram van die stof met één graad Celsius () of Kelvin () te verhogen. De referentiewaarde voor de soortelijke warmtecapaciteit () voor vloeibaar water bij standaardomstandigheden () is:
. In dit practicum leveren we een bekende hoeveelheid elektrische energie aan het water, meten we de massa en de temperatuurstijging over de tijd , en lossen we vervolgens op.
Methode en materialen¶
Ontwerp¶
Een waterbad met bekende massa aan water wordt verwarmd met een elektrisch verwarmingselement dat een bekende hoeveelheid energie levert. De temperatuur van het water wordt gemeten met een temperatuursensor. Door de temperatuurstijging als functie van de tijd te meten kan de soortelijke warmte van water worden berekend.
Materialen¶
Hieronder staat de lijst van benodigde materialen bij deze proef:
Maatbeker
Weegschaal
Water
Elektrisch verwarmingselement (, )
Voedingsbron
Thermometer of temperatuursensor
Stopwatch of timer

Een schematische weergave van de opstelling
Procedure¶
1 Voorbereiding¶
1.1 Bepaling van de watermassa¶
Weeg de lege maatbeker met roerstaafje en noteer de massa ().
Vul de maatbeker met roerstaafje met ongeveer water, of voldoende water waarin het verwarmingselement geheel in ondergedompeld kan worden. Het is essentieel dat zowel de binnen- als de buitenwand van de maatbeker droog zijn, zodat mogelijk restwater de gewogen totale massa niet onterecht verhoogt.
Weeg de maatbeker met roerstaafje en met water en noteer de totale massa ().
Bereken de massa van het water () en geef de bijbehorende meetonzekerheid van de bepaalde waarde.
1.2 Opstelling Klaarmaken¶
Plaats het verwarmingselement, de weerstand, en de sensor van de thermometer ondergedompeld in het water. Zorg ervoor dat de sensor vrij en stil in het water zweeft en de thermometer het verwarmingselement of de bodem/wand niet raakt, om onjuiste lokale temperatuurmetingen te voorkomen.
Sluit de weerstand aan op de voedingsbron (DC). De voedingsbron moet uit staan.
Sluit een multimeter (ingesteld als voltmeter) parallel aan op de weerstand om de spanning () te meten. Noteer de meetonzekerheid van deze multimeter. Stel de voedingsbron in op (), wat het maximum veilige vermogen van levert.
Plaats de gevulde maatbeker op de magnetische roerder en zet de roerder op de hoogste stand. Dit zorgt ervoor dat de warmte in het water gelijkmatig wordt verdeeld.
2 Metingen Uitvoeren¶
2.1 Initialisatie¶
Wacht ongeveer 5 minuten totdat de temperatuur van het water stabiel is. Door te wachten op een stabiele starttemperatuur (), minimaliseer je fouten door initiële warmte-uitwisseling met de omgeving. Noteer de initiële temperatuur ().
2.2 Meetdata verzamelen¶
Zet de voedingsbron (en daarmee het verwarmingselement) aan en start de stopwatch exact tegelijkertijd. Dit is tijd . Noteer de werkelijke, gemeten spanning () op de multimeter.
Meet en noteer de temperatuur van het water () met een meetonzekerheid van () elke 30 seconden gedurende een periode van ongeveer 10 minuten. Door veel meetpunten te verzamelen, verhoog je de betrouwbaarheid.
Stop de meting na een totale tijd van (). Zet onmiddellijk de voedingsbron uit en stop de stopwatch. Noteer de finale temperatuur () en de totale tijd ().
Veiligheid¶
We maken gebruik van een , weerstand. Deze wordt snel heet. De bronspanning mag dan ook alleen aan wanneer de weerstand in het water zit. Raak de weerstand niet aan tijdens het experiment. Omdat de weerstand in het water zit, kunnen we wel het elektrisch vermogen hoger zetten zonder dat de weerstand oververhit raakt. Het maximaal vermogen mag zijn. Daarbij moet de roerder wel aanstaan om de warmte goed te verdelen.
Data analyse¶
(Geef kort de data-analysemethode weer.)
Bereken het elektrische vermogen dat door het verwarmingselement wordt geleverd met de formule . Noteer de eenheid in Watt (). Maak een grafiek waarin de gemeten temperatuur () wordt uitgezet tegen de tijd (). Trek de beste rechte lijn door de meetpunten in het lineaire gedeelte van de grafiek (waar de temperatuurstijging constant is) en bepaal de helling . Combineer de formules voor de warmte-energie en om te bepalen (). Bereken de soortelijke warmte van water () door de berekende waarden van , , en de helling () in te vullen. Vergelijk de experimenteel bepaalde waarde van met de aanvaarde referentiewaarde voor water en bereken het relatieve foutpercentage.
Resultaten¶
# Hier de data en de analyse
# watermassa berekening
m_bekerglas_met_roerstaafje_start = 0.1520 # kilogram
u_weegschaal = 0.0001 # kgram
m_bekerglas_met_roerstaafje_en_water_start = 0.3576 # kg
m_water_start = m_bekerglas_met_roerstaafje_en_water_start - m_bekerglas_met_roerstaafje_start
print(f"massa van water start: {m_water_start:.4f} +/- 0.0001 kg")
# onzekerheden en initiele waarden
u_multimeter_voltage = 0.1 # V
u_tijd = 1.0 # s geschat
u_temperatuur = 0.05 #K geschat
c_referentie = 4186 # J/(kg·K)
U = 19.90 # V
R = 10.0 # Ohm
# Verwarmd naar 19.90 V en toen voor 10 min elke 30 sec gemeten.
# Plotten
file_path = r'C:\Users\Eline\Dropbox\Eline\Universiteiten\TUDelft\Applied Physics\BSc 2025-2026 jaar 1\Q2\IP2\practica.portfolio\c_water\rawdata.soortelijke.warmte.Eline.csv'
data = np.loadtxt(file_path, delimiter=',', skiprows=1)
t = data[:, 0]
T = data[:,1]
# berekening vermogen P
P = (U**2) / R
u_P = P * np.sqrt((2 * u_multimeter_voltage / U)**2) # onzekerheid in P
print(f"Berekening van het elektrisch vermogen (P):")
print(f" P = U^2 / R = {U}^2 / {R} = {P:.2f} +/- {u_P:.2f} Watt (W)")
# Berekening helling
params, cov = np.polyfit(t, T, 1, cov=True)
helling = params[0]
intercept = params[1]
u_helling = np.sqrt(cov[0, 0])
print(u_helling)
T_fit = helling * t + intercept
print(f"Bepaling van de helling (ΔT/Δt) in het lineaire deel:")
print(f" De helling (ΔT/Δt) is: {helling:.4f} +/- {u_helling:.4f} °C/s")
# Theoretische trendlijn
T_0 = 25.1 # gemeten initiële temperatuur (°C)
# Theoretische Helling = P / (m * c)
helling_theoretisch = P / (m_water_start * c_referentie)
t_test = np.linspace(1, 600, 600) # Tijd van 0 tot 600 seconden, met stappen van 1 seconde
T_theoretisch = T_0 + helling_theoretisch * t_test
#plot
plt.figure(dpi=450)
plt.title('Vergelijking Experimentele en Theoretische Temperatuurstijging', fontsize=16)
plt.errorbar(t, T, xerr=u_tijd, # De horizontale onzekerheid
yerr=u_temperatuur, # De verticale onzekerheid
fmt='+', # Marker stijl (hetzelfde als je '+' in plot)
color='blue',
ecolor='black',
elinewidth=1, # Dikte van de lijntjes van de errorbars
capsize=1, # "Dakjes" op de errorbars
label='Gemeten Data met errorbars')
plt.plot(t, T_fit, '--', label=f'Beste Rechte Lijn: Helling = {helling:.4f} K/s', color='red')
plt.plot(t_test, T_theoretisch, '-', label=f'Theoretische Trendlijn', color='orange', linewidth=2)
plt.legend(loc='lower right', fontsize=12)
plt.xlabel("$t$ (s)")
plt.ylabel("$T$ $(^\circ C)$", rotation=0, labelpad=20)
plt.grid(True, linestyle='--', alpha=0.7)
plt.ylim(bottom=0, top=1.2*max(T))
plt.tight_layout()
plt.axhline(0, color='black', linewidth=0.8)
plt.axvline(0, color='black', linewidth=0.8)
plt.show()
# Berekening soortelijke warmte water
c_experimenteel = (P / m_water_start) * (1 / helling)
u_c_experimenteel = c_experimenteel * np.sqrt((u_P / P)**2 + (u_helling / helling)**2 + (u_weegschaal / m_water_start)**2)
# Berekening van de relatieve fout: (|c_exp - c_ref| / c_ref) * 100%
relatieve_fout_percentage = (abs(c_experimenteel - c_referentie) / c_referentie) * 100
print(f"Berekening van de soortelijke warmte van water (c):")
print(f" c experimenteel: {c_experimenteel:.2f} +/- {u_c_experimenteel:.2f} J/(kg·K)")
print(f" Referentiewaarde c: {c_referentie} J/(kg·K)")
print(f" Relatieve Fout: |{c_experimenteel:.2f} - {c_referentie}| / {c_referentie} * 100%")
print(f" Relatieve Foutpercentage: {relatieve_fout_percentage:.2f}%")
# Foutenpropagatie strijdigheidsanalyse
if abs(c_experimenteel - c_referentie) <= np.sqrt(u_c_experimenteel**2):
print("De experimentele waarde is in overeenstemming met de referentiewaarde binnen de onzekerheid.")
else:
print("De experimentele waarde is NIET in overeenstemming met de referentiewaarde binnen de onzekerheid.")massa van water start: 0.2056 +/- 0.0001 kg
Berekening van het elektrisch vermogen (P):
P = U^2 / R = 19.9^2 / 10.0 = 39.60 +/- 0.40 Watt (W)
0.0003048962706204801
Bepaling van de helling (ΔT/Δt) in het lineaire deel:
De helling (ΔT/Δt) is: 0.0364 +/- 0.0003 °C/s

Berekening van de soortelijke warmte van water (c):
c experimenteel: 5292.73 +/- 69.30 J/(kg·K)
Referentiewaarde c: 4186 J/(kg·K)
Relatieve Fout: |5292.73 - 4186| / 4186 * 100%
Relatieve Foutpercentage: 26.44%
De experimentele waarde is NIET in overeenstemming met de referentiewaarde binnen de onzekerheid.
# Sla figuren op met
#
# plt.savefig("figures/naam.png", dpi=450)
Discussie en conclusie¶
De berekende experimentele soortelijke warmte () is hoger dan de referentiewaarde (). Deze waarden zijn onderling strijdig. Dit grote verschil wordt veroorzaakt door een te lage gemeten helling ( K/s). Omdat de helling omgekeerd evenredig is met , leidt elk warmteverlies tot een overschatting van de soortelijke warmte. In dit experiment is een aanzienlijk deel van de elektrische energie niet in het water gaan zitten, maar verloren gegaan aan de lucht, de maatbeker en het roerstaafje. De grafiek bevestigt dit warmteverlies: de meetpunten trekken na verloop van tijd onder de ideale rechte lijn vandaan. Dit “afvlakken” van de curve toont aan dat het warmteverlies toeneemt naarmate het water warmer wordt en het temperatuurverschil met de omgeving groter wordt. De onzekerheid in de meetapparatuur ( V en K) is klein genoeg voor dit experiment.
Voor vervolgonderzoek zouden de warmtecapaciteit van de maatbeker en het warmteverlies naar de omgeving meegenomen moeten worden in de berekening van de soortelijke warmte van water voor een hogere nauwkeurigheid. Voor een verdere verfijning zou de opstelling in toekomstige experimenten geoptimaliseerd kunnen worden door een geïsoleerde calorimeter te gebruiken, wat het systematische warmteverlies aanzienlijk zou minimaliseren.