Based on Pflichtenheft v2.2, documents the full system design including daemon, API, frontend, and infrastructure with agreed deviations (Axum 0.8, SQLx 0.8, Vite 6, Tailwind 4). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
178 lines
4.9 KiB
Markdown
178 lines
4.9 KiB
Markdown
# Konfiguration der Füllstandsmessung
|
||
|
||
## Übersicht
|
||
|
||
Der HC-SR04 Sensor wird **oberhalb des Tanks** montiert und misst die Distanz zur Flüssigkeitsoberfläche.
|
||
|
||
## Konfigurationsvariablen
|
||
|
||
In [src/main.cpp](src/main.cpp) (Zeile 14-16):
|
||
|
||
```cpp
|
||
#define TANK_HEIGHT 180.0 // Tank-Höhe in cm (innen)
|
||
#define SENSOR_MOUNT_OFFSET 20.0 // Montageabstand: Sensor über Tank-Oberkante in cm
|
||
#define SENSOR_MIN_DISTANCE 2.0 // HC-SR04 Mindestabstand (technische Grenze)
|
||
```
|
||
|
||
## Parameter-Erklärung
|
||
|
||
### 1. TANK_HEIGHT (Tank-Höhe)
|
||
**Die innere Höhe des Tanks von Boden bis Oberkante.**
|
||
|
||
- **Beispiel**: Tank ist 180 cm hoch → `#define TANK_HEIGHT 180.0`
|
||
- **Wichtig**: Nur die innere Höhe, ohne Montageabstand!
|
||
|
||
### 2. SENSOR_MOUNT_OFFSET (Montageabstand)
|
||
**Der Abstand vom Sensor bis zur Tank-Oberkante.**
|
||
|
||
- **Beispiel**: Sensor ist 20 cm über dem Tank montiert → `#define SENSOR_MOUNT_OFFSET 20.0`
|
||
- **Warum nötig?**: Sensor kann nicht direkt am Tank befestigt werden, braucht Montageabstand
|
||
|
||
### 3. SENSOR_MIN_DISTANCE (Mindestabstand)
|
||
**Technische Grenze des HC-SR04 Sensors (2 cm).**
|
||
|
||
- **Standard**: 2.0 cm (nicht ändern!)
|
||
- **Zweck**: Warnung wenn Flüssigkeit zu nah am Sensor ist
|
||
|
||
## Aufbau-Beispiel
|
||
|
||
```
|
||
↑
|
||
|
|
||
[ HC-SR04 ] | ← Sensor montiert an Decke/Halterung
|
||
|
|
||
20 cm | ← SENSOR_MOUNT_OFFSET
|
||
|
|
||
╔═══════════════╗ ← Tank-Oberkante
|
||
║ ║
|
||
║ Flüssigkeit ║
|
||
║ ↕ ║ ← Füllstand (variabel)
|
||
║ ║
|
||
║ 180 cm ║ ← TANK_HEIGHT
|
||
║ ║
|
||
║ ║
|
||
╚═══════════════╝ ← Tank-Boden
|
||
```
|
||
|
||
## Berechnung
|
||
|
||
### Leerer Tank:
|
||
```
|
||
Gemessene Distanz = SENSOR_MOUNT_OFFSET + TANK_HEIGHT
|
||
= 20 cm + 180 cm = 200 cm
|
||
Füllhöhe = 0 cm
|
||
Füllstand = 0%
|
||
```
|
||
|
||
### Voller Tank:
|
||
```
|
||
Gemessene Distanz = SENSOR_MOUNT_OFFSET
|
||
= 20 cm
|
||
Füllhöhe = 180 cm (= TANK_HEIGHT)
|
||
Füllstand = 100%
|
||
```
|
||
|
||
### Halb voller Tank:
|
||
```
|
||
Gemessene Distanz = 110 cm
|
||
Füllhöhe = 200 cm - 110 cm = 90 cm
|
||
Füllstand = (90 / 180) × 100 = 50%
|
||
```
|
||
|
||
## Anpassung an Ihre Installation
|
||
|
||
### Schritt 1: Tank-Höhe messen
|
||
Messen Sie die **innere Höhe** Ihres Tanks von Boden bis Oberkante.
|
||
|
||
**Beispiel**: 180 cm → `#define TANK_HEIGHT 180.0`
|
||
|
||
### Schritt 2: Montageabstand messen
|
||
Messen Sie den Abstand vom Sensor bis zur Tank-Oberkante.
|
||
|
||
**Beispiel**: Sensor 20 cm über Tank → `#define SENSOR_MOUNT_OFFSET 20.0`
|
||
|
||
### Schritt 3: Code hochladen und testen
|
||
|
||
1. Bei **leerem Tank**:
|
||
- Display sollte **0%** anzeigen
|
||
- Serial Monitor zeigt Füllhöhe: 0 cm
|
||
|
||
2. Bei **vollem Tank**:
|
||
- Display sollte **100%** anzeigen
|
||
- Serial Monitor zeigt Füllhöhe: 180 cm (= TANK_HEIGHT)
|
||
|
||
3. Falls nicht korrekt:
|
||
- Überprüfen Sie TANK_HEIGHT und SENSOR_MOUNT_OFFSET
|
||
- Passen Sie die Werte an
|
||
|
||
## Fehlerdiagnose
|
||
|
||
### Problem: Füllstand zeigt negative Werte oder 0% bei halbvollem Tank
|
||
|
||
**Ursache**: SENSOR_MOUNT_OFFSET oder TANK_HEIGHT falsch konfiguriert
|
||
|
||
**Lösung**:
|
||
1. Messen Sie die tatsächliche Distanz bei leerem Tank
|
||
2. Berechnen Sie: `SENSOR_MOUNT_OFFSET + TANK_HEIGHT = gemessene Distanz`
|
||
3. Passen Sie die Werte entsprechend an
|
||
|
||
### Problem: Füllstand zeigt über 100%
|
||
|
||
**Ursache**: Tank ist voller als erwartet oder TANK_HEIGHT zu klein
|
||
|
||
**Lösung**:
|
||
1. Überprüfen Sie TANK_HEIGHT
|
||
2. Code begrenzt automatisch auf max. 100%
|
||
|
||
### Problem: "WARNUNG: Flüssigkeit zu nah am Sensor!"
|
||
|
||
**Ursache**: Flüssigkeit ist näher als SENSOR_MOUNT_OFFSET + SENSOR_MIN_DISTANCE
|
||
|
||
**Lösung**:
|
||
- Normal bei sehr vollem Tank (>95%)
|
||
- Sensor evtl. höher montieren wenn Warnung bei 100% auftritt
|
||
|
||
## Beispiel-Konfigurationen
|
||
|
||
### Kleiner Tank (100 cm, Sensor 10 cm darüber)
|
||
```cpp
|
||
#define TANK_HEIGHT 100.0
|
||
#define SENSOR_MOUNT_OFFSET 10.0
|
||
```
|
||
|
||
### Mittelgroßer Tank (180 cm, Sensor 20 cm darüber)
|
||
```cpp
|
||
#define TANK_HEIGHT 180.0
|
||
#define SENSOR_MOUNT_OFFSET 20.0
|
||
```
|
||
|
||
### Großer Tank (300 cm, Sensor 30 cm darüber)
|
||
```cpp
|
||
#define TANK_HEIGHT 300.0
|
||
#define SENSOR_MOUNT_OFFSET 30.0
|
||
```
|
||
|
||
## Kalibrierung
|
||
|
||
### Methode 1: Bei leerem Tank
|
||
1. Entleeren Sie den Tank komplett
|
||
2. Laden Sie den Code hoch und notieren Sie die gemessene Distanz
|
||
3. Berechnen Sie: `TANK_HEIGHT = gemessene Distanz - SENSOR_MOUNT_OFFSET`
|
||
|
||
### Methode 2: Bei vollem Tank
|
||
1. Füllen Sie den Tank komplett (bis Oberkante)
|
||
2. Laden Sie den Code hoch und notieren Sie die gemessene Distanz
|
||
3. Diese Distanz = SENSOR_MOUNT_OFFSET
|
||
|
||
### Methode 3: Mit Maßband
|
||
1. Messen Sie TANK_HEIGHT mit Maßband (innere Höhe)
|
||
2. Messen Sie SENSOR_MOUNT_OFFSET mit Maßband (Sensor bis Tank-Oberkante)
|
||
3. Tragen Sie beide Werte ein
|
||
|
||
## Genauigkeit
|
||
|
||
- **HC-SR04 Genauigkeit**: ±0.3 cm
|
||
- **Messbereich**: 2 cm - 400 cm
|
||
- **Empfohlener Tank-Bereich**: 50 cm - 300 cm
|
||
- **Messintervall**: 30 Sekunden (konfigurierbar via `TX_INTERVAL`)
|