251 lines
10 KiB
Plaintext
251 lines
10 KiB
Plaintext
================================================================================
|
||
HEIZUNGSSTEUERUNG – VERKABELUNG & AUFBAU TODO
|
||
================================================================================
|
||
|
||
HARDWARE-ÜBERSICHT
|
||
------------------
|
||
- Arduino Mega 2560
|
||
- Raspberry Pi (beliebiges Modell mit USB)
|
||
- 8-fach Relaismodul (ActiveLow, 5 V Steuerung)
|
||
- 5x DS18B20 Temperatursensor (OneWire, wasserfest)
|
||
- 1x MAX6675 Thermoelement-Modul (Abgastemperatur, Typ K)
|
||
- 1x RTC DS3231 (Echtzeituhr, I2C)
|
||
- 1x LCD Display 16x2 (HD44780, parallel)
|
||
- 1x OLED Display 128x64 (SSD1306, I2C) ← aktuell im Code vorhanden aber noch nicht genutzt
|
||
- 1x 4,7 kΩ Widerstand (Pullup für OneWire-Bus)
|
||
- Stromversorgung 5 V / mind. 2 A für Arduino + Relais
|
||
|
||
================================================================================
|
||
1. STROMVERSORGUNG
|
||
================================================================================
|
||
|
||
[ ] Arduino Mega über USB (vom Raspi) ODER extern 7-12V an Barrel-Jack
|
||
WICHTIG: Wenn Relaismodul separat versorgt wird → GND verbinden!
|
||
|
||
[ ] Relaismodul:
|
||
- VCC → 5 V Arduino (oder externe 5-V-Quelle bei großem Modul)
|
||
- GND → GND Arduino
|
||
- Eingangsseite (IN1-IN8) → Arduino-Pins direkt (5V-kompatibel)
|
||
|
||
[ ] Raspberry Pi separat mit offiziellen 5 V Netzteil versorgen
|
||
(NICHT über Arduino USB-Port – zu schwach)
|
||
|
||
================================================================================
|
||
2. RELAIS-MODUL → ARDUINO MEGA
|
||
================================================================================
|
||
|
||
Relais-Modul Arduino Mega Funktion
|
||
------------------------------------------------------------
|
||
IN1 → Pin 34 Mischer MINUS (kälter drehen)
|
||
IN2 → Pin 32 Mischer PLUS (wärmer drehen)
|
||
IN3 → Pin 30 Heizkreispumpe (Mischer-Pumpe)
|
||
IN4 → Pin 28 (reserviert / ggf. defekt – prüfen!)
|
||
IN5 → Pin 26 Kesselpumpe / Pufferbefüllung
|
||
IN6 → Pin 24 (frei)
|
||
IN7 → Pin 22 (frei)
|
||
IN8 → Pin 36 (frei)
|
||
VCC → 5V
|
||
GND → GND
|
||
|
||
ACHTUNG: Relais sind ActiveLow → HIGH = AUS, LOW = EIN
|
||
Arduino setzt beim Start alle Relais auf HIGH (sicher AUS)
|
||
|
||
[ ] Mischer MINUS (IN1/Pin 34) an Mischer-Motor Klemme "ZU" / "–"
|
||
[ ] Mischer PLUS (IN2/Pin 32) an Mischer-Motor Klemme "AUF" / "+"
|
||
[ ] Heizkreispumpe (IN3/Pin 30) an Pumpe (230 V Schaltung über Relais!)
|
||
[ ] Kesselpumpe (IN5/Pin 26) an Pumpenstromkreis
|
||
|
||
!! 230-V-SICHERHEIT !!
|
||
Netzspannung NUR über die Lastseite des Relais führen (COM + NO oder NC).
|
||
Steuerseite (IN-Pins, VCC, GND) IMMER galvanisch getrennt halten.
|
||
Sicherung und FI-Schutzschalter vorschalten!
|
||
|
||
================================================================================
|
||
3. DS18B20 TEMPERATURSENSOREN (OneWire-Bus)
|
||
================================================================================
|
||
|
||
Alle 5 Sensoren hängen am selben Bus (Pin 50, Arduino Mega).
|
||
|
||
Verdrahtung je Sensor (3-Draht, gelbes Kabel = Daten):
|
||
Rotes Kabel → 5 V
|
||
Schwarzes Kabel → GND
|
||
Gelbes/weißes Kabel → OneWire-Bus (Pin 50)
|
||
|
||
[ ] 4,7 kΩ Pullup-Widerstand zwischen Pin 50 und 5 V einlöten
|
||
(einmal für den ganzen Bus, nicht pro Sensor!)
|
||
|
||
Sensor-Zuordnung (Adressen bereits im Code hinterlegt – bitte prüfen!):
|
||
[ ] wohnung – Raumtemperatur Wohnung
|
||
[ ] Kunten – Pufferspeicher UNTEN (Kessel unten)
|
||
[ ] Koben – Pufferspeicher OBEN (Kessel oben)
|
||
[ ] Vorlauf – Vorlaufrohr Heizkreis (außen am Rohr angebracht!)
|
||
[ ] Aussen – Außentemperatur (wetterfest montieren, beschatten!)
|
||
|
||
HINWEIS Vorlauf-Sensor:
|
||
Der Sensor sitzt außen am Vorlaufrohr → er reagiert mit 2-5 Minuten
|
||
Verzögerung auf Wassertemperaturänderungen. Das ist im Sketch durch
|
||
die Zonalregelung und Anlaufphase berücksichtigt.
|
||
Besser wäre ein Tauchhülsen-Sensor im Rohr – falls nachrüsten möglich.
|
||
|
||
Sensor-Adressen auslesen (falls Sensoren getauscht wurden):
|
||
→ OneWire-Scanner Sketch hochladen, Adressen aus Serial Monitor kopieren
|
||
→ Neue Adressen in heizung.ino eintragen (DeviceAddress Zeilen)
|
||
|
||
================================================================================
|
||
4. MAX6675 – ABGASTEMPERATUR (Thermoelement Typ K)
|
||
================================================================================
|
||
|
||
MAX6675 Modul Arduino Mega
|
||
------------------------------------
|
||
VCC → 5 V
|
||
GND → GND
|
||
SO (MISO) → Pin 8
|
||
CS → Pin 9
|
||
SCK → Pin 10
|
||
|
||
[ ] Thermoelement Typ K an MAX6675-Klemmen anschließen (Polarität beachten!)
|
||
[ ] Thermoelement im Abgaskanal / Rauchrohr befestigen (max. ~1200°C Typ K)
|
||
[ ] Kabel hitzebeständig verlegen (mind. 5 cm Abstand zu heißen Flächen)
|
||
|
||
================================================================================
|
||
5. RTC DS3231 – ECHTZEITUHR (I2C)
|
||
================================================================================
|
||
|
||
DS3231 Modul Arduino Mega
|
||
------------------------------------
|
||
VCC → 3,3 V oder 5 V (DS3231 ist beides kompatibel)
|
||
GND → GND
|
||
SDA → Pin 20 (SDA, Mega)
|
||
SCL → Pin 21 (SCL, Mega)
|
||
|
||
[ ] Knopfzelle (CR2032) einlegen damit Uhrzeit bei Stromausfall erhalten bleibt
|
||
[ ] Uhrzeit einmalig stellen: Zeile in setup() einkommentieren:
|
||
rtc.adjust(DateTime(2026, 3, 18, 12, 0, 0));
|
||
→ nach Upload wieder auskommentieren und neu flashen!
|
||
|
||
================================================================================
|
||
6. LCD 16x2 (HD44780, parallel)
|
||
================================================================================
|
||
|
||
LCD Pin Arduino Mega Hinweis
|
||
--------------------------------------------
|
||
VSS (1) → GND
|
||
VDD (2) → 5 V
|
||
V0 (3) → Schleifer 10kΩ Poti (Kontrast)
|
||
RS (4) → Pin 12
|
||
RW (5) → GND (immer schreiben)
|
||
EN (6) → Pin 11
|
||
D4 (11) → Pin 5
|
||
D5 (12) → Pin 4
|
||
D6 (13) → Pin 3
|
||
D7 (14) → Pin 2
|
||
A (15) → 5 V über 220 Ω (Hintergrundbeleuchtung +)
|
||
K (16) → GND (Hintergrundbeleuchtung –)
|
||
|
||
[ ] 10 kΩ Poti für Kontrast einbauen (V0)
|
||
[ ] 220 Ω Widerstand für Backlight
|
||
|
||
================================================================================
|
||
7. OLED 128x64 SSD1306 (I2C) – IM CODE VORBEREITET, NOCH NICHT GENUTZT
|
||
================================================================================
|
||
|
||
OLED Pin Arduino Mega
|
||
------------------------------------
|
||
VCC → 3,3 V
|
||
GND → GND
|
||
SDA → Pin 20 (gemeinsam mit DS3231)
|
||
SCL → Pin 21 (gemeinsam mit DS3231)
|
||
|
||
[ ] I2C-Adresse prüfen (Standard: 0x3C oder 0x3D)
|
||
Im Code: Adafruit_SSD1306 display(...) – ggf. Adresse im Konstruktor angeben
|
||
|
||
================================================================================
|
||
8. RASPBERRY PI ↔ ARDUINO VERBINDUNG
|
||
================================================================================
|
||
|
||
[ ] Arduino Mega per USB-Kabel an Raspberry Pi anschließen
|
||
(USB-B auf Arduino-Seite, USB-A auf Raspi-Seite)
|
||
|
||
[ ] Serial-Port auf Raspi prüfen:
|
||
ls /dev/ttyUSB* /dev/ttyACM*
|
||
→ typisch /dev/ttyUSB0 oder /dev/ttyACM0
|
||
|
||
[ ] Falls nötig: Benutzer zur dialout-Gruppe hinzufügen
|
||
sudo usermod -a -G dialout pi
|
||
→ danach einmal neu anmelden!
|
||
|
||
[ ] Python-Pakete installieren:
|
||
cd /pfad/zum/projekt/raspi
|
||
pip install -r requirements.txt
|
||
|
||
[ ] Serial-Port in server.py anpassen (Zeile SERIAL_PORT):
|
||
SERIAL_PORT = "/dev/ttyACM0" ← falls ttyUSB0 nicht gefunden wird
|
||
|
||
[ ] Webserver starten:
|
||
python3 server.py
|
||
→ Weboberfläche erreichbar unter http://<raspi-IP>:5000
|
||
|
||
[ ] Optional: Autostart beim Booten einrichten
|
||
sudo nano /etc/systemd/system/heizung.service
|
||
|
||
[Unit]
|
||
Description=Heizungssteuerung Webserver
|
||
After=network.target
|
||
|
||
[Service]
|
||
ExecStart=/usr/bin/python3 /home/pi/heizung/raspi/server.py
|
||
WorkingDirectory=/home/pi/heizung/raspi
|
||
Restart=always
|
||
User=pi
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
|
||
sudo systemctl enable heizung
|
||
sudo systemctl start heizung
|
||
|
||
================================================================================
|
||
9. INBETRIEBNAHME – CHECKLISTE
|
||
================================================================================
|
||
|
||
[ ] Vor erstem Start: Sketch hochladen, Serial Monitor öffnen (9600 Baud)
|
||
→ JSON-Ausgabe sichtbar? Dann Arduino-Seite OK.
|
||
|
||
[ ] Relais-Test: Jedes Relais kurz manuell schalten (LOW), prüfen ob
|
||
Summer/LED auf Modul reagiert, BEVOR 230V angeschlossen wird!
|
||
|
||
[ ] Mischer-Test:
|
||
- Mischer manuell auf Mitte stellen
|
||
- Relais1 (Pin 34) kurz LOW → dreht in Kälter-Richtung?
|
||
- Relais2 (Pin 32) kurz LOW → dreht in Wärmer-Richtung?
|
||
- Bei verkehrter Drehrichtung: Motoranschlüsse tauschen ODER
|
||
relais1/relais2 im Sketch tauschen
|
||
|
||
[ ] Sensor-Test: Serial Monitor → alle 5 DS18B20 zeigen plausible Werte?
|
||
Typische Fehler: -127°C (nicht angeschlossen), 85°C (Initialisierungswert)
|
||
|
||
[ ] time_adjust kalibrieren:
|
||
Mischer von ganz-kalt bis ganz-warm messen → Sekunden in time_adjust eintragen
|
||
(Standard: 140 Sekunden – je nach Mischer-Motor variiert das!)
|
||
|
||
[ ] Webserver starten, Webseite öffnen → alle Werte sichtbar?
|
||
|
||
[ ] Parameter über Webseite anpassen und prüfen ob Arduino bestätigt
|
||
(JSON-Antwort: {"ok":true,...})
|
||
|
||
================================================================================
|
||
BEKANNTE EINSCHRÄNKUNGEN / MÖGLICHE VERBESSERUNGEN
|
||
================================================================================
|
||
|
||
- Vorlauf-Sensor außen am Rohr: Tauchhülsen-Sensor direkt im Wasser wäre
|
||
deutlich reaktionsschneller und genauer
|
||
|
||
- Keine Datenpersistenz auf Arduino: Einstellungen (neigung, rtsoll usw.)
|
||
gehen bei Neustart verloren → Raspi muss nach Arduino-Neustart Werte
|
||
erneut senden (oder im Sketch als Default-Werte hinterlegen)
|
||
|
||
- Relais4 (Pin 28): laut ursprünglichem Code "wahrscheinlich defekt" –
|
||
vor Verwendung prüfen!
|
||
|
||
================================================================================
|