================================================================================ 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://: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! ================================================================================