Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Pages
uses: actions/configure-pages@v3
- uses: actions/setup-node@v4
Expand Down
4 changes: 4 additions & 0 deletions Content/Github/1_intro.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
authors: Freek Pols
updated: december 3, 2025
---
# Portfolio opzetten (1h)

Dit is de GitHub repository voor het thermodynamica deel van IP2.
Expand Down
2 changes: 2 additions & 0 deletions Content/Github/2_dependencies.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
downloads:
- file: ./requirements.txt
title: Software dependencies
authors: Freek Pols
updated: december 3, 2025
---

# Installeren extra software
Expand Down
4 changes: 4 additions & 0 deletions Content/Github/3_features.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
authors: Freek Pols
updated: december 3, 2025
---
# Markdown (Cheatsheet)

Dit portfolio wordt gemaakt op basis van MarkDown files en Jupyter Notebook files. Jupyter Notebooks combineren python code cellen met tekst cellen die in markdown geschreven zijn. Markdown is een eenvoudige opmaaktaal: platte tekst die *opgemaakt* wordt met kleine stukjes 'code'. Die tekst is vervolgens snel te exporteren naar allerlei andere formats zoals pdf, word, html etc.
Expand Down
5 changes: 5 additions & 0 deletions Content/Labs/Verdamping.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
"id": "4059c8b3",
"metadata": {},
"source": [
"---\n",
"authors: Freek Pols\n",
"updated: December 3, 2025\n",
"---\n",
"\n",
"# Is het verdamping?\n",
"\n",
"In dit experiment is er een verwarmingselement in een met water gevulde maatbeker gestopt. Elke minuut is de temperatuur van het water gemeten. Deze metingen zijn opgeslagen in [tempmetingen.csv](tempmetingen.csv).\n",
Expand Down
4 changes: 4 additions & 0 deletions Content/Labs/Warmtecapaciteit.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
"id": "530dbcb4",
"metadata": {},
"source": [
"---\n",
"authors: Freek Pols\n",
"updated: december 3, 2025\n",
"---\n",
"# Bepaling van warmtecapaciteit van een onbekend materiaal\n"
]
},
Expand Down
158 changes: 158 additions & 0 deletions Content/Labs/ballonproef.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "41da7fcc",
"metadata": {},
"source": [
"---\n",
"authors: Roel Smit\n",
"updated: December 3, 2025\n",
"---\n",
"# Meten bij constante druk\n",
"<!-- vervang bovenstaande titel -->"
]
},
{
"cell_type": "markdown",
"id": "d64ce9bf",
"metadata": {},
"source": [
"# Introductie\n",
"\n",
"Volgens [de ideale gaswet](https://nl.wikipedia.org/wiki/Algemene_gaswet) wordt het volume $V$ van een (ideaal) gas gegeven door: \n",
"\n",
"$$\n",
" V = n R T / P\n",
"$$\n",
"\n",
"waarin \n",
"\n",
"- $n$ het aantal mol gas,\n",
"- $R$ de ideale gasconstante,\n",
"- $T$ de absolute temperatuur,\n",
"- $P$ de druk.\n",
"\n",
"In dit practicum veranderen we de temperatuur en meten we de verandering van het volume van het gas. De proef is met name kwalitatief van aard en laat zien hoe lastig het is een extensieve grootheid als volume te meten. "
]
},
{
"cell_type": "markdown",
"id": "693cbc3e",
"metadata": {},
"source": [
"# Methode en materialen\n",
"\n",
"## Ontwerp\n",
"\n",
"Om het volume van een hoeveelheid gas bij constante druk te meten is niet zo eenvoudig. Je kunt het gas vrij eenvoudig in een ballon stoppen en dan schatten hoe de diameter van de ballon verandert als functie van de temperatuur, maar dat geeft een relatief grote fout (waarom?). We maken daarom gebruik van de wet van [Archimedes](https://nl.wikipedia.org/wiki/Wet_van_Archimedes). \n",
"\n",
"## Materialen\n",
"\n",
"- eenvoudige feestballon\n",
"- bekerglas\n",
"- tweede bekerglas om mee bij te vullen\n",
"- thermometer\n",
"- verhittingsplaat\n",
"- deksel met vulcilinder met maatstrepen (met iets kleinere diameter dan interne diameter maatbeker)\n",
"- (per 5 groepjes) een $10 \\mathrm{ml}$ maatcilinder\n",
"\n",
"## Procedure\n",
"\n",
"- Blaas de ballon op, maar niet verder dan $5 \\mathrm{cm}$ in diameter. Deze moet makkelijk in de maatbeker passen. \n",
"- Knoop de ballon goed dicht zodat er geen lucht kan ontsnappen. \n",
"- Dompel de ballon onder in de maatbeker met water met behulp van het deksel.\n",
"- Pas het waterniveau aan zodat de meniscus (de bovenkant van het water) bij een van de onderste maatstrepen van de vulcilinder van het deksel zit. \n",
"- Let op dat er luchtbellen kunnen plakken aan de ballon wat leidt tot een systematische fout. Verifieer dat je zo min mogelijk systematische fouten maakt en meet op welke maatstreep de meniscus zich bevindt.\n",
"- Verhoog stapsgewijst de temperatuur van het water (en dus de ballon). *Let op dat je de temperatuur maximaal een graad of 20 kan verhogen, want als je voorbij de vulcilinder komt met de meniscus, dan kan je de volumeverandering niet meer nauwkeurig bepalen.*\n",
"- Laat het geheel na elke temperatuurtoename een minuut 'rusten' om zo de tijd te geven om in thermisch evenwicht te komen.\n",
"- Meet na elke temperatuurtoename de temperatuur en de positie van de meniscus.\n",
"\n",
"Het verschiloppervlak tussen de binnendiameter van de maatbeker en de buitendiameter van de vulcilinder is $10.0 \\mathrm{cm}^{2}$. Je kunt die handmatig kalibreren met behulp van de kleine maatcilinder die in het lokaal aanwezig is. De maatstreepjes die op de vulcilinder zijn gekerfd zitten op een onderlinge afstand van $1.0 \\mathrm{mm}$.\n",
"\n",
"```{exercise} Analyseer de data\n",
"Plot de volumeverandering van de ballon als functie van de temperatuur. Zie je hier een lineair verband? Bepaal dan ook wat het startvolume van de ballon was door te extrapoleren naar een absolute temperatuur van $0 \\mathrm{K}$.\n",
"```\n",
"\n",
"Als je kritisch nadenkt over deze grafiek en de extrapolatie, dan kun je bezwaar maken tegen de precisie van deze proef. Het water in de maatbeker zet ook uit onder de verhoging van de temperatuur en geeft een systematische fout. Daar kun je een correctie voor uitvoeren. Voer die correctie uit als je nog genoeg tijd hebt:\n",
"\n",
"```{exercise} Verbeterde meting\n",
"- Maak de maatbeker leeg en vul deze opnieuw met water tot een van de onderste maatstrepen van de vulcilinder (dus zonder ballon). \n",
"- Verhit de maatbeker weer stapsgewijs en meet na elke stap de temperatuur en de hoogte van de meniscus.\n",
"\n",
"Kun je nu met behulp van deze tweede meting een betere afschatting geven voor het startvolume van de ballon? \n",
"```"
]
},
{
"cell_type": "markdown",
"id": "a7227939",
"metadata": {},
"source": [
"# Resultaten"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b0e44339",
"metadata": {},
"outputs": [],
"source": [
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"temps = []\n",
"hoogtes = []\n",
"\n",
"\n",
"diam_beker = 7.66 # cm\n",
"diam_deksel = 6.77 # cm\n",
"opp_water = 1/4 * np.pi * (diam_beker**2 - diam_deksel**2) #cm2\n",
"\n",
"volumes = (np.asarray(hoogtes) - hoogtes[0]) * opp_water\n",
"temps_abs = np.asarray(temps) + 273\n",
"coef = np.polyfit(temps_abs, volumes, 1)\n",
"func = np.poly1d(coef)\n",
"\n",
"plt.plot(temps_abs, volumes, 'ob')\n",
"plt.plot(temps_abs, func(temps_abs), '--r')\n",
"plt.xlabel('Temperature [K]')\n",
"plt.ylabel('Volume [ccm]')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "38389f44",
"metadata": {},
"source": [
"# Discussie en conclusie\n",
"\n",
"\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
121 changes: 121 additions & 0 deletions Content/Labs/cappucino.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "e971134c",
"metadata": {},
"source": [
"---\n",
"authors: Freek Pols\n",
"updated: December 3, 2025\n",
"---\n",
"# Cappucino\n",
"\n",
"## Introductie\n",
"Heb je al eens bedacht dat het verwarmen van melk voor een cappucino eigenlijk heel snel gaat zonder dat de melk verdunt wordt?\n",
"De melk wordt ook niet echt plaatselijk verhit door een warmte element.\n",
"In plaats daarvan wordt er stoom door de melk geblazen.\n",
"De stoom condenseert in de melk en geeft daarbij zijn latente warmte af.\n",
"Hierdoor warmt de melk snel op zonder dat er (significant veel) water aan toegevoegd wordt.\n",
"\n",
"```{warning}\n",
"Stoom is heel heet en kan voor vervelende brandplekken zorgen.\n",
"Wees dus voorzichtig bij het uitvoeren van dit practicum.\n",
"\n",
"Daarnaast, nadat de kookplaat uitgaat is er een onderdruk in de kolf.\n",
"Hang dan ook de tube uit het water wanneer je de kookplaat uitzet, anders kan de kolf imploderen.\n",
"```\n",
"\n",
"In dit practicum gaan we de verdampingswarmte van water bepalen door middel van een zelfgebouwde cappucino machine.\n",
"Het principe is als volgt: We gebruiken de opstelling weergegeven in {numref}`Figuur {number} <fig_cappucino>` waarbij we water verwarmen in een kolf met behulp van een kookplaat.\n",
"Door de warmte gaat het water koken en ontstaat er stoom.\n",
"De stoom stroomt via een tube naar een afgesloten maatbeker met water.\n",
"De stoom condenseert in het maatbeker en geeft daarbij zijn latente warmte af.\n",
"Door de temperatuurstijging van het water te meten, evenals de hoeveelheid gram water dat verdampt is, kunnen we de verdampingswarmte van water bepalen.\n",
"\n",
"```{figure} figures/verdampingswarmte_setup.png\n",
":width: 70%\n",
":label: fig_cappucino\n",
"\n",
"Een schematische weergave van de cappucino opstelling.\n",
"```\n",
"\n",
"## Theorie\n",
"\n",
"De latente verdampingswarmte van water bedraagt 2257 kJ/kg, dit is veel meer dan de specifieke warmtecapaciteit van water (4.18 kJ/kgK).\n",
"Wanneer we de waterdamp (g) door koud water leiden, gaan we er van uit dat de waterdamp condenseert en daarbij zijn latente warmte afgeeft aan het koude water.\n",
"Door te bepalen hoeveel gram water verdampt is en hoeveel de temperatuur van het koude water stijgt, kunnen we de latente warmte van verdamping bepalen:\n",
"\n",
"$$ Q_{condensatie} = m_{damp} L = m_{water} c \\Delta T $$\n",
"\n",
"met $m_{damp} = \\Delta m_{kolf}$.\n",
"\n",
"## Methoden en materialen\n",
"\n",
"### Materialen\n",
"- Warmteplaat\n",
"- Kolf met stop en tube\n",
"- Maatcilinder\n",
"- Thermometer\n",
"- Weegschaal\n",
"- Water\n",
"\n",
"\n",
"### Procedure\n",
"\n",
"- Vul de kolf met ongeveer 100 mL water: bepaal precies de massa water ($m_{w_1}$). \n",
"- Vul de maatcilinder met ongeveer 100 mL water: bepaal precies de massa water ($m_{bad}$).\n",
"- Bepaal de temperatuur van dit waterbad ($T_{bad_1}$).\n",
"- Zet de kolf op de warmteplaat en zet de warmteplaat aan - maximale stand 3, zorg ervoor dat de tube goed in het waterbad hangt.\n",
"- Wacht tot de temperatuur van het waterbad met ongeveer 20 K is gestegen.\n",
"- Stop de meting / zet de warmteplaat uit. Noteer meteen de temperatuur($T_{bad_2}$) en haal de tube uit het water! \n",
"\n",
"```{warning}\n",
"Pas op stoom is heet!\n",
"```\n",
"\n",
"- Bepaal precies de massa water in de kolf ($m_{w_2}$).\n",
"- Verwerk je resultaten hieronder om de latente warmte van verdamping van water te bepalen."
]
},
{
"cell_type": "markdown",
"id": "3fcb9409",
"metadata": {},
"source": [
"## Resultaten"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "589ef2a8",
"metadata": {},
"outputs": [],
"source": [
"m_w_1 = # kg\n",
"m_bad = # kg\n",
"T_bad_1 = # K\n",
"\n",
"\n",
"m_w_2 = # kg\n",
"T_bad_2 = # K"
]
},
{
"cell_type": "markdown",
"id": "025a86f1",
"metadata": {},
"source": [
"## Discussie en conclusie"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
4 changes: 4 additions & 0 deletions Content/Labs/cwater.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
"id": "530dbcb4",
"metadata": {},
"source": [
"--- \n",
"authors: Freek Pols\n",
"updated: december 3, 2025 \n",
"---\n",
"# Bepaling van soortelijke warmte van water\n"
]
},
Expand Down
Loading