121 lines
5.3 KiB
Markdown
121 lines
5.3 KiB
Markdown
# Auslegung Wärmerückgewinnung Milchkühlung
|
||
|
||
Kommandozeilen-Werkzeug zur Auslegung einer Wärmerückgewinnung aus der Milchkühlung: Aus der täglich zu kühlenden **Milchmenge** werden Wärmepumpe, PV-Anlage, Batterie und Natriumacetat-Latentspeicher dimensioniert – inklusive Abhollogistik, versorgbarer Haushalte und Brennstoffkosten-Vergleich.
|
||
|
||
Alle Annahmen liegen in einer `config.json`, sodass sich Varianten ohne Codeänderung nachrechnen lassen.
|
||
|
||
## Konzept
|
||
|
||
```
|
||
Milchabwärme (37→4 °C) ──► Wärmepumpe (Strom aus PV) ──► Latentspeicher (Natriumacetat, 58 °C) ──► Abholung per LKW
|
||
```
|
||
|
||
Da Natriumacetat-Trihydrat erst bei 58 °C schmilzt, die Milchabwärme aber nur bei ~37 °C anfällt, hebt eine Wärmepumpe das Temperaturniveau an. Der Speicher kann unterkühlt und damit isolierungsfrei transportiert werden.
|
||
|
||
## Voraussetzungen
|
||
|
||
- Python 3.8+
|
||
- Keine externen Abhängigkeiten (nur Standardbibliothek)
|
||
|
||
## Dateien
|
||
|
||
| Datei | Zweck |
|
||
|---|---|
|
||
| `auslegung.py` | Berechnungsprogramm |
|
||
| `config.json` | Sämtliche Annahmen (kopieren für Varianten) |
|
||
|
||
## Verwendung
|
||
|
||
```bash
|
||
# Detailreport für 1000 L Milch/Tag
|
||
python auslegung.py 1000
|
||
|
||
# Kompakte Empfehlung (gerundete Größen + vorgeschlagener Abholzyklus)
|
||
python auslegung.py 1000 --suggest-size
|
||
|
||
# Variante mit eigener Config und Ergebnis-Export als JSON
|
||
python auslegung.py 1500 --config meine_variante.json --json ergebnis.json
|
||
```
|
||
|
||
| Argument | Beschreibung |
|
||
|---|---|
|
||
| `milch_l_tag` | (Pflicht) Milchmenge pro Tag in Litern |
|
||
| `--config PFAD` | Pfad zur JSON-Konfiguration (Standard: `config.json`) |
|
||
| `--json PFAD` | Ergebnis zusätzlich als JSON schreiben |
|
||
| `--suggest-size` | Kompakte Empfehlung statt Detailreport |
|
||
|
||
## Was berechnet wird
|
||
|
||
- **Milchkühllast** (kWh/Tag) aus Menge und Temperaturhub
|
||
- **Wärmepumpe**: Kälte-, Heiz- und elektrische Leistung, Strombedarf, in den Speicher gelieferte Wärme
|
||
- **PV-Anlage**: Leistung (kWp) und Dachfläche für die Jahresbilanz des WP-Strombedarfs
|
||
- **Netzbezug**: jährlicher Zukauf-Anteil durch die Wintermonate (Monatsbilanz)
|
||
- **Batterie**: nutzbare und Nennkapazität für den Tag-/Nacht-Ausgleich
|
||
- **Latentspeicher**: Masse, Volumen, LKW-Auslastung, Energieinhalt einer Ladung
|
||
- **Versorgte Haushalte**: Warmwasser (ganzjährig) und Winterfall (Heizung + WW)
|
||
- **Brennstoffkosten**: Wert der Wärme als Ersatzkosten für Gas, Heizöl, Pellets
|
||
|
||
## Konfiguration (`config.json`)
|
||
|
||
| Abschnitt | Wichtigste Parameter |
|
||
|---|---|
|
||
| `milch` | Ein-/Austrittstemperatur, Dichte, spez. Wärme |
|
||
| `waermepumpe` | `cop`, `laufzeit_h_pro_tag` |
|
||
| `pcm` | `modus` (`latent_only` / `latent_plus_hub`), Latentwärme, Dichte, c-Werte, Lade-/Entladetemperatur |
|
||
| `abholung` | `zyklus_tage`, LKW-Nutzlast und -Volumen |
|
||
| `pv` | spez. Jahresertrag, Fläche je kWp, Monatsprofil |
|
||
| `batterie` | Direkt-PV-Stunden, nutzbarer Anteil, Reservefaktor |
|
||
| `haushalt` | Personen, Warmwasser je Person, Winter-Heizbedarf |
|
||
| `brennstoffe` | Preis (ct/kWh) und Wirkungsgrad für Gas/Öl/Pellets |
|
||
|
||
### Wichtigste Stellschrauben
|
||
|
||
- `pcm.modus` – `latent_only` (nur Phasenwechsel) oder `latent_plus_hub` (mit Überhitzung): bestimmt Energiedichte und Speichergröße.
|
||
- `abholung.zyklus_tage` – Abholrhythmus, steuert die Speichergröße direkt.
|
||
- `waermepumpe.cop` – bestimmt Strombedarf und damit PV-Größe.
|
||
- `haushalt.heizbedarf_winter_kWh_tag` – stark gebäudeabhängig (saniert ~40, Altbau ~100, 0 = nur Warmwasser).
|
||
- `brennstoffe` – Preise sind Stand Juni 2026 (DE) und jederzeit überschreibbar.
|
||
|
||
## Ausgabe
|
||
|
||
Der Detailreport schreibt einen formatierten Konsolentext mit allen Blöcken. Mit `--json` wird das vollständige Ergebnis zusätzlich als strukturiertes JSON gespeichert (alle Zwischengrößen, im Suggest-Modus zusätzlich der `vorschlag`-Block).
|
||
|
||
### Beispiel (gekürzt, 1000 L)
|
||
|
||
```
|
||
WAERMEPUMPE (COP 2.60, Laufzeit 18 h/Tag)
|
||
Strombedarf ................. 24.0 kWh/Tag
|
||
Waerme in den Speicher ...... 62.4 kWh/Tag
|
||
|
||
PV-ANLAGE
|
||
Leistung .................... 8.8 kWp
|
||
Dachflaeche ................. 44 m2
|
||
|
||
NETZBEZUG (durch Wintermonate)
|
||
Netzbezug ................... 1941 kWh/a = 22 %
|
||
|
||
VERSORGTE HAUSHALTE (2 Erw. + 2 Kinder)
|
||
-> Warmwasser ganzjaehrig ... 11.1 Haushalte
|
||
-> im Winter ................ 1.0 Haushalte
|
||
|
||
LATENTSPEICHER (Natriumacetat-Trihydrat, Modus: latent_plus_hub)
|
||
Energieinhalt voller LKW .... 2185 kWh
|
||
|
||
WERT DER WAERME BEIM KAEUFER
|
||
Gas | 11.6 ct/kWh | 253 EUR/LKW | 2635 EUR/Jahr
|
||
Pellets | 8.0 ct/kWh | 174 EUR/LKW | 1810 EUR/Jahr
|
||
```
|
||
|
||
## Modell-Annahmen & Vereinfachungen
|
||
|
||
- Milch wird thermisch als Wasser gerechnet.
|
||
- Der zurückkehrende Speicherbehälter wird als „warm" (nahe Schmelzpunkt) angenommen; sonst müsste die WP ihn zusätzlich aufheizen.
|
||
- Der Netzbezug ist eine **Monatsbilanz** und setzt einen Tag-/Nacht-Ausgleich per Batterie voraus. Ohne Batterie liegt der reale Zukauf höher (~50–60 %).
|
||
- `--suggest-size` optimiert den Abholzyklus auf **Transportauslastung**, nicht auf die Verweildauer der Wärme im Speicher.
|
||
- Die Brennstoffkosten sind der **Brutto-Substitutionswert** der Wärme, kein erzielbarer Verkaufspreis (Transport, Strom, Abschreibung noch nicht abgezogen).
|
||
|
||
## Mögliche Erweiterungen
|
||
|
||
- Anbieterseite: Transportkosten, WP-Stromkosten und Speicher-Abschreibung → echte Marge bzw. Mindestverkaufspreis je kWh.
|
||
- Monatlich aufgelöste PV-Deckung als Diagramm.
|